From ebb78622a746d68b085b7a66b1727667caab96ff Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Tue, 30 Jan 2024 13:32:31 +0000 Subject: [PATCH] Rebuild pages at e92b144f32f7c67ee8d8a51287cfbf4b042c2fae --- 0liverkong_ip_master/authorship.json | 2 +- 0liverkong_ip_master/commits.json | 2 +- Anant1902_ip_master/authorship.json | 2 +- Anant1902_ip_master/commits.json | 2 +- AndrewOng2066_ip_master/authorship.json | 2 +- AndrewOng2066_ip_master/commits.json | 2 +- Austintjh19_ip_master/authorship.json | 2 +- Austintjh19_ip_master/commits.json | 2 +- Cedricaca_ip_master/authorship.json | 2 +- Cedricaca_ip_master/commits.json | 2 +- ChrysanthemumT_ip_master/commits.json | 2 +- ChuaZiLong_ip_master/authorship.json | 2 +- ChuaZiLong_ip_master/commits.json | 2 +- Derekljh_ip_master/authorship.json | 2 +- Derekljh_ip_master/commits.json | 2 +- Dethada_ip_master/authorship.json | 2 +- Dethada_ip_master/commits.json | 2 +- DingBao-sys_ip_master/authorship.json | 2 +- DingBao-sys_ip_master/commits.json | 2 +- HongRay_ip_master/authorship.json | 2 +- HongRay_ip_master/commits.json | 2 +- HusseinSafwan02_ip_master/authorship.json | 2 +- HusseinSafwan02_ip_master/commits.json | 2 +- Jajared_ip_master/authorship.json | 2 +- Jajared_ip_master/commits.json | 2 +- Jawad280_ip_master/authorship.json | 2 +- Jawad280_ip_master/commits.json | 2 +- Jerome-j_ip_master/authorship.json | 2 +- Jerome-j_ip_master/commits.json | 2 +- JiaXinEu_ip_master/authorship.json | 2 +- JiaXinEu_ip_master/commits.json | 2 +- LifHoshi_ip_master/authorship.json | 2 +- LifHoshi_ip_master/commits.json | 2 +- Lin-Shuang-Shuang_ip_master/authorship.json | 2 +- Lin-Shuang-Shuang_ip_master/commits.json | 2 +- NatLeong_ip_master/authorship.json | 2 +- NatLeong_ip_master/commits.json | 2 +- Ragnapop_ip_master/authorship.json | 2 +- Ragnapop_ip_master/commits.json | 2 +- ReflectiveObsidian_ip_master/authorship.json | 2 +- ReflectiveObsidian_ip_master/commits.json | 2 +- ReganChoy_ip_master/authorship.json | 2 +- ReganChoy_ip_master/commits.json | 2 +- Rikko1204_ip_master/authorship.json | 2 +- Rikko1204_ip_master/commits.json | 2 +- STELLA-LYE_ip_master/authorship.json | 2 +- STELLA-LYE_ip_master/commits.json | 2 +- SherwynNg_ip_master/authorship.json | 2 +- SherwynNg_ip_master/commits.json | 2 +- SimHanKiong_ip_master/authorship.json | 2 +- SimHanKiong_ip_master/commits.json | 2 +- Yskie_ip_master/commits.json | 2 +- Zack-Tay_ip_master/authorship.json | 2 +- Zack-Tay_ip_master/commits.json | 2 +- appleraincoat_ip_master/authorship.json | 2 +- appleraincoat_ip_master/commits.json | 2 +- archive.zip | Bin 2945756 -> 3086782 bytes aureliony_ip_master/authorship.json | 2 +- aureliony_ip_master/commits.json | 2 +- bachletuankhai_ip_master/authorship.json | 2 +- bachletuankhai_ip_master/commits.json | 2 +- bertrandong_ip_master/commits.json | 2 +- billyhoce_ip_master/authorship.json | 2 +- billyhoce_ip_master/commits.json | 2 +- bryanyee33_ip_master/commits.json | 2 +- chaaaaun_ip_master/authorship.json | 2 +- chaaaaun_ip_master/commits.json | 2 +- cheahTJ_ip_master/authorship.json | 2 +- cheahTJ_ip_master/commits.json | 2 +- chonghaoen_ip_master/authorship.json | 2 +- chonghaoen_ip_master/commits.json | 2 +- cyqjoseph_ip_master/authorship.json | 2 +- cyqjoseph_ip_master/commits.json | 2 +- danielleloh_ip_master/authorship.json | 2 +- danielleloh_ip_master/commits.json | 2 +- darkvoid32_ip_master/authorship.json | 2 +- darkvoid32_ip_master/commits.json | 2 +- darryl-chan_ip_master/authorship.json | 2 +- darryl-chan_ip_master/commits.json | 2 +- dillontkh_ip_master/authorship.json | 2 +- dillontkh_ip_master/commits.json | 2 +- doyelee0313_ip_master/authorship.json | 2 +- doyelee0313_ip_master/commits.json | 2 +- eunrcn_ip_master/authorship.json | 2 +- eunrcn_ip_master/commits.json | 2 +- fy17ohhh_ip_master/authorship.json | 2 +- fy17ohhh_ip_master/commits.json | 2 +- guohuang88_ip_master/commits.json | 2 +- hiivan_ip_master/authorship.json | 2 +- hiivan_ip_master/commits.json | 2 +- hjuntan_ip_master/authorship.json | 2 +- hjuntan_ip_master/commits.json | 2 +- howen02_ip_master/authorship.json | 2 +- howen02_ip_master/commits.json | 2 +- iamtr_ip_master/authorship.json | 2 +- iamtr_ip_master/commits.json | 2 +- irwynliong_ip_master/authorship.json | 2 +- irwynliong_ip_master/commits.json | 2 +- jamessinmaojun_ip_master/authorship.json | 2 +- jamessinmaojun_ip_master/commits.json | 2 +- jimseah-0116_ip_master/authorship.json | 2 +- jimseah-0116_ip_master/commits.json | 2 +- jmsandiegoo_ip_master/authorship.json | 2 +- jmsandiegoo_ip_master/commits.json | 2 +- jskimdev_ip_master/authorship.json | 2 +- jskimdev_ip_master/commits.json | 2 +- julia-cp_ip_master/authorship.json | 2 +- julia-cp_ip_master/commits.json | 2 +- kervyntan_ip_master/authorship.json | 2 +- kervyntan_ip_master/commits.json | 2 +- kokerinks_ip_master/authorship.json | 2 +- kokerinks_ip_master/commits.json | 2 +- lokidoki102_ip_master/authorship.json | 2 +- lokidoki102_ip_master/commits.json | 2 +- marcus-ny_ip_master/authorship.json | 2 +- marcus-ny_ip_master/commits.json | 2 +- matthewken19_ip_master/authorship.json | 2 +- matthewken19_ip_master/commits.json | 2 +- modembcc_ip_master/authorship.json | 2 +- modembcc_ip_master/commits.json | 2 +- nichee_ip_master/authorship.json | 2 +- nichee_ip_master/commits.json | 2 +- nyankoclaws_ip_master/authorship.json | 2 +- nyankoclaws_ip_master/commits.json | 2 +- radeon2525_ip_master/authorship.json | 2 +- radeon2525_ip_master/commits.json | 2 +- redcolorbicycle_ip_master/authorship.json | 2 +- redcolorbicycle_ip_master/commits.json | 2 +- reposense-logs/reposense.log.0 | 10484 ++++++++--------- rickkoh_ip_master/authorship.json | 2 +- rickkoh_ip_master/commits.json | 2 +- sethteo_ip_master/authorship.json | 2 +- sethteo_ip_master/commits.json | 2 +- shawnnlimm_ip_master/authorship.json | 2 +- shawnnlimm_ip_master/commits.json | 2 +- shayaansultan_ip_master/authorship.json | 2 +- shayaansultan_ip_master/commits.json | 2 +- summary.json | 2 +- teojunda_ip_master/authorship.json | 2 +- teojunda_ip_master/commits.json | 2 +- tituschewxj_ip_master/authorship.json | 2 +- tituschewxj_ip_master/commits.json | 2 +- tohlh_ip_master/authorship.json | 2 +- tohlh_ip_master/commits.json | 2 +- vnnamng_ip_master/authorship.json | 2 +- vnnamng_ip_master/commits.json | 2 +- wang-xinrong_ip_master/authorship.json | 2 +- wang-xinrong_ip_master/commits.json | 2 +- yashma-sonara_ip_master/authorship.json | 2 +- yashma-sonara_ip_master/commits.json | 2 +- yespiggy_ip_master/authorship.json | 2 +- yespiggy_ip_master/commits.json | 2 +- yiwern5_ip_master/authorship.json | 2 +- yiwern5_ip_master/commits.json | 2 +- yongkotaro_ip_master/commits.json | 2 +- yorklim_ip_master/authorship.json | 2 +- yorklim_ip_master/commits.json | 2 +- zhekaiii_ip_master/authorship.json | 2 +- zhekaiii_ip_master/commits.json | 2 +- zhenghuil_ip_master/authorship.json | 1 + zhenghuil_ip_master/commits.json | 1 + ziiqii_ip_master/authorship.json | 2 +- ziiqii_ip_master/commits.json | 2 +- ziyang27_ip_master/authorship.json | 2 +- ziyang27_ip_master/commits.json | 2 +- ziyi22_ip_master/authorship.json | 2 +- ziyi22_ip_master/commits.json | 2 +- 167 files changed, 5406 insertions(+), 5406 deletions(-) create mode 100644 zhenghuil_ip_master/authorship.json create mode 100644 zhenghuil_ip_master/commits.json diff --git a/0liverkong_ip_master/authorship.json b/0liverkong_ip_master/authorship.json index 9669a131..1966338d 100644 --- a/0liverkong_ip_master/authorship.json +++ b/0liverkong_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"0liverkong"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"0liverkong"},"content":" private String doBy;","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"0liverkong"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"0liverkong"},"content":" Deadline(String name, String doBy) {","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"0liverkong"},"content":" super(name);","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"0liverkong"},"content":" this.doBy \u003d doBy;","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"0liverkong"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"0liverkong"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"0liverkong"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"0liverkong"},"content":" return String.format(\"[D]%s (by: %s)\", super.toString(), this.doBy);","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":13,"author":{"gitId":"0liverkong"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"0liverkong":13}},{"path":"src/main/java/Dook.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"0liverkong"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"0liverkong"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"0liverkong"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"0liverkong"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"0liverkong"},"content":"public class Dook {","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"0liverkong"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"0liverkong"},"content":" private static final ArrayList\u003cString\u003e TASK_TYPES \u003d new ArrayList\u003cString\u003e(Arrays.asList(\"todo\", \"deadline\", \"event\"));","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"0liverkong"},"content":" private static final String LINE_SEPARATOR \u003d \"____________________________________________________________\";","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"0liverkong"},"content":" private TaskList tasks;","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"0liverkong"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"0liverkong"},"content":" enum Command {","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"0liverkong"},"content":" BYE,","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"0liverkong"},"content":" LIST,","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"0liverkong"},"content":" ADD,","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"0liverkong"},"content":" MARK,","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"0liverkong"},"content":" UNMARK,","lastModifiedDate":"2024-01-23"},{"lineNumber":17,"author":{"gitId":"0liverkong"},"content":" DELETE,","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"0liverkong"},"content":" OTHER","lastModifiedDate":"2024-01-23"},{"lineNumber":19,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":20,"author":{"gitId":"0liverkong"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":21,"author":{"gitId":"0liverkong"},"content":" Dook() {","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"0liverkong"},"content":" this.tasks \u003d new TaskList();","lastModifiedDate":"2024-01-23"},{"lineNumber":23,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":24,"author":{"gitId":"0liverkong"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":25,"author":{"gitId":"0liverkong"},"content":" private static Command getCommand(String input) {","lastModifiedDate":"2024-01-23"},{"lineNumber":26,"author":{"gitId":"0liverkong"},"content":" String firstWord;","lastModifiedDate":"2024-01-23"},{"lineNumber":27,"author":{"gitId":"0liverkong"},"content":" firstWord \u003d input.split(\" \", 2)[0];","lastModifiedDate":"2024-01-23"},{"lineNumber":28,"author":{"gitId":"0liverkong"},"content":" if (firstWord.equals(\"bye\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":29,"author":{"gitId":"0liverkong"},"content":" return Command.BYE;","lastModifiedDate":"2024-01-23"},{"lineNumber":30,"author":{"gitId":"0liverkong"},"content":" } else if (firstWord.equals(\"list\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":31,"author":{"gitId":"0liverkong"},"content":" return Command.LIST;","lastModifiedDate":"2024-01-23"},{"lineNumber":32,"author":{"gitId":"0liverkong"},"content":" } else if (Dook.TASK_TYPES.contains(firstWord)){","lastModifiedDate":"2024-01-24"},{"lineNumber":33,"author":{"gitId":"0liverkong"},"content":" return Command.ADD;","lastModifiedDate":"2024-01-23"},{"lineNumber":34,"author":{"gitId":"0liverkong"},"content":" } else if (firstWord.equals(\"mark\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":35,"author":{"gitId":"0liverkong"},"content":" return Command.MARK;","lastModifiedDate":"2024-01-23"},{"lineNumber":36,"author":{"gitId":"0liverkong"},"content":" } else if (firstWord.equals(\"unmark\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":37,"author":{"gitId":"0liverkong"},"content":" return Command.UNMARK;","lastModifiedDate":"2024-01-23"},{"lineNumber":38,"author":{"gitId":"0liverkong"},"content":" } else if (firstWord.equals(\"delete\")){","lastModifiedDate":"2024-01-24"},{"lineNumber":39,"author":{"gitId":"0liverkong"},"content":" return Command.DELETE;","lastModifiedDate":"2024-01-24"},{"lineNumber":40,"author":{"gitId":"0liverkong"},"content":" } else {","lastModifiedDate":"2024-01-23"},{"lineNumber":41,"author":{"gitId":"0liverkong"},"content":" return Command.OTHER;","lastModifiedDate":"2024-01-23"},{"lineNumber":42,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":43,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":44,"author":{"gitId":"0liverkong"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":45,"author":{"gitId":"0liverkong"},"content":" private static Task getTask(String input) throws DookException {","lastModifiedDate":"2024-01-24"},{"lineNumber":46,"author":{"gitId":"0liverkong"},"content":" String[] cmds \u003d input.split(\" \", 2);","lastModifiedDate":"2024-01-23"},{"lineNumber":47,"author":{"gitId":"0liverkong"},"content":" String taskType \u003d cmds[0];","lastModifiedDate":"2024-01-23"},{"lineNumber":48,"author":{"gitId":"0liverkong"},"content":" String taskDetails;","lastModifiedDate":"2024-01-24"},{"lineNumber":49,"author":{"gitId":"0liverkong"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":50,"author":{"gitId":"0liverkong"},"content":" taskDetails \u003d cmds[1];","lastModifiedDate":"2024-01-24"},{"lineNumber":51,"author":{"gitId":"0liverkong"},"content":" if (taskDetails.isBlank()) {","lastModifiedDate":"2024-01-24"},{"lineNumber":52,"author":{"gitId":"0liverkong"},"content":" throw new DookException(\":( Task description cannot be empty!\");","lastModifiedDate":"2024-01-24"},{"lineNumber":53,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":54,"author":{"gitId":"0liverkong"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":55,"author":{"gitId":"0liverkong"},"content":" throw new DookException(\":( Task description cannot be empty!\");","lastModifiedDate":"2024-01-24"},{"lineNumber":56,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":57,"author":{"gitId":"0liverkong"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":58,"author":{"gitId":"0liverkong"},"content":" if (taskType.equals(\"todo\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":59,"author":{"gitId":"0liverkong"},"content":" return new ToDo(taskDetails);","lastModifiedDate":"2024-01-23"},{"lineNumber":60,"author":{"gitId":"0liverkong"},"content":" } else if (taskType.equals(\"deadline\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":61,"author":{"gitId":"0liverkong"},"content":" String[] details \u003d taskDetails.split(\" /by \", 2);","lastModifiedDate":"2024-01-23"},{"lineNumber":62,"author":{"gitId":"0liverkong"},"content":" String name \u003d details[0];","lastModifiedDate":"2024-01-23"},{"lineNumber":63,"author":{"gitId":"0liverkong"},"content":" String doBy \u003d details[1];","lastModifiedDate":"2024-01-23"},{"lineNumber":64,"author":{"gitId":"0liverkong"},"content":" return new Deadline(name, doBy);","lastModifiedDate":"2024-01-24"},{"lineNumber":65,"author":{"gitId":"0liverkong"},"content":" } else {","lastModifiedDate":"2024-01-23"},{"lineNumber":66,"author":{"gitId":"0liverkong"},"content":" String[] details \u003d taskDetails.split(\" /from \", 2);","lastModifiedDate":"2024-01-23"},{"lineNumber":67,"author":{"gitId":"0liverkong"},"content":" String name \u003d details[0];","lastModifiedDate":"2024-01-23"},{"lineNumber":68,"author":{"gitId":"0liverkong"},"content":" String[] startAndEnd \u003d details[1].split(\" /to \", 2);","lastModifiedDate":"2024-01-23"},{"lineNumber":69,"author":{"gitId":"0liverkong"},"content":" String start \u003d startAndEnd[0];","lastModifiedDate":"2024-01-23"},{"lineNumber":70,"author":{"gitId":"0liverkong"},"content":" String end \u003d startAndEnd[1];","lastModifiedDate":"2024-01-23"},{"lineNumber":71,"author":{"gitId":"0liverkong"},"content":" return new Event(name, start, end);","lastModifiedDate":"2024-01-23"},{"lineNumber":72,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":73,"author":{"gitId":"0liverkong"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":74,"author":{"gitId":"0liverkong"},"content":" throw new DookException(\"Oh nyo! Wrong format for \" + taskType + \" command!\");","lastModifiedDate":"2024-01-24"},{"lineNumber":75,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":76,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":77,"author":{"gitId":"0liverkong"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":78,"author":{"gitId":"0liverkong"},"content":" private void introduceSelf() {","lastModifiedDate":"2024-01-23"},{"lineNumber":79,"author":{"gitId":"0liverkong"},"content":" String logo \u003d \" ____ _ \\n\"","lastModifiedDate":"2024-01-23"},{"lineNumber":80,"author":{"gitId":"0liverkong"},"content":" + \"| _ \\\\ ___ ___ | | __ ╱|、\\n\"","lastModifiedDate":"2024-01-23"},{"lineNumber":81,"author":{"gitId":"0liverkong"},"content":" + \"| | | |/ _ \\\\ / _ \\\\| |/ / (˚ˎ 。7 \\n\"","lastModifiedDate":"2024-01-23"},{"lineNumber":82,"author":{"gitId":"0liverkong"},"content":" + \"| |_| | |_| | |_| | \u003c |、˜〵 \\n\"","lastModifiedDate":"2024-01-23"},{"lineNumber":83,"author":{"gitId":"0liverkong"},"content":" + \"|____/ \\\\___/ \\\\___/|_|\\\\_\\\\ じしˍ,)ノ\\n\"; Dook.printSeparator();","lastModifiedDate":"2024-01-24"},{"lineNumber":84,"author":{"gitId":"0liverkong"},"content":" System.out.println(\"Hello from Dook! :D meow\\n\" + logo);","lastModifiedDate":"2024-01-23"},{"lineNumber":85,"author":{"gitId":"0liverkong"},"content":" System.out.println(\"What can I do for you? uwu\"); Dook.printSeparator();","lastModifiedDate":"2024-01-24"},{"lineNumber":86,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":87,"author":{"gitId":"0liverkong"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":88,"author":{"gitId":"0liverkong"},"content":" private static void printSeparator() {","lastModifiedDate":"2024-01-23"},{"lineNumber":89,"author":{"gitId":"0liverkong"},"content":" System.out.println(Dook.LINE_SEPARATOR);","lastModifiedDate":"2024-01-24"},{"lineNumber":90,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":91,"author":{"gitId":"0liverkong"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":92,"author":{"gitId":"0liverkong"},"content":" private boolean executeCommand(String input) throws DookException {","lastModifiedDate":"2024-01-24"},{"lineNumber":93,"author":{"gitId":"0liverkong"},"content":" Command command \u003d Dook.getCommand(input);","lastModifiedDate":"2024-01-24"},{"lineNumber":94,"author":{"gitId":"0liverkong"},"content":" String[] cmds \u003d input.split(\" \", 2);","lastModifiedDate":"2024-01-23"},{"lineNumber":95,"author":{"gitId":"0liverkong"},"content":" switch(command) {","lastModifiedDate":"2024-01-23"},{"lineNumber":96,"author":{"gitId":"0liverkong"},"content":" case BYE:","lastModifiedDate":"2024-01-23"},{"lineNumber":97,"author":{"gitId":"0liverkong"},"content":" executeBYE();","lastModifiedDate":"2024-01-24"},{"lineNumber":98,"author":{"gitId":"0liverkong"},"content":" return true;","lastModifiedDate":"2024-01-23"},{"lineNumber":99,"author":{"gitId":"0liverkong"},"content":" case LIST:","lastModifiedDate":"2024-01-23"},{"lineNumber":100,"author":{"gitId":"0liverkong"},"content":" executeLIST();","lastModifiedDate":"2024-01-24"},{"lineNumber":101,"author":{"gitId":"0liverkong"},"content":" return false;","lastModifiedDate":"2024-01-23"},{"lineNumber":102,"author":{"gitId":"0liverkong"},"content":" case ADD:","lastModifiedDate":"2024-01-23"},{"lineNumber":103,"author":{"gitId":"0liverkong"},"content":" executeADD(input);","lastModifiedDate":"2024-01-24"},{"lineNumber":104,"author":{"gitId":"0liverkong"},"content":" return false;","lastModifiedDate":"2024-01-24"},{"lineNumber":105,"author":{"gitId":"0liverkong"},"content":" case MARK:","lastModifiedDate":"2024-01-24"},{"lineNumber":106,"author":{"gitId":"0liverkong"},"content":" executeMARK(cmds);","lastModifiedDate":"2024-01-24"},{"lineNumber":107,"author":{"gitId":"0liverkong"},"content":" return false;","lastModifiedDate":"2024-01-24"},{"lineNumber":108,"author":{"gitId":"0liverkong"},"content":" case UNMARK:","lastModifiedDate":"2024-01-24"},{"lineNumber":109,"author":{"gitId":"0liverkong"},"content":" executeUNMARK(cmds);","lastModifiedDate":"2024-01-24"},{"lineNumber":110,"author":{"gitId":"0liverkong"},"content":" return false;","lastModifiedDate":"2024-01-24"},{"lineNumber":111,"author":{"gitId":"0liverkong"},"content":" case DELETE:","lastModifiedDate":"2024-01-24"},{"lineNumber":112,"author":{"gitId":"0liverkong"},"content":" executeDELETE(cmds);","lastModifiedDate":"2024-01-24"},{"lineNumber":113,"author":{"gitId":"0liverkong"},"content":" return false;","lastModifiedDate":"2024-01-24"},{"lineNumber":114,"author":{"gitId":"0liverkong"},"content":" case OTHER:","lastModifiedDate":"2024-01-24"},{"lineNumber":115,"author":{"gitId":"0liverkong"},"content":" default:","lastModifiedDate":"2024-01-24"},{"lineNumber":116,"author":{"gitId":"0liverkong"},"content":" throw new DookException(\"I don\u0027t understand this command :( Try again!\");","lastModifiedDate":"2024-01-24"},{"lineNumber":117,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":118,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":119,"author":{"gitId":"0liverkong"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":120,"author":{"gitId":"0liverkong"},"content":" private void executeBYE() {","lastModifiedDate":"2024-01-24"},{"lineNumber":121,"author":{"gitId":"0liverkong"},"content":" System.out.println(\"Bye :(. Hope to see you again soon! ≽^- ˕ -^≼\");","lastModifiedDate":"2024-01-24"},{"lineNumber":122,"author":{"gitId":"0liverkong"},"content":" Dook.printSeparator();","lastModifiedDate":"2024-01-24"},{"lineNumber":123,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":124,"author":{"gitId":"0liverkong"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":125,"author":{"gitId":"0liverkong"},"content":" private void executeLIST() {","lastModifiedDate":"2024-01-24"},{"lineNumber":126,"author":{"gitId":"0liverkong"},"content":" System.out.println(\"Here are your tasks!\");","lastModifiedDate":"2024-01-24"},{"lineNumber":127,"author":{"gitId":"0liverkong"},"content":" System.out.println(this.tasks);","lastModifiedDate":"2024-01-24"},{"lineNumber":128,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":129,"author":{"gitId":"0liverkong"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":130,"author":{"gitId":"0liverkong"},"content":" private void executeADD(String input) throws DookException {","lastModifiedDate":"2024-01-24"},{"lineNumber":131,"author":{"gitId":"0liverkong"},"content":" Task toAdd \u003d Dook.getTask(input);","lastModifiedDate":"2024-01-24"},{"lineNumber":132,"author":{"gitId":"0liverkong"},"content":" this.tasks.addTask(toAdd);","lastModifiedDate":"2024-01-23"},{"lineNumber":133,"author":{"gitId":"0liverkong"},"content":" System.out.println(\"Oki! I\u0027ve added this task:\");","lastModifiedDate":"2024-01-23"},{"lineNumber":134,"author":{"gitId":"0liverkong"},"content":" System.out.println(toAdd);","lastModifiedDate":"2024-01-23"},{"lineNumber":135,"author":{"gitId":"0liverkong"},"content":" this.tasks.printStatus();","lastModifiedDate":"2024-01-23"},{"lineNumber":136,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":137,"author":{"gitId":"0liverkong"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":138,"author":{"gitId":"0liverkong"},"content":" private void executeMARK(String[] cmds) throws DookException {","lastModifiedDate":"2024-01-24"},{"lineNumber":139,"author":{"gitId":"0liverkong"},"content":" Task toMark;","lastModifiedDate":"2024-01-24"},{"lineNumber":140,"author":{"gitId":"0liverkong"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":141,"author":{"gitId":"0liverkong"},"content":" int positionToMark \u003d Integer.valueOf(cmds[1]);","lastModifiedDate":"2024-01-23"},{"lineNumber":142,"author":{"gitId":"0liverkong"},"content":" toMark \u003d this.tasks.get(positionToMark - 1);","lastModifiedDate":"2024-01-24"},{"lineNumber":143,"author":{"gitId":"0liverkong"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":144,"author":{"gitId":"0liverkong"},"content":" DookException err;","lastModifiedDate":"2024-01-24"},{"lineNumber":145,"author":{"gitId":"0liverkong"},"content":" if (this.tasks.size() \u003d\u003d 0) {","lastModifiedDate":"2024-01-24"},{"lineNumber":146,"author":{"gitId":"0liverkong"},"content":" err \u003d new DookException(\"Nooo! You don\u0027t have any tasks to mark :(\");","lastModifiedDate":"2024-01-24"},{"lineNumber":147,"author":{"gitId":"0liverkong"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":148,"author":{"gitId":"0liverkong"},"content":" err \u003d new DookException(String.format(\"Nooo! \" +","lastModifiedDate":"2024-01-24"},{"lineNumber":149,"author":{"gitId":"0liverkong"},"content":" \"You have %d tasks!\" +","lastModifiedDate":"2024-01-24"},{"lineNumber":150,"author":{"gitId":"0liverkong"},"content":" \" Valid inputs for mark is in the range [0 - %d]\",","lastModifiedDate":"2024-01-24"},{"lineNumber":151,"author":{"gitId":"0liverkong"},"content":" this.tasks.size(), this.tasks.size()));","lastModifiedDate":"2024-01-25"},{"lineNumber":152,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":153,"author":{"gitId":"0liverkong"},"content":" throw err;","lastModifiedDate":"2024-01-24"},{"lineNumber":154,"author":{"gitId":"0liverkong"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":155,"author":{"gitId":"0liverkong"},"content":" throw new DookException(\"Ohnoo! Please enter a number after \\\"mark\\\"!\");","lastModifiedDate":"2024-01-24"},{"lineNumber":156,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":157,"author":{"gitId":"0liverkong"},"content":" toMark.markAsDone();","lastModifiedDate":"2024-01-23"},{"lineNumber":158,"author":{"gitId":"0liverkong"},"content":" System.out.println(\"Oki! :D Good job! I\u0027ve marked this task as done:\");","lastModifiedDate":"2024-01-23"},{"lineNumber":159,"author":{"gitId":"0liverkong"},"content":" System.out.println(toMark);","lastModifiedDate":"2024-01-23"},{"lineNumber":160,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":161,"author":{"gitId":"0liverkong"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":162,"author":{"gitId":"0liverkong"},"content":" private void executeUNMARK(String[] cmds) throws DookException {","lastModifiedDate":"2024-01-24"},{"lineNumber":163,"author":{"gitId":"0liverkong"},"content":" Task toUnmark;","lastModifiedDate":"2024-01-24"},{"lineNumber":164,"author":{"gitId":"0liverkong"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":165,"author":{"gitId":"0liverkong"},"content":" int positionToUnmark \u003d Integer.valueOf(cmds[1]);","lastModifiedDate":"2024-01-23"},{"lineNumber":166,"author":{"gitId":"0liverkong"},"content":" toUnmark \u003d this.tasks.get(positionToUnmark - 1);","lastModifiedDate":"2024-01-24"},{"lineNumber":167,"author":{"gitId":"0liverkong"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":168,"author":{"gitId":"0liverkong"},"content":" DookException err;","lastModifiedDate":"2024-01-24"},{"lineNumber":169,"author":{"gitId":"0liverkong"},"content":" if (this.tasks.size() \u003d\u003d 0) {","lastModifiedDate":"2024-01-24"},{"lineNumber":170,"author":{"gitId":"0liverkong"},"content":" err \u003d new DookException(\"Nooo! You don\u0027t have any tasks to unmark :(\");","lastModifiedDate":"2024-01-24"},{"lineNumber":171,"author":{"gitId":"0liverkong"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":172,"author":{"gitId":"0liverkong"},"content":" err \u003d new DookException(String.format(\"Nooo! \" +","lastModifiedDate":"2024-01-24"},{"lineNumber":173,"author":{"gitId":"0liverkong"},"content":" \"You have %d tasks!\" +","lastModifiedDate":"2024-01-24"},{"lineNumber":174,"author":{"gitId":"0liverkong"},"content":" \" Valid inputs for unmark is in the range [0 - %d]\",","lastModifiedDate":"2024-01-24"},{"lineNumber":175,"author":{"gitId":"0liverkong"},"content":" this.tasks.size(), this.tasks.size()));","lastModifiedDate":"2024-01-25"},{"lineNumber":176,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":177,"author":{"gitId":"0liverkong"},"content":" throw err;","lastModifiedDate":"2024-01-24"},{"lineNumber":178,"author":{"gitId":"0liverkong"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":179,"author":{"gitId":"0liverkong"},"content":" throw new DookException(\"Ohnoo! Please enter a number after \\\"ummark\\\"!\");","lastModifiedDate":"2024-01-24"},{"lineNumber":180,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":181,"author":{"gitId":"0liverkong"},"content":" toUnmark.markAsNotDone();","lastModifiedDate":"2024-01-23"},{"lineNumber":182,"author":{"gitId":"0liverkong"},"content":" System.out.println(\"Lazy bum. \u003e:( I\u0027ve marked this task as done:\");","lastModifiedDate":"2024-01-23"},{"lineNumber":183,"author":{"gitId":"0liverkong"},"content":" System.out.println(toUnmark);","lastModifiedDate":"2024-01-23"},{"lineNumber":184,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":185,"author":{"gitId":"0liverkong"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":186,"author":{"gitId":"0liverkong"},"content":" private void executeDELETE(String[] cmds) throws DookException {","lastModifiedDate":"2024-01-24"},{"lineNumber":187,"author":{"gitId":"0liverkong"},"content":" Task toDelete;","lastModifiedDate":"2024-01-24"},{"lineNumber":188,"author":{"gitId":"0liverkong"},"content":" int positionToDelete;","lastModifiedDate":"2024-01-24"},{"lineNumber":189,"author":{"gitId":"0liverkong"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":190,"author":{"gitId":"0liverkong"},"content":" positionToDelete \u003d Integer.valueOf(cmds[1]);","lastModifiedDate":"2024-01-24"},{"lineNumber":191,"author":{"gitId":"0liverkong"},"content":" toDelete \u003d this.tasks.get(positionToDelete - 1);","lastModifiedDate":"2024-01-24"},{"lineNumber":192,"author":{"gitId":"0liverkong"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":193,"author":{"gitId":"0liverkong"},"content":" DookException err;","lastModifiedDate":"2024-01-24"},{"lineNumber":194,"author":{"gitId":"0liverkong"},"content":" if (this.tasks.size() \u003d\u003d 0) {","lastModifiedDate":"2024-01-24"},{"lineNumber":195,"author":{"gitId":"0liverkong"},"content":" err \u003d new DookException(\"Nooo! You don\u0027t have any tasks to delete :(\");","lastModifiedDate":"2024-01-24"},{"lineNumber":196,"author":{"gitId":"0liverkong"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":197,"author":{"gitId":"0liverkong"},"content":" err \u003d new DookException(String.format(\"Nooo! \" +","lastModifiedDate":"2024-01-24"},{"lineNumber":198,"author":{"gitId":"0liverkong"},"content":" \"You have %d tasks!\" +","lastModifiedDate":"2024-01-24"},{"lineNumber":199,"author":{"gitId":"0liverkong"},"content":" \" Valid inputs for delete is in the range [0 - %d]\",","lastModifiedDate":"2024-01-24"},{"lineNumber":200,"author":{"gitId":"0liverkong"},"content":" this.tasks.size(), this.tasks.size()));","lastModifiedDate":"2024-01-25"},{"lineNumber":201,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":202,"author":{"gitId":"0liverkong"},"content":" throw err;","lastModifiedDate":"2024-01-24"},{"lineNumber":203,"author":{"gitId":"0liverkong"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":204,"author":{"gitId":"0liverkong"},"content":" throw new DookException(\"Ohnoo! Please enter a number after \\\"delete\\\"!\");","lastModifiedDate":"2024-01-24"},{"lineNumber":205,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":206,"author":{"gitId":"0liverkong"},"content":" System.out.println(\"Oki! Bye Bye task!\");","lastModifiedDate":"2024-01-24"},{"lineNumber":207,"author":{"gitId":"0liverkong"},"content":" this.tasks.remove(positionToDelete - 1);","lastModifiedDate":"2024-01-24"},{"lineNumber":208,"author":{"gitId":"0liverkong"},"content":" System.out.println(\"You deleted this task :(\");","lastModifiedDate":"2024-01-24"},{"lineNumber":209,"author":{"gitId":"0liverkong"},"content":" System.out.println(toDelete);","lastModifiedDate":"2024-01-24"},{"lineNumber":210,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":211,"author":{"gitId":"0liverkong"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-01-23"},{"lineNumber":212,"author":{"gitId":"0liverkong"},"content":" Dook dook \u003d new Dook();","lastModifiedDate":"2024-01-24"},{"lineNumber":213,"author":{"gitId":"0liverkong"},"content":" dook.introduceSelf();","lastModifiedDate":"2024-01-24"},{"lineNumber":214,"author":{"gitId":"0liverkong"},"content":" Scanner sc \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-23"},{"lineNumber":215,"author":{"gitId":"0liverkong"},"content":" while (true) {","lastModifiedDate":"2024-01-23"},{"lineNumber":216,"author":{"gitId":"0liverkong"},"content":" String input \u003d sc.nextLine();","lastModifiedDate":"2024-01-25"},{"lineNumber":217,"author":{"gitId":"0liverkong"},"content":" Dook.printSeparator();","lastModifiedDate":"2024-01-24"},{"lineNumber":218,"author":{"gitId":"0liverkong"},"content":" boolean willExitLoop \u003d false;","lastModifiedDate":"2024-01-30"},{"lineNumber":219,"author":{"gitId":"0liverkong"},"content":" try {","lastModifiedDate":"2024-01-23"},{"lineNumber":220,"author":{"gitId":"0liverkong"},"content":" willExitLoop \u003d dook.executeCommand(input);","lastModifiedDate":"2024-01-30"},{"lineNumber":221,"author":{"gitId":"0liverkong"},"content":" } catch (DookException e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":222,"author":{"gitId":"0liverkong"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-24"},{"lineNumber":223,"author":{"gitId":"0liverkong"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-01-23"},{"lineNumber":224,"author":{"gitId":"0liverkong"},"content":" System.out.println(\"Error detected, please try again :(\\n\" + e);","lastModifiedDate":"2024-01-24"},{"lineNumber":225,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":226,"author":{"gitId":"0liverkong"},"content":" if (willExitLoop) {","lastModifiedDate":"2024-01-30"},{"lineNumber":227,"author":{"gitId":"0liverkong"},"content":" break;","lastModifiedDate":"2024-01-23"},{"lineNumber":228,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":229,"author":{"gitId":"0liverkong"},"content":" Dook.printSeparator();","lastModifiedDate":"2024-01-24"},{"lineNumber":230,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":231,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":232,"author":{"gitId":"0liverkong"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"0liverkong":232}},{"path":"src/main/java/DookException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"0liverkong"},"content":"public class DookException extends Exception {","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"0liverkong"},"content":" public DookException(String message) {","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"0liverkong"},"content":" super(message);","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"0liverkong"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"0liverkong":5}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"0liverkong"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"0liverkong"},"content":" private String start;","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"0liverkong"},"content":" private String end;","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"0liverkong"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"0liverkong"},"content":" Event(String name, String start, String end) {","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"0liverkong"},"content":" super(name);","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"0liverkong"},"content":" this.start \u003d start;","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"0liverkong"},"content":" this.end \u003d end;","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"0liverkong"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"0liverkong"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"0liverkong"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":13,"author":{"gitId":"0liverkong"},"content":" return String.format(\"[E]%s (from: %s to: %s)\", super.toString(), this.start, this.end);","lastModifiedDate":"2024-01-22"},{"lineNumber":14,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":15,"author":{"gitId":"0liverkong"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"0liverkong":15}},{"path":"src/main/java/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"0liverkong"},"content":"public class Parser {","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"0liverkong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"0liverkong"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"0liverkong":3}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"0liverkong"},"content":"public class Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"0liverkong"},"content":" private String name;","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"0liverkong"},"content":" private boolean done;","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"0liverkong"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"0liverkong"},"content":" Task(String name) {","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"0liverkong"},"content":" this.name \u003d name;","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"0liverkong"},"content":" this.done \u003d false;","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"0liverkong"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"0liverkong"},"content":" Task(String name, boolean done) {","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"0liverkong"},"content":" this.name \u003d name;","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"0liverkong"},"content":" this.done \u003d done;","lastModifiedDate":"2024-01-22"},{"lineNumber":13,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":14,"author":{"gitId":"0liverkong"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":15,"author":{"gitId":"0liverkong"},"content":" public void markAsDone() {","lastModifiedDate":"2024-01-22"},{"lineNumber":16,"author":{"gitId":"0liverkong"},"content":" this.done \u003d true;","lastModifiedDate":"2024-01-22"},{"lineNumber":17,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":18,"author":{"gitId":"0liverkong"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":19,"author":{"gitId":"0liverkong"},"content":" public void markAsNotDone() {","lastModifiedDate":"2024-01-22"},{"lineNumber":20,"author":{"gitId":"0liverkong"},"content":" this.done \u003d false;","lastModifiedDate":"2024-01-22"},{"lineNumber":21,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":22,"author":{"gitId":"0liverkong"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":23,"author":{"gitId":"0liverkong"},"content":" private String getStatusIcon() {","lastModifiedDate":"2024-01-22"},{"lineNumber":24,"author":{"gitId":"0liverkong"},"content":" return (this.done ? \"X\" : \" \");","lastModifiedDate":"2024-01-22"},{"lineNumber":25,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":26,"author":{"gitId":"0liverkong"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":27,"author":{"gitId":"0liverkong"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":28,"author":{"gitId":"0liverkong"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":29,"author":{"gitId":"0liverkong"},"content":" return String.format(\"[%s] %s\", getStatusIcon(), this.name);","lastModifiedDate":"2024-01-22"},{"lineNumber":30,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":31,"author":{"gitId":"0liverkong"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"0liverkong":31}},{"path":"src/main/java/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"0liverkong"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"0liverkong"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"0liverkong"},"content":"public class TaskList {","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"0liverkong"},"content":" private ArrayList\u003cTask\u003e tasks;","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"0liverkong"},"content":" private static int count \u003d 0;","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"0liverkong"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"0liverkong"},"content":" TaskList() {","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"0liverkong"},"content":" this.tasks \u003d new ArrayList\u003cTask\u003e();","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"0liverkong"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"0liverkong"},"content":" public void addTask(Task t) {","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"0liverkong"},"content":" tasks.add(t);","lastModifiedDate":"2024-01-22"},{"lineNumber":13,"author":{"gitId":"0liverkong"},"content":" count++;","lastModifiedDate":"2024-01-22"},{"lineNumber":14,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":15,"author":{"gitId":"0liverkong"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":16,"author":{"gitId":"0liverkong"},"content":" public void remove(int i) {","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"0liverkong"},"content":" this.tasks.remove(i);","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"0liverkong"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"0liverkong"},"content":" public Task get(int i) {","lastModifiedDate":"2024-01-22"},{"lineNumber":21,"author":{"gitId":"0liverkong"},"content":" return this.tasks.get(i);","lastModifiedDate":"2024-01-22"},{"lineNumber":22,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":23,"author":{"gitId":"0liverkong"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":24,"author":{"gitId":"0liverkong"},"content":" public int size() {","lastModifiedDate":"2024-01-22"},{"lineNumber":25,"author":{"gitId":"0liverkong"},"content":" return this.tasks.size();","lastModifiedDate":"2024-01-22"},{"lineNumber":26,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":27,"author":{"gitId":"0liverkong"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":28,"author":{"gitId":"0liverkong"},"content":" public void printStatus() {","lastModifiedDate":"2024-01-22"},{"lineNumber":29,"author":{"gitId":"0liverkong"},"content":" if (count \u003d\u003d 0) {","lastModifiedDate":"2024-01-22"},{"lineNumber":30,"author":{"gitId":"0liverkong"},"content":" System.out.println(\"Now you have no tasks on the list :(((\");","lastModifiedDate":"2024-01-22"},{"lineNumber":31,"author":{"gitId":"0liverkong"},"content":" } else if (count \u003d\u003d 1) {","lastModifiedDate":"2024-01-22"},{"lineNumber":32,"author":{"gitId":"0liverkong"},"content":" System.out.println(\"You have 1 task on the list!\");","lastModifiedDate":"2024-01-22"},{"lineNumber":33,"author":{"gitId":"0liverkong"},"content":" } else {","lastModifiedDate":"2024-01-22"},{"lineNumber":34,"author":{"gitId":"0liverkong"},"content":" System.out.printf(\"You have %d tasks on the list!%n\", count);","lastModifiedDate":"2024-01-22"},{"lineNumber":35,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":36,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":37,"author":{"gitId":"0liverkong"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":38,"author":{"gitId":"0liverkong"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":39,"author":{"gitId":"0liverkong"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":40,"author":{"gitId":"0liverkong"},"content":" ArrayList\u003cString\u003e a \u003d new ArrayList\u003cString\u003e();","lastModifiedDate":"2024-01-22"},{"lineNumber":41,"author":{"gitId":"0liverkong"},"content":" for (int i \u003d 0; i \u003c this.tasks.size(); i++) {","lastModifiedDate":"2024-01-22"},{"lineNumber":42,"author":{"gitId":"0liverkong"},"content":" a.add(String.format(\"%d. %s\",","lastModifiedDate":"2024-01-22"},{"lineNumber":43,"author":{"gitId":"0liverkong"},"content":" i + 1,","lastModifiedDate":"2024-01-22"},{"lineNumber":44,"author":{"gitId":"0liverkong"},"content":" this.tasks.get(i)));","lastModifiedDate":"2024-01-22"},{"lineNumber":45,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":46,"author":{"gitId":"0liverkong"},"content":" return String.join(\"\\n\", a);","lastModifiedDate":"2024-01-22"},{"lineNumber":47,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":48,"author":{"gitId":"0liverkong"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"0liverkong":48}},{"path":"src/main/java/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"0liverkong"},"content":"public class ToDo extends Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"0liverkong"},"content":" ToDo(String name) {","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"0liverkong"},"content":" super(name);","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"0liverkong"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"0liverkong"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"0liverkong"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"0liverkong"},"content":" return String.format(\"[T]%s\", super.toString());","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"0liverkong"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"0liverkong":10}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"0liverkong"},"content":"todo borrow book","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"0liverkong"},"content":"todo read book","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"0liverkong"},"content":"todo join sports club","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"0liverkong"},"content":"deadline return book /by June 6th","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"0liverkong"},"content":"event project meeting /from Aug 6th 2pm /to 4pm","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"0liverkong"},"content":"deadline return book /by Sunday","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"0liverkong"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"0liverkong"},"content":"list","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"0liverkong"},"content":"mark1","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"0liverkong"},"content":"mark 1","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"0liverkong"},"content":"unmark 1","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"0liverkong"},"content":"mark 9","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"0liverkong"},"content":"unmark 10","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"0liverkong"},"content":"mark 5","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"0liverkong"},"content":"unmark 8","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"0liverkong"},"content":"unmark","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"0liverkong"},"content":"delete 8","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"0liverkong"},"content":"delete 8","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"0liverkong"},"content":"delete 5","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"0liverkong"},"content":"list","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"0liverkong":20}},{"path":"text-ui-test/runtest.sh","fileType":"sh","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"#!/usr/bin/env bash","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"# create bin directory if it doesn\u0027t exist","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"if [ ! -d \"../bin\" ]","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":" mkdir ../bin","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"# delete output from previous run","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"if [ -e \"./ACTUAL.TXT\" ]","lastModifiedDate":"2020-05-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":" rm ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"# compile the code into the bin folder, terminates if error occurred","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"if ! javac -cp ../src/main/java -Xlint:none -d ../bin ../src/main/java/*.java","lastModifiedDate":"2020-08-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" echo \"********** BUILD FAILURE **********\"","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" exit 1","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":"# run the program, feed commands from input.txt file and redirect the output to the ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"0liverkong"},"content":"java -classpath ../bin Dook \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":"# convert to UNIX format","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":"cp EXPECTED.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":"dos2unix ACTUAL.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"# compare the output to the expected output","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"diff ACTUAL.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":"if [ $? -eq 0 ]","lastModifiedDate":"2020-05-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":" echo \"Test result: PASSED\"","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":" exit 0","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":"else","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" echo \"Test result: FAILED\"","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" exit 1","lastModifiedDate":"2020-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"0liverkong":1,"-":37}}] +[{"path":"src/main/dook.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"0liverkong"},"content":"T | | borrow book","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"0liverkong"},"content":"T | | read book","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"0liverkong"},"content":"T | | join sports club","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"0liverkong"},"content":"D | X | return book | by: June 6th","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"0liverkong"},"content":"T | | something","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"0liverkong"},"content":"E | | something | from: tomorrow to: end of the century","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"0liverkong":6}},{"path":"src/main/java/AddCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"0liverkong"},"content":"public class AddCommand extends Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"0liverkong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"0liverkong"},"content":" private final Parser.TaskType tasktype;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"0liverkong"},"content":" private final String description;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"0liverkong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"0liverkong"},"content":" AddCommand(Parser.TaskType tasktype, String description) {","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"0liverkong"},"content":" this.tasktype \u003d tasktype;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"0liverkong"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"0liverkong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"0liverkong"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws DookException {","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"0liverkong"},"content":" Task toAdd \u003d Parser.getTask(tasktype, description);","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"0liverkong"},"content":" tasks.addTask(toAdd);","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"0liverkong"},"content":" ui.println(\"Oki! I\u0027ve added this task:\");","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"0liverkong"},"content":" ui.println(toAdd.toString());","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"0liverkong"},"content":" tasks.printStatus();","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"0liverkong"},"content":" storage.write(tasks);","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"0liverkong"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"0liverkong":19}},{"path":"src/main/java/ByeCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"0liverkong"},"content":"public class ByeCommand extends Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"0liverkong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"0liverkong"},"content":" ByeCommand() {","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"0liverkong"},"content":" this.isExit \u003d true;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"0liverkong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"0liverkong"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws DookException {","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"0liverkong"},"content":" ui.println(\"Bye :(. Hope to see you again soon! ≽^- ˕ -^≼\");","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"0liverkong"},"content":" storage.write(tasks);","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"0liverkong"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"0liverkong":11}},{"path":"src/main/java/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"0liverkong"},"content":"public abstract class Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"0liverkong"},"content":" protected boolean isExit \u003d false;","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"0liverkong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"0liverkong"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"0liverkong"},"content":" return isExit;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"0liverkong"},"content":" public abstract void execute(TaskList tasks, Ui ui, Storage storage) throws DookException;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"0liverkong"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"0liverkong":8}},{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"0liverkong"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"0liverkong"},"content":" private String doBy;","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"0liverkong"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"0liverkong"},"content":" Deadline(String name, String doBy) {","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"0liverkong"},"content":" super(name);","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"0liverkong"},"content":" this.doBy \u003d doBy;","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"0liverkong"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"0liverkong"},"content":" Deadline(String name, String doBy, boolean done) {","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"0liverkong"},"content":" super(name, done);","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"0liverkong"},"content":" this.doBy \u003d doBy;","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"0liverkong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"0liverkong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"0liverkong"},"content":" public String fileRepresentation() {","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"0liverkong"},"content":" return String.format(\"D | %s | %s | by: %s\",","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"0liverkong"},"content":" this.getStatusIcon(),","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"0liverkong"},"content":" this.getDescription(),","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"0liverkong"},"content":" this.doBy);","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"0liverkong"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":22,"author":{"gitId":"0liverkong"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":23,"author":{"gitId":"0liverkong"},"content":" return String.format(\"[D]%s (by: %s)\", super.toString(), this.doBy);","lastModifiedDate":"2024-01-22"},{"lineNumber":24,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":25,"author":{"gitId":"0liverkong"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"0liverkong":25}},{"path":"src/main/java/DeleteCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"0liverkong"},"content":"public class DeleteCommand extends Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"0liverkong"},"content":" private final int positionToDelete;","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"0liverkong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"0liverkong"},"content":" DeleteCommand(int positionToDelete) {","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"0liverkong"},"content":" this.positionToDelete \u003d positionToDelete;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"0liverkong"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws DookException {","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"0liverkong"},"content":" Task toDelete;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"0liverkong"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"0liverkong"},"content":" toDelete \u003d tasks.get(positionToDelete - 1);","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"0liverkong"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"0liverkong"},"content":" DookException err;","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"0liverkong"},"content":" if (tasks.size() \u003d\u003d 0) {","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"0liverkong"},"content":" err \u003d new DookException(\"Nooo! You don\u0027t have any tasks to delete :(\");","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"0liverkong"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"0liverkong"},"content":" err \u003d new DookException(String.format(\"Nooo! \" +","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"0liverkong"},"content":" \"You have %d tasks!\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"0liverkong"},"content":" \" Valid inputs for delete is in the range [1 - %d]\",","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"0liverkong"},"content":" tasks.size(), tasks.size()));","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"0liverkong"},"content":" throw err;","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"0liverkong"},"content":" ui.println(\"Oki! Bye Bye task!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"0liverkong"},"content":" tasks.remove(positionToDelete - 1);","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"0liverkong"},"content":" ui.println(\"You deleted this task :(\");","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"0liverkong"},"content":" ui.println(toDelete.toString());","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"0liverkong"},"content":" storage.write(tasks);","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"0liverkong"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"0liverkong":29}},{"path":"src/main/java/Dook.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"0liverkong"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"0liverkong"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"0liverkong"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"0liverkong"},"content":"public class Dook {","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"0liverkong"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"0liverkong"},"content":" private static final String FILE_PATH \u003d \"src/main/dook.txt\";","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"0liverkong"},"content":" private TaskList tasks;","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"0liverkong"},"content":" private Ui ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"0liverkong"},"content":" private Parser parser;","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"0liverkong"},"content":" private Storage storage;","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"0liverkong"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"0liverkong"},"content":" Dook() {","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"0liverkong"},"content":" this.tasks \u003d new TaskList();","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"0liverkong"},"content":" this.ui \u003d new Ui();","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"0liverkong"},"content":" this.parser \u003d new Parser();","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"0liverkong"},"content":" this.storage \u003d new Storage(FILE_PATH);","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"0liverkong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":19,"author":{"gitId":"0liverkong"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":20,"author":{"gitId":"0liverkong"},"content":" public void run() {","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"0liverkong"},"content":" this.ui.introduce();","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"0liverkong"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"0liverkong"},"content":" this.tasks \u003d this.storage.loadTaskListFromFile();","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"0liverkong"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"0liverkong"},"content":" this.ui.println(\"error while loading file, specific error: \" + e);","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"0liverkong"},"content":" } catch (DookException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"0liverkong"},"content":" this.ui.println(e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"0liverkong"},"content":" Scanner sc \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-23"},{"lineNumber":30,"author":{"gitId":"0liverkong"},"content":" boolean willExitLoop \u003d false;","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"0liverkong"},"content":" while (!willExitLoop) {","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"0liverkong"},"content":" String input \u003d sc.nextLine();","lastModifiedDate":"2024-01-25"},{"lineNumber":33,"author":{"gitId":"0liverkong"},"content":" this.ui.printSeparator();","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"0liverkong"},"content":" try {","lastModifiedDate":"2024-01-23"},{"lineNumber":35,"author":{"gitId":"0liverkong"},"content":" Command c \u003d this.parser.parse(input);","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"0liverkong"},"content":" c.execute(this.tasks, this.ui, this.storage);","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"0liverkong"},"content":" willExitLoop \u003d c.isExit();","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"0liverkong"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-01-23"},{"lineNumber":39,"author":{"gitId":"0liverkong"},"content":" this.ui.printException(e);","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"0liverkong"},"content":" } finally {","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"0liverkong"},"content":" this.ui.printSeparator();","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":43,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":44,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":45,"author":{"gitId":"0liverkong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"0liverkong"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"0liverkong"},"content":" Dook dook \u003d new Dook();","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"0liverkong"},"content":" dook.run();","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"0liverkong"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"0liverkong":50}},{"path":"src/main/java/DookException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"0liverkong"},"content":"public class DookException extends Exception {","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"0liverkong"},"content":" public DookException(String message) {","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"0liverkong"},"content":" super(message);","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"0liverkong"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"0liverkong":5}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"0liverkong"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"0liverkong"},"content":" private String start;","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"0liverkong"},"content":" private String end;","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"0liverkong"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"0liverkong"},"content":" Event(String name, String start, String end) {","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"0liverkong"},"content":" super(name);","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"0liverkong"},"content":" this.start \u003d start;","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"0liverkong"},"content":" this.end \u003d end;","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"0liverkong"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"0liverkong"},"content":" public Event(String name, String start, String end, boolean isDone) {","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"0liverkong"},"content":" this(name, start, end);","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"0liverkong"},"content":" this.isDone \u003d isDone;","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"0liverkong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"0liverkong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"0liverkong"},"content":" public String fileRepresentation() {","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"0liverkong"},"content":" return String.format(\"E | %s | %s | from: %s to: %s\",","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"0liverkong"},"content":" this.getStatusIcon(),","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"0liverkong"},"content":" this.getDescription(),","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"0liverkong"},"content":" this.start,","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"0liverkong"},"content":" this.end);","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"0liverkong"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":25,"author":{"gitId":"0liverkong"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":26,"author":{"gitId":"0liverkong"},"content":" return String.format(\"[E]%s (from: %s to: %s)\", super.toString(), this.start, this.end);","lastModifiedDate":"2024-01-22"},{"lineNumber":27,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":28,"author":{"gitId":"0liverkong"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"0liverkong":28}},{"path":"src/main/java/ListCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"0liverkong"},"content":"public class ListCommand extends Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"0liverkong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"0liverkong"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"0liverkong"},"content":" ui.println(\"Here are your tasks!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"0liverkong"},"content":" ui.println(tasks.toString());","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"0liverkong"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"0liverkong":7}},{"path":"src/main/java/MarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"0liverkong"},"content":"public class MarkCommand extends Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"0liverkong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"0liverkong"},"content":" private final int positionToMark;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"0liverkong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"0liverkong"},"content":" MarkCommand(int positionToMark) {","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"0liverkong"},"content":" this.positionToMark \u003d positionToMark;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"0liverkong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"0liverkong"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws DookException {","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"0liverkong"},"content":" Task toMark;","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"0liverkong"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"0liverkong"},"content":" toMark \u003d tasks.get(positionToMark - 1);","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"0liverkong"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"0liverkong"},"content":" DookException err;","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"0liverkong"},"content":" if (tasks.size() \u003d\u003d 0) {","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"0liverkong"},"content":" err \u003d new DookException(\"Nooo! You don\u0027t have any tasks to mark :(\");","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"0liverkong"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"0liverkong"},"content":" err \u003d new DookException(String.format(\"Nooo! \" +","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"0liverkong"},"content":" \"You have %d tasks!\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"0liverkong"},"content":" \" Valid inputs for mark is in the range [1 - %d]\",","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"0liverkong"},"content":" tasks.size(), tasks.size()));","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"0liverkong"},"content":" throw err;","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"0liverkong"},"content":" toMark.markAsDone();","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"0liverkong"},"content":" ui.println(\"Oki! :D Good job! I\u0027ve marked this task as done:\");","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"0liverkong"},"content":" ui.println(toMark.toString());","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"0liverkong"},"content":" storage.write(tasks);","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"0liverkong"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"0liverkong":30}},{"path":"src/main/java/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"0liverkong"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"0liverkong"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"0liverkong"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"0liverkong"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"0liverkong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"0liverkong"},"content":"public class Parser {","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"0liverkong"},"content":" enum TaskType {","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"0liverkong"},"content":" TODO,","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"0liverkong"},"content":" DEADLINE,","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"0liverkong"},"content":" EVENT,","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"0liverkong"},"content":" private static final ArrayList\u003cString\u003e TASK_TYPES \u003d new ArrayList\u003cString\u003e(Arrays.asList(\"todo\", \"deadline\", \"event\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"0liverkong"},"content":" public Command parse(String input) throws DookException {","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"0liverkong"},"content":" String[] split \u003d input.split(\" \", 2);","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"0liverkong"},"content":" String firstWord \u003d split[0];","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"0liverkong"},"content":" if (input.equals(\"bye\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"0liverkong"},"content":" return new ByeCommand();","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"0liverkong"},"content":" } else if (firstWord.equals(\"list\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"0liverkong"},"content":" return new ListCommand();","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"0liverkong"},"content":" } else if (TASK_TYPES.contains(firstWord)) {","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"0liverkong"},"content":" String secondWord;","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"0liverkong"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"0liverkong"},"content":" secondWord \u003d split[1];","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"0liverkong"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"0liverkong"},"content":" throw new DookException(\"Noo!! task description cannot be empty!!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"0liverkong"},"content":" switch (firstWord) {","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"0liverkong"},"content":" case \"todo\":","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"0liverkong"},"content":" return new AddCommand(TaskType.TODO, secondWord);","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"0liverkong"},"content":" case \"deadline\":","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"0liverkong"},"content":" return new AddCommand(TaskType.DEADLINE, secondWord);","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"0liverkong"},"content":" default:","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"0liverkong"},"content":" return new AddCommand(TaskType.EVENT, secondWord);","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"0liverkong"},"content":" } else if (firstWord.equals(\"mark\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"0liverkong"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"0liverkong"},"content":" String secondWord;","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"0liverkong"},"content":" secondWord \u003d split[1];","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"0liverkong"},"content":" return new MarkCommand(Integer.valueOf(secondWord));","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"0liverkong"},"content":" } catch (NumberFormatException | IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"0liverkong"},"content":" throw new DookException(\"Ohnoo! Please enter a number after \\\"mark\\\"!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"0liverkong"},"content":" } else if (firstWord.equals(\"unmark\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"0liverkong"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"0liverkong"},"content":" String secondWord;","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"0liverkong"},"content":" secondWord \u003d split[1];","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"0liverkong"},"content":" return new UnmarkCommand(Integer.valueOf(secondWord));","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"0liverkong"},"content":" } catch (NumberFormatException | IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"0liverkong"},"content":" throw new DookException(\"Ohnoo! Please enter a number after \\\"unmark\\\"!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"0liverkong"},"content":" } else if (firstWord.equals(\"delete\")){","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"0liverkong"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"0liverkong"},"content":" String secondWord;","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"0liverkong"},"content":" secondWord \u003d split[1];","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"0liverkong"},"content":" return new DeleteCommand(Integer.valueOf(secondWord));","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"0liverkong"},"content":" } catch (NumberFormatException | IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"0liverkong"},"content":" throw new DookException(\"Ohnoo! Please enter a number after \\\"delete\\\"!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":59,"author":{"gitId":"0liverkong"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":60,"author":{"gitId":"0liverkong"},"content":" throw new DookException(\"I don\u0027t understand this command :( Try again!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":61,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":62,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":63,"author":{"gitId":"0liverkong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":64,"author":{"gitId":"0liverkong"},"content":" public static Task getTask(TaskType taskType, String taskDetails) throws DookException {","lastModifiedDate":"2024-01-30"},{"lineNumber":65,"author":{"gitId":"0liverkong"},"content":" String name;","lastModifiedDate":"2024-01-30"},{"lineNumber":66,"author":{"gitId":"0liverkong"},"content":" String[] details;","lastModifiedDate":"2024-01-30"},{"lineNumber":67,"author":{"gitId":"0liverkong"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":68,"author":{"gitId":"0liverkong"},"content":" if (taskDetails.isBlank()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":69,"author":{"gitId":"0liverkong"},"content":" throw new DookException(\":( Task description cannot be empty!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":70,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":71,"author":{"gitId":"0liverkong"},"content":" switch (taskType) {","lastModifiedDate":"2024-01-30"},{"lineNumber":72,"author":{"gitId":"0liverkong"},"content":" case TODO:","lastModifiedDate":"2024-01-30"},{"lineNumber":73,"author":{"gitId":"0liverkong"},"content":" return new ToDo(taskDetails);","lastModifiedDate":"2024-01-30"},{"lineNumber":74,"author":{"gitId":"0liverkong"},"content":" case DEADLINE:","lastModifiedDate":"2024-01-30"},{"lineNumber":75,"author":{"gitId":"0liverkong"},"content":" details \u003d taskDetails.split(\" /by \", 2);","lastModifiedDate":"2024-01-30"},{"lineNumber":76,"author":{"gitId":"0liverkong"},"content":" name \u003d details[0];","lastModifiedDate":"2024-01-30"},{"lineNumber":77,"author":{"gitId":"0liverkong"},"content":" String doBy \u003d details[1];","lastModifiedDate":"2024-01-30"},{"lineNumber":78,"author":{"gitId":"0liverkong"},"content":" return new Deadline(name, doBy);","lastModifiedDate":"2024-01-30"},{"lineNumber":79,"author":{"gitId":"0liverkong"},"content":" case EVENT:","lastModifiedDate":"2024-01-30"},{"lineNumber":80,"author":{"gitId":"0liverkong"},"content":" details \u003d taskDetails.split(\" /from \", 2);","lastModifiedDate":"2024-01-30"},{"lineNumber":81,"author":{"gitId":"0liverkong"},"content":" name \u003d details[0];","lastModifiedDate":"2024-01-30"},{"lineNumber":82,"author":{"gitId":"0liverkong"},"content":" String[] startAndEnd \u003d details[1].split(\" /to \", 2);","lastModifiedDate":"2024-01-30"},{"lineNumber":83,"author":{"gitId":"0liverkong"},"content":" String start \u003d startAndEnd[0];","lastModifiedDate":"2024-01-30"},{"lineNumber":84,"author":{"gitId":"0liverkong"},"content":" String end \u003d startAndEnd[1];","lastModifiedDate":"2024-01-30"},{"lineNumber":85,"author":{"gitId":"0liverkong"},"content":" return new Event(name, start, end);","lastModifiedDate":"2024-01-30"},{"lineNumber":86,"author":{"gitId":"0liverkong"},"content":" default:","lastModifiedDate":"2024-01-30"},{"lineNumber":87,"author":{"gitId":"0liverkong"},"content":" throw new DookException(\"Oh nyo! Wrong format for \" + taskType + \" command!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":88,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":89,"author":{"gitId":"0liverkong"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":90,"author":{"gitId":"0liverkong"},"content":" throw new DookException(\"Oh nyo! Wrong format for \" + taskType + \" command!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":91,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":92,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":93,"author":{"gitId":"0liverkong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":94,"author":{"gitId":"0liverkong"},"content":" public static Task parseFileLineToTask(String s) throws DookException {","lastModifiedDate":"2024-01-30"},{"lineNumber":95,"author":{"gitId":"0liverkong"},"content":" String[] split \u003d s.split(\" \\\\| \", 3);","lastModifiedDate":"2024-01-30"},{"lineNumber":96,"author":{"gitId":"0liverkong"},"content":" String taskTypeString \u003d split[0];","lastModifiedDate":"2024-01-30"},{"lineNumber":97,"author":{"gitId":"0liverkong"},"content":" String isDoneString \u003d split[1];","lastModifiedDate":"2024-01-30"},{"lineNumber":98,"author":{"gitId":"0liverkong"},"content":" String description \u003d split[2];","lastModifiedDate":"2024-01-30"},{"lineNumber":99,"author":{"gitId":"0liverkong"},"content":" TaskType taskType;","lastModifiedDate":"2024-01-30"},{"lineNumber":100,"author":{"gitId":"0liverkong"},"content":" String[] details;","lastModifiedDate":"2024-01-30"},{"lineNumber":101,"author":{"gitId":"0liverkong"},"content":" String name;","lastModifiedDate":"2024-01-30"},{"lineNumber":102,"author":{"gitId":"0liverkong"},"content":" boolean isDone;","lastModifiedDate":"2024-01-30"},{"lineNumber":103,"author":{"gitId":"0liverkong"},"content":" switch (taskTypeString) {","lastModifiedDate":"2024-01-30"},{"lineNumber":104,"author":{"gitId":"0liverkong"},"content":" case \"D\":","lastModifiedDate":"2024-01-30"},{"lineNumber":105,"author":{"gitId":"0liverkong"},"content":" taskType \u003d TaskType.DEADLINE;","lastModifiedDate":"2024-01-30"},{"lineNumber":106,"author":{"gitId":"0liverkong"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":107,"author":{"gitId":"0liverkong"},"content":" case \"E\":","lastModifiedDate":"2024-01-30"},{"lineNumber":108,"author":{"gitId":"0liverkong"},"content":" taskType \u003d TaskType.EVENT;","lastModifiedDate":"2024-01-30"},{"lineNumber":109,"author":{"gitId":"0liverkong"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":110,"author":{"gitId":"0liverkong"},"content":" case \"T\":","lastModifiedDate":"2024-01-30"},{"lineNumber":111,"author":{"gitId":"0liverkong"},"content":" taskType \u003d TaskType.TODO;","lastModifiedDate":"2024-01-30"},{"lineNumber":112,"author":{"gitId":"0liverkong"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":113,"author":{"gitId":"0liverkong"},"content":" default:","lastModifiedDate":"2024-01-30"},{"lineNumber":114,"author":{"gitId":"0liverkong"},"content":" throw new DookException(\"Invalid task type at \\\"\" + s + \"\\\".\");","lastModifiedDate":"2024-01-30"},{"lineNumber":115,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":116,"author":{"gitId":"0liverkong"},"content":" switch (isDoneString) {","lastModifiedDate":"2024-01-30"},{"lineNumber":117,"author":{"gitId":"0liverkong"},"content":" case \"X\":","lastModifiedDate":"2024-01-30"},{"lineNumber":118,"author":{"gitId":"0liverkong"},"content":" isDone \u003d true;","lastModifiedDate":"2024-01-30"},{"lineNumber":119,"author":{"gitId":"0liverkong"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":120,"author":{"gitId":"0liverkong"},"content":" case \" \":","lastModifiedDate":"2024-01-30"},{"lineNumber":121,"author":{"gitId":"0liverkong"},"content":" isDone \u003d false;","lastModifiedDate":"2024-01-30"},{"lineNumber":122,"author":{"gitId":"0liverkong"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":123,"author":{"gitId":"0liverkong"},"content":" default:","lastModifiedDate":"2024-01-30"},{"lineNumber":124,"author":{"gitId":"0liverkong"},"content":" throw new DookException(\"Oh nyo!! Invalid completion indicator at \\\"\" + s + \"\\\"!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":125,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":126,"author":{"gitId":"0liverkong"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":127,"author":{"gitId":"0liverkong"},"content":" switch (taskType) {","lastModifiedDate":"2024-01-30"},{"lineNumber":128,"author":{"gitId":"0liverkong"},"content":" case TODO:","lastModifiedDate":"2024-01-30"},{"lineNumber":129,"author":{"gitId":"0liverkong"},"content":" return new ToDo(description, isDone);","lastModifiedDate":"2024-01-30"},{"lineNumber":130,"author":{"gitId":"0liverkong"},"content":" case DEADLINE:","lastModifiedDate":"2024-01-30"},{"lineNumber":131,"author":{"gitId":"0liverkong"},"content":" details \u003d description.split(\" \\\\| \", 2);","lastModifiedDate":"2024-01-30"},{"lineNumber":132,"author":{"gitId":"0liverkong"},"content":" name \u003d details[0];","lastModifiedDate":"2024-01-30"},{"lineNumber":133,"author":{"gitId":"0liverkong"},"content":" String doBy \u003d details[1].split(\"by: \", 2)[1];","lastModifiedDate":"2024-01-30"},{"lineNumber":134,"author":{"gitId":"0liverkong"},"content":" return new Deadline(name, doBy, isDone);","lastModifiedDate":"2024-01-30"},{"lineNumber":135,"author":{"gitId":"0liverkong"},"content":" case EVENT:","lastModifiedDate":"2024-01-30"},{"lineNumber":136,"author":{"gitId":"0liverkong"},"content":" details \u003d description.split(\" \\\\| \", 2);","lastModifiedDate":"2024-01-30"},{"lineNumber":137,"author":{"gitId":"0liverkong"},"content":" name \u003d details[0];","lastModifiedDate":"2024-01-30"},{"lineNumber":138,"author":{"gitId":"0liverkong"},"content":" String[] startAndEnd \u003d details[1].split(\" to: \", 2);","lastModifiedDate":"2024-01-30"},{"lineNumber":139,"author":{"gitId":"0liverkong"},"content":" String start \u003d startAndEnd[0].split(\"from: \", 2)[1];","lastModifiedDate":"2024-01-30"},{"lineNumber":140,"author":{"gitId":"0liverkong"},"content":" String end \u003d startAndEnd[1];","lastModifiedDate":"2024-01-30"},{"lineNumber":141,"author":{"gitId":"0liverkong"},"content":" return new Event(name, start, end, isDone);","lastModifiedDate":"2024-01-30"},{"lineNumber":142,"author":{"gitId":"0liverkong"},"content":" default:","lastModifiedDate":"2024-01-30"},{"lineNumber":143,"author":{"gitId":"0liverkong"},"content":" throw new DookException(\"Oh nyo! Wrong format for \" + taskType + \" command in the file... :)\");","lastModifiedDate":"2024-01-30"},{"lineNumber":144,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":145,"author":{"gitId":"0liverkong"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":146,"author":{"gitId":"0liverkong"},"content":" throw new DookException(\"Oh nyo! Wrong format for \" + taskType + \" command in the file... :(\");","lastModifiedDate":"2024-01-30"},{"lineNumber":147,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":148,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":149,"author":{"gitId":"0liverkong"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"0liverkong":149}},{"path":"src/main/java/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"0liverkong"},"content":"import java.io.File;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"0liverkong"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"0liverkong"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"0liverkong"},"content":"import java.io.BufferedReader;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"0liverkong"},"content":"import java.io.FileReader;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"0liverkong"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"0liverkong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"0liverkong"},"content":"public class Storage {","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"0liverkong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"0liverkong"},"content":" private final String path;","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"0liverkong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"0liverkong"},"content":" Storage(String path) {","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"0liverkong"},"content":" this.path \u003d path;","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"0liverkong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"0liverkong"},"content":" public void write(TaskList tasks) throws DookException {","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"0liverkong"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"0liverkong"},"content":" File f \u003d new File(path);","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"0liverkong"},"content":" if (!f.exists()){","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"0liverkong"},"content":" f.createNewFile();","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"0liverkong"},"content":" FileWriter writer \u003d new FileWriter(path);","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"0liverkong"},"content":" writer.write(tasks.fileRepresentation());","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"0liverkong"},"content":" writer.close();","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"0liverkong"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"0liverkong"},"content":" throw new DookException(\"An error occured when writing to your files...:(\" + e);","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"0liverkong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"0liverkong"},"content":" public TaskList loadTaskListFromFile() throws IOException, DookException {","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"0liverkong"},"content":" TaskList taskList \u003d new TaskList();","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"0liverkong"},"content":" BufferedReader r;","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"0liverkong"},"content":" r \u003d new BufferedReader(new FileReader(path));","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"0liverkong"},"content":" String line \u003d r.readLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"0liverkong"},"content":" while (line !\u003d null) {","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"0liverkong"},"content":" taskList.addTask(Parser.parseFileLineToTask(line));","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"0liverkong"},"content":" line \u003d r.readLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"0liverkong"},"content":" r.close();","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"0liverkong"},"content":" return taskList;","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"0liverkong"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"0liverkong":42}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"0liverkong"},"content":"public abstract class Task {","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"0liverkong"},"content":" private String name;","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"0liverkong"},"content":" protected boolean isDone;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"0liverkong"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"0liverkong"},"content":" Task(String name) {","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"0liverkong"},"content":" this(name, false);","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"0liverkong"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"0liverkong"},"content":" Task(String name, boolean done) {","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"0liverkong"},"content":" this.name \u003d name;","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"0liverkong"},"content":" this.isDone \u003d done;","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":13,"author":{"gitId":"0liverkong"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":14,"author":{"gitId":"0liverkong"},"content":" public void markAsDone() {","lastModifiedDate":"2024-01-22"},{"lineNumber":15,"author":{"gitId":"0liverkong"},"content":" this.isDone \u003d true;","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":17,"author":{"gitId":"0liverkong"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":18,"author":{"gitId":"0liverkong"},"content":" public void markAsNotDone() {","lastModifiedDate":"2024-01-22"},{"lineNumber":19,"author":{"gitId":"0liverkong"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"0liverkong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"0liverkong"},"content":" protected String getStatusIcon() {","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"0liverkong"},"content":" return (this.isDone ? \"X\" : \" \");","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":25,"author":{"gitId":"0liverkong"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":26,"author":{"gitId":"0liverkong"},"content":" protected String getDescription() {","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"0liverkong"},"content":" return this.name;","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":29,"author":{"gitId":"0liverkong"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":30,"author":{"gitId":"0liverkong"},"content":" public abstract String fileRepresentation();","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"0liverkong"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":32,"author":{"gitId":"0liverkong"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":33,"author":{"gitId":"0liverkong"},"content":" return String.format(\"[%s] %s\", getStatusIcon(), this.name);","lastModifiedDate":"2024-01-22"},{"lineNumber":34,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":35,"author":{"gitId":"0liverkong"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"0liverkong":35}},{"path":"src/main/java/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"0liverkong"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"0liverkong"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"0liverkong"},"content":"public class TaskList {","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"0liverkong"},"content":" private ArrayList\u003cTask\u003e tasks;","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"0liverkong"},"content":" private static int count \u003d 0;","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"0liverkong"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"0liverkong"},"content":" TaskList() {","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"0liverkong"},"content":" this.tasks \u003d new ArrayList\u003cTask\u003e();","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"0liverkong"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"0liverkong"},"content":" public void addTask(Task t) {","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"0liverkong"},"content":" tasks.add(t);","lastModifiedDate":"2024-01-22"},{"lineNumber":13,"author":{"gitId":"0liverkong"},"content":" count++;","lastModifiedDate":"2024-01-22"},{"lineNumber":14,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":15,"author":{"gitId":"0liverkong"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":16,"author":{"gitId":"0liverkong"},"content":" public void remove(int i) {","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"0liverkong"},"content":" this.tasks.remove(i);","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"0liverkong"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"0liverkong"},"content":" public Task get(int i) {","lastModifiedDate":"2024-01-22"},{"lineNumber":21,"author":{"gitId":"0liverkong"},"content":" return this.tasks.get(i);","lastModifiedDate":"2024-01-22"},{"lineNumber":22,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":23,"author":{"gitId":"0liverkong"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":24,"author":{"gitId":"0liverkong"},"content":" public int size() {","lastModifiedDate":"2024-01-22"},{"lineNumber":25,"author":{"gitId":"0liverkong"},"content":" return this.tasks.size();","lastModifiedDate":"2024-01-22"},{"lineNumber":26,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":27,"author":{"gitId":"0liverkong"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":28,"author":{"gitId":"0liverkong"},"content":" public void printStatus() {","lastModifiedDate":"2024-01-22"},{"lineNumber":29,"author":{"gitId":"0liverkong"},"content":" if (count \u003d\u003d 0) {","lastModifiedDate":"2024-01-22"},{"lineNumber":30,"author":{"gitId":"0liverkong"},"content":" System.out.println(\"Now you have no tasks on the list :(((\");","lastModifiedDate":"2024-01-22"},{"lineNumber":31,"author":{"gitId":"0liverkong"},"content":" } else if (count \u003d\u003d 1) {","lastModifiedDate":"2024-01-22"},{"lineNumber":32,"author":{"gitId":"0liverkong"},"content":" System.out.println(\"You have 1 task on the list!\");","lastModifiedDate":"2024-01-22"},{"lineNumber":33,"author":{"gitId":"0liverkong"},"content":" } else {","lastModifiedDate":"2024-01-22"},{"lineNumber":34,"author":{"gitId":"0liverkong"},"content":" System.out.printf(\"You have %d tasks on the list!%n\", count);","lastModifiedDate":"2024-01-22"},{"lineNumber":35,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":36,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":37,"author":{"gitId":"0liverkong"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":38,"author":{"gitId":"0liverkong"},"content":" public String fileRepresentation() {","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"0liverkong"},"content":" ArrayList\u003cString\u003e a \u003d new ArrayList\u003cString\u003e();","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"0liverkong"},"content":" for (Task t : this.tasks) {","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"0liverkong"},"content":" a.add(t.fileRepresentation());","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"0liverkong"},"content":" return String.join(\"\\n\", a);","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"0liverkong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"0liverkong"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":47,"author":{"gitId":"0liverkong"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":48,"author":{"gitId":"0liverkong"},"content":" ArrayList\u003cString\u003e a \u003d new ArrayList\u003cString\u003e();","lastModifiedDate":"2024-01-22"},{"lineNumber":49,"author":{"gitId":"0liverkong"},"content":" for (int i \u003d 0; i \u003c this.tasks.size(); i++) {","lastModifiedDate":"2024-01-22"},{"lineNumber":50,"author":{"gitId":"0liverkong"},"content":" a.add(String.format(\"%d. %s\",","lastModifiedDate":"2024-01-22"},{"lineNumber":51,"author":{"gitId":"0liverkong"},"content":" i + 1,","lastModifiedDate":"2024-01-22"},{"lineNumber":52,"author":{"gitId":"0liverkong"},"content":" this.tasks.get(i)));","lastModifiedDate":"2024-01-22"},{"lineNumber":53,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":54,"author":{"gitId":"0liverkong"},"content":" return String.join(\"\\n\", a);","lastModifiedDate":"2024-01-22"},{"lineNumber":55,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":56,"author":{"gitId":"0liverkong"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"0liverkong":56}},{"path":"src/main/java/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"0liverkong"},"content":"public class ToDo extends Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"0liverkong"},"content":" ToDo(String name) {","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"0liverkong"},"content":" super(name);","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"0liverkong"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"0liverkong"},"content":" public ToDo(String name, boolean isDone) {","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"0liverkong"},"content":" this(name);","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"0liverkong"},"content":" this.isDone \u003d isDone;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"0liverkong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"0liverkong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"0liverkong"},"content":" public String fileRepresentation() {","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"0liverkong"},"content":" return String.format(\"T | %s | %s\",","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"0liverkong"},"content":" this.getStatusIcon(),","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"0liverkong"},"content":" this.getDescription());","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"0liverkong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"0liverkong"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":19,"author":{"gitId":"0liverkong"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":20,"author":{"gitId":"0liverkong"},"content":" return String.format(\"[T]%s\", super.toString());","lastModifiedDate":"2024-01-22"},{"lineNumber":21,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":22,"author":{"gitId":"0liverkong"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"0liverkong":22}},{"path":"src/main/java/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"0liverkong"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"0liverkong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"0liverkong"},"content":"public class Ui {","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"0liverkong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"0liverkong"},"content":" private static final String LINE_SEPARATOR \u003d \"____________________________________________________________\";","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"0liverkong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"0liverkong"},"content":" public void printSeparator() {","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"0liverkong"},"content":" System.out.println(LINE_SEPARATOR);","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"0liverkong"},"content":" public void introduce() {","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"0liverkong"},"content":" String logo \u003d \" ____ _ \\n\"","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"0liverkong"},"content":" + \"| _ \\\\ ___ ___ | | __ ╱|、\\n\"","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"0liverkong"},"content":" + \"| | | |/ _ \\\\ / _ \\\\| |/ / (˚ˎ 。7 \\n\"","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"0liverkong"},"content":" + \"| |_| | |_| | |_| | \u003c |、˜〵 \\n\"","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"0liverkong"},"content":" + \"|____/ \\\\___/ \\\\___/|_|\\\\_\\\\ じしˍ,)ノ\\n\";","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"0liverkong"},"content":" printSeparator();","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"0liverkong"},"content":" System.out.println(\"Hello from Dook! :D meow\\n\" + logo);","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"0liverkong"},"content":" System.out.println(\"What can I do for you? uwu\");","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"0liverkong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"0liverkong"},"content":" public void printException(Exception e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"0liverkong"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"0liverkong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"0liverkong"},"content":" public void println(String s) {","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"0liverkong"},"content":" System.out.println(s);","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"0liverkong"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"0liverkong":28}},{"path":"src/main/java/UnmarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"0liverkong"},"content":"public class UnmarkCommand extends Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"0liverkong"},"content":" private final int positionToUnmark;","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"0liverkong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"0liverkong"},"content":" UnmarkCommand(int positionToUnmark) {","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"0liverkong"},"content":" this.positionToUnmark \u003d positionToUnmark;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"0liverkong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"0liverkong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"0liverkong"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws DookException {","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"0liverkong"},"content":" Task toUnmark;","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"0liverkong"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"0liverkong"},"content":" toUnmark \u003d tasks.get(positionToUnmark - 1);","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"0liverkong"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"0liverkong"},"content":" DookException err;","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"0liverkong"},"content":" if (tasks.size() \u003d\u003d 0) {","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"0liverkong"},"content":" err \u003d new DookException(\"Nooo! You don\u0027t have any tasks to unmark :(\");","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"0liverkong"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"0liverkong"},"content":" err \u003d new DookException(String.format(\"Nooo! \" +","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"0liverkong"},"content":" \"You have %d tasks!\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"0liverkong"},"content":" \" Valid inputs for unmark is in the range [1 - %d]\",","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"0liverkong"},"content":" tasks.size(), tasks.size()));","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"0liverkong"},"content":" throw err;","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"0liverkong"},"content":" toUnmark.markAsNotDone();","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"0liverkong"},"content":" ui.println(\"Lazy bum. \u003e:( I\u0027ve marked this task as done:\");","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"0liverkong"},"content":" ui.println(toUnmark.toString());","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"0liverkong"},"content":" storage.write(tasks);","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"0liverkong"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"0liverkong":30}},{"path":"text-ui-test/data/dook.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"0liverkong"},"content":"T | | borrow book","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"0liverkong"},"content":"T | | read book","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"0liverkong"},"content":"T | | join sports club","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"0liverkong"},"content":"D | X | return book | by: June 6th","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"0liverkong"},"content":"E | | project meeting | from: Mon 2pm to: 4pm","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"0liverkong":5}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"0liverkong"},"content":"todo borrow book","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"0liverkong"},"content":"todo read book","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"0liverkong"},"content":"todo join sports club","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"0liverkong"},"content":"deadline return book /by June 6th","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"0liverkong"},"content":"event project meeting /from Aug 6th 2pm /to 4pm","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"0liverkong"},"content":"deadline return book /by Sunday","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"0liverkong"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"0liverkong"},"content":"list","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"0liverkong"},"content":"mark1","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"0liverkong"},"content":"mark 1","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"0liverkong"},"content":"unmark 1","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"0liverkong"},"content":"mark 9","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"0liverkong"},"content":"unmark 10","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"0liverkong"},"content":"mark 5","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"0liverkong"},"content":"unmark 8","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"0liverkong"},"content":"unmark","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"0liverkong"},"content":"delete 8","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"0liverkong"},"content":"delete 8","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"0liverkong"},"content":"delete 5","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"0liverkong"},"content":"list","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"0liverkong"},"content":"bye","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"0liverkong":21}},{"path":"text-ui-test/runtest.sh","fileType":"sh","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"#!/usr/bin/env bash","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"# create bin directory if it doesn\u0027t exist","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"if [ ! -d \"../bin\" ]","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":" mkdir ../bin","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"# delete output from previous run","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"if [ -e \"./ACTUAL.TXT\" ]","lastModifiedDate":"2020-05-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":" rm ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"# compile the code into the bin folder, terminates if error occurred","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"if ! javac -cp ../src/main/java -Xlint:none -d ../bin ../src/main/java/*.java","lastModifiedDate":"2020-08-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" echo \"********** BUILD FAILURE **********\"","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" exit 1","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":"# run the program, feed commands from input.txt file and redirect the output to the ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"0liverkong"},"content":"java -classpath ../bin Dook \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":"# convert to UNIX format","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":"cp EXPECTED.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":"dos2unix ACTUAL.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"# compare the output to the expected output","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"diff ACTUAL.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":"if [ $? -eq 0 ]","lastModifiedDate":"2020-05-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":" echo \"Test result: PASSED\"","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":" exit 0","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":"else","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" echo \"Test result: FAILED\"","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" exit 1","lastModifiedDate":"2020-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"0liverkong":1,"-":37}}] diff --git a/0liverkong_ip_master/commits.json b/0liverkong_ip_master/commits.json index 2b6c8665..f864695d 100644 --- a/0liverkong_ip_master/commits.json +++ b/0liverkong_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"0liverkong":[{"date":"2024-01-22","commitResults":[{"hash":"0a61d8dfac4461c78f757c8932ac3a0f8affd7da","isMergeCommit":false,"messageTitle":"Completed Week 2 Level 0","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":12,"deletions":6}}},{"hash":"d7a18ec7d90b8d54bd83415404da2a616510c068","isMergeCommit":false,"messageTitle":"Completed Week 2 Level 1","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":2}}},{"hash":"f604c26805d9a90534b4d8f55fa1080901961ceb","isMergeCommit":false,"messageTitle":"Completed Week 2 Level 2","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":2}}},{"hash":"8441cb5c27a9cff4edb1e4a6989cf563efd2b4f2","isMergeCommit":false,"messageTitle":"Completed Week 2 Level 3","messageBody":"","tags":["Level-4","Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":84,"deletions":6}}},{"hash":"107270f85201e5e57d77a987afa14e169c7c3aeb","isMergeCommit":false,"messageTitle":"Completed Week 2 Level 4","messageBody":"","tags":["Level-5","Level-4.1"],"fileTypesAndContributionMap":{"java":{"insertions":76,"deletions":11}}}]},{"date":"2024-01-23","commitResults":[{"hash":"9f020430a7e115b989daaa84476d699d3f8045dd","isMergeCommit":false,"messageTitle":"Completed Week 2 Level 5","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":143,"deletions":67}}}]},{"date":"2024-01-24","commitResults":[{"hash":"25eb10a4eea0c29d6c3c72e1fbfcbc15a5b7f9cd","isMergeCommit":false,"messageTitle":"completed Week 2 Level 6","messageBody":"","tags":["Level-6","A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":155,"deletions":56}}}]},{"date":"2024-01-25","commitResults":[{"hash":"a583e3f2ef31127afa56d8661df95d082faed491","isMergeCommit":false,"messageTitle":"Small cleanup","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":3}}},{"hash":"17bfac4b13c4240306895f31ed9c80af53a713f3","isMergeCommit":false,"messageTitle":"Fix typo","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":2}}},{"hash":"dd3aa3cc53ea363088a043f5b8e43260d2d14ae7","isMergeCommit":false,"messageTitle":"Completed Week 2 TextUITesting","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":20,"deletions":0},"java":{"insertions":6,"deletions":3},"sh":{"insertions":1,"deletions":1}}}]},{"date":"2024-01-30","commitResults":[{"hash":"f4a813de98e28b51ac3ad8140b670ec2f0d672fd","isMergeCommit":false,"messageTitle":"Change indentation to match style convention","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":24,"deletions":24}}}]}]},"authorFileTypeContributionMap":{"0liverkong":{"java":357,"md":0,"fxml":0,"sh":1,"bat":0,"gradle":0,"txt":20}},"authorContributionVariance":{"0liverkong":8160.576},"authorDisplayNameMap":{"0liverkong":"CS2103T-W08-1 OLIV.. LOK"}} +{"authorDailyContributionsMap":{"0liverkong":[{"date":"2024-01-22","commitResults":[{"hash":"0a61d8dfac4461c78f757c8932ac3a0f8affd7da","isMergeCommit":false,"messageTitle":"Completed Week 2 Level 0","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":12,"deletions":6}}},{"hash":"d7a18ec7d90b8d54bd83415404da2a616510c068","isMergeCommit":false,"messageTitle":"Completed Week 2 Level 1","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":2}}},{"hash":"f604c26805d9a90534b4d8f55fa1080901961ceb","isMergeCommit":false,"messageTitle":"Completed Week 2 Level 2","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":2}}},{"hash":"8441cb5c27a9cff4edb1e4a6989cf563efd2b4f2","isMergeCommit":false,"messageTitle":"Completed Week 2 Level 3","messageBody":"","tags":["Level-4","Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":84,"deletions":6}}},{"hash":"107270f85201e5e57d77a987afa14e169c7c3aeb","isMergeCommit":false,"messageTitle":"Completed Week 2 Level 4","messageBody":"","tags":["Level-5","Level-4.1"],"fileTypesAndContributionMap":{"java":{"insertions":76,"deletions":11}}}]},{"date":"2024-01-23","commitResults":[{"hash":"9f020430a7e115b989daaa84476d699d3f8045dd","isMergeCommit":false,"messageTitle":"Completed Week 2 Level 5","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":143,"deletions":67}}}]},{"date":"2024-01-24","commitResults":[{"hash":"25eb10a4eea0c29d6c3c72e1fbfcbc15a5b7f9cd","isMergeCommit":false,"messageTitle":"completed Week 2 Level 6","messageBody":"","tags":["Level-6","A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":155,"deletions":56}}}]},{"date":"2024-01-25","commitResults":[{"hash":"a583e3f2ef31127afa56d8661df95d082faed491","isMergeCommit":false,"messageTitle":"Small cleanup","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":3}}},{"hash":"17bfac4b13c4240306895f31ed9c80af53a713f3","isMergeCommit":false,"messageTitle":"Fix typo","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":2}}},{"hash":"dd3aa3cc53ea363088a043f5b8e43260d2d14ae7","isMergeCommit":false,"messageTitle":"Completed Week 2 TextUITesting","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":20,"deletions":0},"java":{"insertions":6,"deletions":3},"sh":{"insertions":1,"deletions":1}}}]},{"date":"2024-01-30","commitResults":[{"hash":"f4a813de98e28b51ac3ad8140b670ec2f0d672fd","isMergeCommit":false,"messageTitle":"Change indentation to match style convention","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":24,"deletions":24}}},{"hash":"aee896e7f8a43edda69c5c1eb18f0876fdcfe329","isMergeCommit":false,"messageTitle":"Separate Dook and Ui classes","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":32,"deletions":19}}},{"hash":"0e31bbfeadcbca3bb5a4440fe11bd1c6e3b80c13","isMergeCommit":false,"messageTitle":"Create Command and Parser classes","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":12,"deletions":0}}},{"hash":"3e4e1838d997cb4562e5fc2c460aad0f74ab1afb","isMergeCommit":false,"messageTitle":"Add OOP functionality for Command and Parser classes and subclasses","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":225,"deletions":199}}},{"hash":"0d65bdb8a6be4ffb0c97417ad1ac68f429e4c8ce","isMergeCommit":false,"messageTitle":"Add functionality to save on bye command","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":7,"deletions":0},"java":{"insertions":39,"deletions":9}}},{"hash":"d929fd1f3f49da60f6fb11603bc34bfb103cb7e5","isMergeCommit":false,"messageTitle":"Add file reading and writing functionality and more OOP abstraction","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"txt":{"insertions":11,"deletions":6},"java":{"insertions":175,"deletions":39}}}]}]},"authorFileTypeContributionMap":{"0liverkong":{"java":574,"md":0,"fxml":0,"sh":1,"bat":0,"gradle":0,"txt":32}},"authorContributionVariance":{"0liverkong":52119.582},"authorDisplayNameMap":{"0liverkong":"CS2103T-W08-1 OLIV.. LOK"}} diff --git a/Anant1902_ip_master/authorship.json b/Anant1902_ip_master/authorship.json index f2bba84a..d8a52ab8 100644 --- a/Anant1902_ip_master/authorship.json +++ b/Anant1902_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"build.gradle","fileType":"gradle","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"plugins {","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":" id \u0027java\u0027","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":" id \u0027application\u0027","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":" id \u0027com.github.johnrengelman.shadow\u0027 version \u00277.1.2\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"repositories {","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":" mavenCentral()","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"dependencies {","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":" testImplementation group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-api\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":" testRuntimeOnly group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-engine\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"Anant1902"},"content":" mainClass.set(\"drake.Drake\")","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"Anant1902"},"content":" archiveBaseName \u003d \"drake\"","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":"run{","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"-":40,"Anant1902":2}},{"path":"src/main/java/drake/Drake.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Anant1902"},"content":"package drake;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"Anant1902"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"Anant1902"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"Anant1902"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"Anant1902"},"content":"import drake.task.Deadline;","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"Anant1902"},"content":"import drake.task.Event;","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"Anant1902"},"content":"import drake.task.Task;","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"Anant1902"},"content":"import drake.task.TaskList;","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"Anant1902"},"content":"import drake.task.Todo;","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"Anant1902"},"content":"enum Command {","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"Anant1902"},"content":" BYE, LIST, MARK, UNMARK, TODO, DEADLINE, EVENT, DELETE, INVALID;","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"Anant1902"},"content":" ","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"Anant1902"},"content":" // Method to get the appropriate enum value from a string input","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"Anant1902"},"content":" public static Command fromString(String commandString) {","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"Anant1902"},"content":" switch (commandString.toLowerCase()) {","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"Anant1902"},"content":" case \"bye\":","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"Anant1902"},"content":" return BYE;","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"Anant1902"},"content":" case \"list\":","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"Anant1902"},"content":" return LIST;","lastModifiedDate":"2024-01-24"},{"lineNumber":23,"author":{"gitId":"Anant1902"},"content":" case \"mark\":","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"Anant1902"},"content":" return MARK;","lastModifiedDate":"2024-01-24"},{"lineNumber":25,"author":{"gitId":"Anant1902"},"content":" case \"unmark\":","lastModifiedDate":"2024-01-24"},{"lineNumber":26,"author":{"gitId":"Anant1902"},"content":" return UNMARK;","lastModifiedDate":"2024-01-24"},{"lineNumber":27,"author":{"gitId":"Anant1902"},"content":" case \"todo\":","lastModifiedDate":"2024-01-24"},{"lineNumber":28,"author":{"gitId":"Anant1902"},"content":" return TODO;","lastModifiedDate":"2024-01-24"},{"lineNumber":29,"author":{"gitId":"Anant1902"},"content":" case \"deadline\":","lastModifiedDate":"2024-01-24"},{"lineNumber":30,"author":{"gitId":"Anant1902"},"content":" return DEADLINE;","lastModifiedDate":"2024-01-24"},{"lineNumber":31,"author":{"gitId":"Anant1902"},"content":" case \"event\":","lastModifiedDate":"2024-01-24"},{"lineNumber":32,"author":{"gitId":"Anant1902"},"content":" return EVENT;","lastModifiedDate":"2024-01-24"},{"lineNumber":33,"author":{"gitId":"Anant1902"},"content":" case \"delete\":","lastModifiedDate":"2024-01-24"},{"lineNumber":34,"author":{"gitId":"Anant1902"},"content":" return DELETE;","lastModifiedDate":"2024-01-24"},{"lineNumber":35,"author":{"gitId":"Anant1902"},"content":" default:","lastModifiedDate":"2024-01-24"},{"lineNumber":36,"author":{"gitId":"Anant1902"},"content":" return INVALID;","lastModifiedDate":"2024-01-24"},{"lineNumber":37,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":38,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":39,"author":{"gitId":"Anant1902"},"content":"}","lastModifiedDate":"2024-01-24"},{"lineNumber":40,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":41,"author":{"gitId":"Anant1902"},"content":"public class Drake {","lastModifiedDate":"2024-01-23"},{"lineNumber":42,"author":{"gitId":"Anant1902"},"content":" private Ui ui;","lastModifiedDate":"2024-01-28"},{"lineNumber":43,"author":{"gitId":"Anant1902"},"content":" private Storage storage;","lastModifiedDate":"2024-01-28"},{"lineNumber":44,"author":{"gitId":"Anant1902"},"content":" private TaskList taskList;","lastModifiedDate":"2024-01-28"},{"lineNumber":45,"author":{"gitId":"Anant1902"},"content":" private boolean isRunning; ","lastModifiedDate":"2024-01-28"},{"lineNumber":46,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":47,"author":{"gitId":"Anant1902"},"content":" public Drake(String FILE_PATH) {","lastModifiedDate":"2024-01-28"},{"lineNumber":48,"author":{"gitId":"Anant1902"},"content":" ui \u003d new Ui();","lastModifiedDate":"2024-01-28"},{"lineNumber":49,"author":{"gitId":"Anant1902"},"content":" storage \u003d new Storage(FILE_PATH);","lastModifiedDate":"2024-01-28"},{"lineNumber":50,"author":{"gitId":"Anant1902"},"content":" taskList \u003d new TaskList(storage.loadTasks());","lastModifiedDate":"2024-01-28"},{"lineNumber":51,"author":{"gitId":"Anant1902"},"content":" isRunning \u003d true;","lastModifiedDate":"2024-01-28"},{"lineNumber":52,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":53,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":54,"author":{"gitId":"Anant1902"},"content":" public void run() {","lastModifiedDate":"2024-01-28"},{"lineNumber":55,"author":{"gitId":"Anant1902"},"content":" Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-24"},{"lineNumber":56,"author":{"gitId":"Anant1902"},"content":" ui.showWelcome();","lastModifiedDate":"2024-01-28"},{"lineNumber":57,"author":{"gitId":"Anant1902"},"content":" ","lastModifiedDate":"2024-01-24"},{"lineNumber":58,"author":{"gitId":"Anant1902"},"content":" while (isRunning) {","lastModifiedDate":"2024-01-28"},{"lineNumber":59,"author":{"gitId":"Anant1902"},"content":" String input \u003d scanner.nextLine().trim();","lastModifiedDate":"2024-01-24"},{"lineNumber":60,"author":{"gitId":"Anant1902"},"content":" String[] words \u003d input.split(\" \", 2);","lastModifiedDate":"2024-01-24"},{"lineNumber":61,"author":{"gitId":"Anant1902"},"content":" String commandWord \u003d words[0];","lastModifiedDate":"2024-01-24"},{"lineNumber":62,"author":{"gitId":"Anant1902"},"content":" Command command \u003d Command.fromString(commandWord);","lastModifiedDate":"2024-01-24"},{"lineNumber":63,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":64,"author":{"gitId":"Anant1902"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":65,"author":{"gitId":"Anant1902"},"content":" switch (command) {","lastModifiedDate":"2024-01-24"},{"lineNumber":66,"author":{"gitId":"Anant1902"},"content":" case BYE:","lastModifiedDate":"2024-01-24"},{"lineNumber":67,"author":{"gitId":"Anant1902"},"content":" isRunning \u003d false;","lastModifiedDate":"2024-01-28"},{"lineNumber":68,"author":{"gitId":"Anant1902"},"content":" storage.saveTasks(taskList.getTasks());","lastModifiedDate":"2024-01-28"},{"lineNumber":69,"author":{"gitId":"Anant1902"},"content":" ui.showGoodbye();","lastModifiedDate":"2024-01-28"},{"lineNumber":70,"author":{"gitId":"Anant1902"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":71,"author":{"gitId":"Anant1902"},"content":" case LIST:","lastModifiedDate":"2024-01-24"},{"lineNumber":72,"author":{"gitId":"Anant1902"},"content":" ui.showTaskList(taskList);","lastModifiedDate":"2024-01-28"},{"lineNumber":73,"author":{"gitId":"Anant1902"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":74,"author":{"gitId":"Anant1902"},"content":" case MARK:","lastModifiedDate":"2024-01-24"},{"lineNumber":75,"author":{"gitId":"Anant1902"},"content":" int markIndex \u003d Parser.parseTaskIndex(input);","lastModifiedDate":"2024-01-28"},{"lineNumber":76,"author":{"gitId":"Anant1902"},"content":" taskList.markTask(markIndex);","lastModifiedDate":"2024-01-28"},{"lineNumber":77,"author":{"gitId":"Anant1902"},"content":" ui.showMarkTask(taskList.getTask(markIndex));","lastModifiedDate":"2024-01-28"},{"lineNumber":78,"author":{"gitId":"Anant1902"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":79,"author":{"gitId":"Anant1902"},"content":" case UNMARK:","lastModifiedDate":"2024-01-24"},{"lineNumber":80,"author":{"gitId":"Anant1902"},"content":" int unmarkIndex \u003d Parser.parseTaskIndex(input);","lastModifiedDate":"2024-01-28"},{"lineNumber":81,"author":{"gitId":"Anant1902"},"content":" taskList.unmarkTask(unmarkIndex);","lastModifiedDate":"2024-01-28"},{"lineNumber":82,"author":{"gitId":"Anant1902"},"content":" ui.showUnmarkTask(taskList.getTask(unmarkIndex));","lastModifiedDate":"2024-01-28"},{"lineNumber":83,"author":{"gitId":"Anant1902"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":84,"author":{"gitId":"Anant1902"},"content":" case TODO:","lastModifiedDate":"2024-01-24"},{"lineNumber":85,"author":{"gitId":"Anant1902"},"content":" String todoDescription \u003d Parser.parseDescription(input);","lastModifiedDate":"2024-01-28"},{"lineNumber":86,"author":{"gitId":"Anant1902"},"content":" Todo newTodo \u003d new Todo(todoDescription);","lastModifiedDate":"2024-01-28"},{"lineNumber":87,"author":{"gitId":"Anant1902"},"content":" taskList.addTask(newTodo);","lastModifiedDate":"2024-01-28"},{"lineNumber":88,"author":{"gitId":"Anant1902"},"content":" ui.showAddTask(newTodo, taskList.size());","lastModifiedDate":"2024-01-28"},{"lineNumber":89,"author":{"gitId":"Anant1902"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":90,"author":{"gitId":"Anant1902"},"content":" case DEADLINE:","lastModifiedDate":"2024-01-24"},{"lineNumber":91,"author":{"gitId":"Anant1902"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":92,"author":{"gitId":"Anant1902"},"content":" Object[] deadlineDetails \u003d Parser.parseDeadline(input);","lastModifiedDate":"2024-01-28"},{"lineNumber":93,"author":{"gitId":"Anant1902"},"content":" Deadline newDeadline \u003d new Deadline((String) deadlineDetails[0], (LocalDateTime) deadlineDetails[1]);","lastModifiedDate":"2024-01-28"},{"lineNumber":94,"author":{"gitId":"Anant1902"},"content":" taskList.addTask(newDeadline);","lastModifiedDate":"2024-01-28"},{"lineNumber":95,"author":{"gitId":"Anant1902"},"content":" ui.showAddTask(newDeadline, taskList.size());","lastModifiedDate":"2024-01-28"},{"lineNumber":96,"author":{"gitId":"Anant1902"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":97,"author":{"gitId":"Anant1902"},"content":" ui.showError(\"Oops, format error! Type in a date in the form yy-mm-dd and try again!\");","lastModifiedDate":"2024-01-28"},{"lineNumber":98,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":99,"author":{"gitId":"Anant1902"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":100,"author":{"gitId":"Anant1902"},"content":" case EVENT:","lastModifiedDate":"2024-01-24"},{"lineNumber":101,"author":{"gitId":"Anant1902"},"content":" String[] eventDetails \u003d Parser.parseEvent(input);","lastModifiedDate":"2024-01-28"},{"lineNumber":102,"author":{"gitId":"Anant1902"},"content":" Event newEvent \u003d new Event(eventDetails[0], eventDetails[1], eventDetails[2]);","lastModifiedDate":"2024-01-28"},{"lineNumber":103,"author":{"gitId":"Anant1902"},"content":" taskList.addTask(newEvent);","lastModifiedDate":"2024-01-28"},{"lineNumber":104,"author":{"gitId":"Anant1902"},"content":" ui.showAddTask(newEvent, taskList.size());","lastModifiedDate":"2024-01-28"},{"lineNumber":105,"author":{"gitId":"Anant1902"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":106,"author":{"gitId":"Anant1902"},"content":" case DELETE:","lastModifiedDate":"2024-01-24"},{"lineNumber":107,"author":{"gitId":"Anant1902"},"content":" int deleteIndex \u003d Parser.parseTaskIndex(input);","lastModifiedDate":"2024-01-28"},{"lineNumber":108,"author":{"gitId":"Anant1902"},"content":" Task deletedTask \u003d taskList.deleteTask(deleteIndex);","lastModifiedDate":"2024-01-28"},{"lineNumber":109,"author":{"gitId":"Anant1902"},"content":" ui.showDeleteTask(deletedTask, taskList.size());","lastModifiedDate":"2024-01-28"},{"lineNumber":110,"author":{"gitId":"Anant1902"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":111,"author":{"gitId":"Anant1902"},"content":" case INVALID:","lastModifiedDate":"2024-01-24"},{"lineNumber":112,"author":{"gitId":"Anant1902"},"content":" throw new NotValidCommand(\"That\u0027s not a valid command!\");","lastModifiedDate":"2024-01-28"},{"lineNumber":113,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":114,"author":{"gitId":"Anant1902"},"content":" } catch (NotValidCommand | TodoLeftBlank e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":115,"author":{"gitId":"Anant1902"},"content":" ui.showError(e.getMessage());","lastModifiedDate":"2024-01-28"},{"lineNumber":116,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":117,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":118,"author":{"gitId":"Anant1902"},"content":" scanner.close();","lastModifiedDate":"2024-01-24"},{"lineNumber":119,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":120,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":121,"author":{"gitId":"Anant1902"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-01-28"},{"lineNumber":122,"author":{"gitId":"Anant1902"},"content":" new Drake(\"./list.dat\").run();","lastModifiedDate":"2024-01-28"},{"lineNumber":123,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":124,"author":{"gitId":"Anant1902"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"Anant1902":124}},{"path":"src/main/java/drake/NotValidCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Anant1902"},"content":"package drake;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"Anant1902"},"content":"public class NotValidCommand extends Exception {","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"Anant1902"},"content":" public NotValidCommand(String message) {","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"Anant1902"},"content":" super(message);","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"Anant1902"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"Anant1902":6}},{"path":"src/main/java/drake/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Anant1902"},"content":"package drake;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"Anant1902"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"Anant1902"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"Anant1902"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"Anant1902"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"Anant1902"},"content":"public class Parser {","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"Anant1902"},"content":" public static Command parseCommand(String input) {","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"Anant1902"},"content":" String[] words \u003d input.split(\" \", 2);","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"Anant1902"},"content":" String commandWord \u003d words[0];","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"Anant1902"},"content":" return Command.fromString(commandWord);","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"Anant1902"},"content":" public static int parseTaskIndex(String input) throws NumberFormatException {","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"Anant1902"},"content":" String[] words \u003d input.split(\" \", 2);","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"Anant1902"},"content":" if (words.length \u003c 2) {","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"Anant1902"},"content":" throw new IllegalArgumentException(\"No task index provided.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"Anant1902"},"content":" return Integer.parseInt(words[1]) - 1; // Subtract 1 to convert to zero-based index","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"Anant1902"},"content":" public static String parseDescription(String input) {","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"Anant1902"},"content":" String[] parts \u003d input.split(\" \", 2);","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"Anant1902"},"content":" if (parts.length \u003c 2 || parts[1].trim().isEmpty()) {","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"Anant1902"},"content":" throw new TodoLeftBlank(\"Looks like you left the description of the todo empty. This isn\u0027t allowed!\");","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"Anant1902"},"content":" return parts[1].trim();","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"Anant1902"},"content":" public static Object[] parseDeadline(String input) throws DateTimeParseException {","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"Anant1902"},"content":" String[] parts \u003d input.split(\" /by \");","lastModifiedDate":"2024-01-28"},{"lineNumber":33,"author":{"gitId":"Anant1902"},"content":" if (parts.length \u003c 2) {","lastModifiedDate":"2024-01-28"},{"lineNumber":34,"author":{"gitId":"Anant1902"},"content":" throw new IllegalArgumentException(\"Deadline time not provided.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":35,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"Anant1902"},"content":" String description \u003d parts[0].substring(parts[0].indexOf(\u0027 \u0027) + 1).trim();","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"Anant1902"},"content":" LocalDate date \u003d LocalDate.parse(parts[1], DateTimeFormatter.ofPattern(\"yyyy-MM-dd\"));","lastModifiedDate":"2024-01-28"},{"lineNumber":38,"author":{"gitId":"Anant1902"},"content":" LocalDateTime by \u003d date.atStartOfDay();","lastModifiedDate":"2024-01-28"},{"lineNumber":39,"author":{"gitId":"Anant1902"},"content":" return new Object[]{description, by};","lastModifiedDate":"2024-01-28"},{"lineNumber":40,"author":{"gitId":"Anant1902"},"content":" ","lastModifiedDate":"2024-01-28"},{"lineNumber":41,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":42,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":43,"author":{"gitId":"Anant1902"},"content":" public static String[] parseEvent(String input) {","lastModifiedDate":"2024-01-28"},{"lineNumber":44,"author":{"gitId":"Anant1902"},"content":" String[] parts \u003d input.substring(6).split(\"/\");","lastModifiedDate":"2024-01-28"},{"lineNumber":45,"author":{"gitId":"Anant1902"},"content":" String title \u003d parts[0];","lastModifiedDate":"2024-01-28"},{"lineNumber":46,"author":{"gitId":"Anant1902"},"content":" String from \u003d \"\";","lastModifiedDate":"2024-01-28"},{"lineNumber":47,"author":{"gitId":"Anant1902"},"content":" String to \u003d \"\";","lastModifiedDate":"2024-01-28"},{"lineNumber":48,"author":{"gitId":"Anant1902"},"content":" ","lastModifiedDate":"2024-01-28"},{"lineNumber":49,"author":{"gitId":"Anant1902"},"content":" for (int i \u003d 1; i \u003c parts.length; i++) {","lastModifiedDate":"2024-01-28"},{"lineNumber":50,"author":{"gitId":"Anant1902"},"content":" if (parts[i].split(\" \")[0].equals(\"from\")) {","lastModifiedDate":"2024-01-28"},{"lineNumber":51,"author":{"gitId":"Anant1902"},"content":" from \u003d parts[i].substring(5);","lastModifiedDate":"2024-01-28"},{"lineNumber":52,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":53,"author":{"gitId":"Anant1902"},"content":" if (parts[i].split(\" \")[0].equals(\"to\")) {","lastModifiedDate":"2024-01-28"},{"lineNumber":54,"author":{"gitId":"Anant1902"},"content":" to \u003d parts[i].substring(3);","lastModifiedDate":"2024-01-28"},{"lineNumber":55,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":56,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":57,"author":{"gitId":"Anant1902"},"content":" return new String[]{title, from, to};","lastModifiedDate":"2024-01-28"},{"lineNumber":58,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":59,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":60,"author":{"gitId":"Anant1902"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"Anant1902":60}},{"path":"src/main/java/drake/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Anant1902"},"content":"package drake;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"Anant1902"},"content":"import java.io.*;","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"Anant1902"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"Anant1902"},"content":"import drake.task.Task;","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"Anant1902"},"content":"public class Storage {","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"Anant1902"},"content":" private String filePath;","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"Anant1902"},"content":" public Storage(String filePath) {","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"Anant1902"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"Anant1902"},"content":" public void saveTasks(ArrayList\u003cTask\u003e tasks) {","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"Anant1902"},"content":" try (ObjectOutputStream oos \u003d new ObjectOutputStream(new FileOutputStream(filePath))) {","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"Anant1902"},"content":" oos.writeObject(tasks);","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"Anant1902"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"Anant1902"},"content":" System.out.println(\"Error saving list!: \" + e.getMessage());","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"Anant1902"},"content":" @SuppressWarnings(\"unchecked\")","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"Anant1902"},"content":" public ArrayList\u003cTask\u003e loadTasks() {","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"Anant1902"},"content":" File file \u003d new File(filePath);","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"Anant1902"},"content":" if (file.exists()) {","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"Anant1902"},"content":" try (ObjectInputStream ois \u003d new ObjectInputStream(new FileInputStream(file))) {","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"Anant1902"},"content":" return (ArrayList\u003cTask\u003e) ois.readObject();","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"Anant1902"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"Anant1902"},"content":" return new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"Anant1902"},"content":" } catch (ClassNotFoundException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"Anant1902"},"content":" System.out.println(\"Class not found!: \" + e.getMessage());","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":33,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":34,"author":{"gitId":"Anant1902"},"content":" return new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-28"},{"lineNumber":35,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"Anant1902"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"Anant1902":36}},{"path":"src/main/java/drake/TodoLeftBlank.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Anant1902"},"content":"package drake;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"Anant1902"},"content":"public class TodoLeftBlank extends StringIndexOutOfBoundsException {","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"Anant1902"},"content":" public TodoLeftBlank(String message) {","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"Anant1902"},"content":" super(message);","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"Anant1902"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"Anant1902":6}},{"path":"src/main/java/drake/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Anant1902"},"content":"package drake;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"Anant1902"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"Anant1902"},"content":"import drake.task.Task;","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"Anant1902"},"content":"import drake.task.TaskList;","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"Anant1902"},"content":"public class Ui {","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"Anant1902"},"content":" public void showWelcome() {","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"Anant1902"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"Anant1902"},"content":" System.out.println(\" What\u0027s up everyone. I\u0027m Drake.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"Anant1902"},"content":" System.out.println(\" How can I help?\");","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"Anant1902"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"Anant1902"},"content":" public void showGoodbye() {","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"Anant1902"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"Anant1902"},"content":" System.out.println(\" See you later, alligator! \");","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"Anant1902"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"Anant1902"},"content":" public void showError(String message) {","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"Anant1902"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"Anant1902"},"content":" System.out.println(message);","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"Anant1902"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"Anant1902"},"content":" public void showTask(String message, Task task, int size) {","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"Anant1902"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"Anant1902"},"content":" System.out.println(message);","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"Anant1902"},"content":" System.out.println(task);","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"Anant1902"},"content":" System.out.println(\"Now you have \" + size + \" tasks in the list.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"Anant1902"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-28"},{"lineNumber":33,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":34,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":35,"author":{"gitId":"Anant1902"},"content":" public void showTaskList(TaskList tasks) {","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"Anant1902"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"Anant1902"},"content":" System.out.println(\"You asked for the tasks in your list? Here:\");","lastModifiedDate":"2024-01-28"},{"lineNumber":38,"author":{"gitId":"Anant1902"},"content":" ArrayList\u003cTask\u003e taskList \u003d tasks.getTasks();","lastModifiedDate":"2024-01-28"},{"lineNumber":39,"author":{"gitId":"Anant1902"},"content":" for (int i \u003d 0; i \u003c taskList.size(); i++) {","lastModifiedDate":"2024-01-28"},{"lineNumber":40,"author":{"gitId":"Anant1902"},"content":" System.out.println((i + 1) + \". \" + taskList.get(i));","lastModifiedDate":"2024-01-28"},{"lineNumber":41,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":42,"author":{"gitId":"Anant1902"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-28"},{"lineNumber":43,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":44,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":45,"author":{"gitId":"Anant1902"},"content":" public void showAddTask(Task task, int size) {","lastModifiedDate":"2024-01-28"},{"lineNumber":46,"author":{"gitId":"Anant1902"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-28"},{"lineNumber":47,"author":{"gitId":"Anant1902"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2024-01-28"},{"lineNumber":48,"author":{"gitId":"Anant1902"},"content":" System.out.println(task);","lastModifiedDate":"2024-01-28"},{"lineNumber":49,"author":{"gitId":"Anant1902"},"content":" System.out.println(\"Now you have \" + size + \" tasks in the list.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":50,"author":{"gitId":"Anant1902"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-28"},{"lineNumber":51,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":52,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":53,"author":{"gitId":"Anant1902"},"content":" public void showMarkTask(Task task) {","lastModifiedDate":"2024-01-28"},{"lineNumber":54,"author":{"gitId":"Anant1902"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-28"},{"lineNumber":55,"author":{"gitId":"Anant1902"},"content":" System.out.println(\"Cool. I now declare this task marked as, done:\");","lastModifiedDate":"2024-01-28"},{"lineNumber":56,"author":{"gitId":"Anant1902"},"content":" System.out.println(task);","lastModifiedDate":"2024-01-28"},{"lineNumber":57,"author":{"gitId":"Anant1902"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-28"},{"lineNumber":58,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":59,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":60,"author":{"gitId":"Anant1902"},"content":" public void showUnmarkTask(Task task) {","lastModifiedDate":"2024-01-28"},{"lineNumber":61,"author":{"gitId":"Anant1902"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-28"},{"lineNumber":62,"author":{"gitId":"Anant1902"},"content":" System.out.println(\"OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2024-01-28"},{"lineNumber":63,"author":{"gitId":"Anant1902"},"content":" System.out.println(task);","lastModifiedDate":"2024-01-28"},{"lineNumber":64,"author":{"gitId":"Anant1902"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-28"},{"lineNumber":65,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":66,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":67,"author":{"gitId":"Anant1902"},"content":" public void showDeleteTask(Task task, int size) {","lastModifiedDate":"2024-01-28"},{"lineNumber":68,"author":{"gitId":"Anant1902"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-28"},{"lineNumber":69,"author":{"gitId":"Anant1902"},"content":" System.out.println(\"Noted. I\u0027ve removed this task:\");","lastModifiedDate":"2024-01-28"},{"lineNumber":70,"author":{"gitId":"Anant1902"},"content":" System.out.println(task);","lastModifiedDate":"2024-01-28"},{"lineNumber":71,"author":{"gitId":"Anant1902"},"content":" System.out.println(\"Now you have \" + size + \" tasks in the list.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":72,"author":{"gitId":"Anant1902"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-28"},{"lineNumber":73,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":74,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":75,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":76,"author":{"gitId":"Anant1902"},"content":" // ... Other UI methods ...","lastModifiedDate":"2024-01-28"},{"lineNumber":77,"author":{"gitId":"Anant1902"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"Anant1902":77}},{"path":"src/main/java/drake/task/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Anant1902"},"content":"package drake.task;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"Anant1902"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"Anant1902"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"Anant1902"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"Anant1902"},"content":" protected LocalDateTime by;","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"Anant1902"},"content":" public Deadline(String description, LocalDateTime by) {","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"Anant1902"},"content":" super(description);","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"Anant1902"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"Anant1902"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"Anant1902"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"Anant1902"},"content":" return \"[D]\" + super.toString() + \"(by: \" + this.by.format(DateTimeFormatter.ofPattern(\"MMM dd yyyy\")) + \")\";","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"Anant1902"},"content":" ","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"Anant1902"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"Anant1902":19}},{"path":"src/main/java/drake/task/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Anant1902"},"content":"package drake.task;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"Anant1902"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"Anant1902"},"content":" protected String from;","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"Anant1902"},"content":" protected String to;","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"Anant1902"},"content":" public Event(String description, String from, String to) {","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"Anant1902"},"content":" super(description);","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"Anant1902"},"content":" this.from \u003d from;","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"Anant1902"},"content":" this.to \u003d to;","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"Anant1902"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"Anant1902"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"Anant1902"},"content":" return \"[E]\" + super.toString() + \"(from: \" + from + \"to: \" + to + \")\";","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"Anant1902"},"content":" ","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"Anant1902"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"Anant1902":17}},{"path":"src/main/java/drake/task/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Anant1902"},"content":"package drake.task;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"Anant1902"},"content":"import java.io.Serializable;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"Anant1902"},"content":"public class Task implements Serializable { // adapted skeleton from cs2103t course website","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"Anant1902"},"content":" protected String description;","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"Anant1902"},"content":" protected boolean isDone;","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"Anant1902"},"content":" public Task(String description) {","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"Anant1902"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"Anant1902"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"Anant1902"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"Anant1902"},"content":" return (isDone ? \"[X] \" : \"[ ] \"); // mark done task with X","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"Anant1902"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"Anant1902"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"Anant1902"},"content":" return getStatusIcon() + description;","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"Anant1902"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"Anant1902":22}},{"path":"src/main/java/drake/task/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Anant1902"},"content":"package drake.task;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"Anant1902"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"Anant1902"},"content":"public class TaskList {","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"Anant1902"},"content":" private ArrayList\u003cTask\u003e tasks;","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"Anant1902"},"content":" public TaskList() {","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"Anant1902"},"content":" tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"Anant1902"},"content":" public TaskList(ArrayList\u003cTask\u003e tasks) {","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"Anant1902"},"content":" this.tasks \u003d tasks;","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"Anant1902"},"content":" public void addTask(Task task) {","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"Anant1902"},"content":" tasks.add(task);","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"Anant1902"},"content":" public Task deleteTask(int index) throws IndexOutOfBoundsException {","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"Anant1902"},"content":" if (index \u003c 0 || index \u003e\u003d tasks.size()) {","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"Anant1902"},"content":" throw new IndexOutOfBoundsException(\"Task index is out of bounds.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"Anant1902"},"content":" return tasks.remove(index);","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"Anant1902"},"content":" public Task getTask(int index) throws IndexOutOfBoundsException {","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"Anant1902"},"content":" if (index \u003c 0 || index \u003e\u003d tasks.size()) {","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"Anant1902"},"content":" throw new IndexOutOfBoundsException(\"Task index is out of bounds.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"Anant1902"},"content":" return tasks.get(index);","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":33,"author":{"gitId":"Anant1902"},"content":" public int size() {","lastModifiedDate":"2024-01-28"},{"lineNumber":34,"author":{"gitId":"Anant1902"},"content":" return tasks.size();","lastModifiedDate":"2024-01-28"},{"lineNumber":35,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"Anant1902"},"content":" public ArrayList\u003cTask\u003e getTasks() {","lastModifiedDate":"2024-01-28"},{"lineNumber":38,"author":{"gitId":"Anant1902"},"content":" return tasks;","lastModifiedDate":"2024-01-28"},{"lineNumber":39,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":40,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":41,"author":{"gitId":"Anant1902"},"content":" public void markTask(int index) throws IndexOutOfBoundsException {","lastModifiedDate":"2024-01-28"},{"lineNumber":42,"author":{"gitId":"Anant1902"},"content":" getTask(index).isDone \u003d true;","lastModifiedDate":"2024-01-28"},{"lineNumber":43,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":44,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":45,"author":{"gitId":"Anant1902"},"content":" public void unmarkTask(int index) throws IndexOutOfBoundsException {","lastModifiedDate":"2024-01-28"},{"lineNumber":46,"author":{"gitId":"Anant1902"},"content":" getTask(index).isDone \u003d false;","lastModifiedDate":"2024-01-28"},{"lineNumber":47,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":48,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":49,"author":{"gitId":"Anant1902"},"content":" // ... Other task list operations ...","lastModifiedDate":"2024-01-28"},{"lineNumber":50,"author":{"gitId":"Anant1902"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"Anant1902":50}},{"path":"src/main/java/drake/task/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Anant1902"},"content":"package drake.task;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"Anant1902"},"content":"public class Todo extends Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"Anant1902"},"content":" public Todo(String description) {","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"Anant1902"},"content":" super(description);","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"Anant1902"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"Anant1902"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"Anant1902"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"Anant1902"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"Anant1902":13}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"Anant1902"},"content":"todo","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"Anant1902"},"content":"invalidddd command","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"Anant1902"},"content":"todo eat dinner","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"Anant1902"},"content":"deadline finish 2103 assignment /by 2024-10-06","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"Anant1902"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"Anant1902"},"content":"event hackathon /from Wed 2pm /to 4pm","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"Anant1902"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"Anant1902"},"content":"mark 3","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"Anant1902"},"content":"deadline finish 2103 assignment /by Wednesday","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"Anant1902"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"Anant1902"},"content":"unmark 3","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"Anant1902"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"Anant1902"},"content":"mark 2","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"Anant1902"},"content":"mark 1","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"Anant1902"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"Anant1902"},"content":"bye","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"Anant1902":16}},{"path":"text-ui-test/runtest.sh","fileType":"sh","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"#!/usr/bin/env bash","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"# create bin directory if it doesn\u0027t exist","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"if [ ! -d \"../bin\" ]","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":" mkdir ../bin","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"# delete output from previous run","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"if [ -e \"./ACTUAL.TXT\" ]","lastModifiedDate":"2020-05-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":" rm ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"# compile the code into the bin folder, terminates if error occurred","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"Anant1902"},"content":"if ! javac -cp ../src/main/java -Xlint:none -d ../bin ../src/main/java/drake/*.java","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" echo \"********** BUILD FAILURE **********\"","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" exit 1","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":"# run the program, feed commands from input.txt file and redirect the output to the ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"Anant1902"},"content":"java -classpath ../bin Drake \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":"# convert to UNIX format","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":"cp EXPECTED.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":"dos2unix ACTUAL.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"# compare the output to the expected output","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"diff ACTUAL.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":"if [ $? -eq 0 ]","lastModifiedDate":"2020-05-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":" echo \"Test result: PASSED\"","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":" exit 0","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":"else","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" echo \"Test result: FAILED\"","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" exit 1","lastModifiedDate":"2020-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"-":36,"Anant1902":2}}] +[{"path":"build.gradle","fileType":"gradle","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"plugins {","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":" id \u0027java\u0027","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":" id \u0027application\u0027","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":" id \u0027com.github.johnrengelman.shadow\u0027 version \u00277.1.2\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"repositories {","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":" mavenCentral()","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"dependencies {","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":" testImplementation group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-api\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":" testRuntimeOnly group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-engine\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"Anant1902"},"content":" mainClass.set(\"drake.Drake\")","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"Anant1902"},"content":" archiveBaseName \u003d \"drake\"","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":"run{","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"-":40,"Anant1902":2}},{"path":"src/main/java/drake/Drake.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Anant1902"},"content":"package drake;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"Anant1902"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"Anant1902"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"Anant1902"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"Anant1902"},"content":"import drake.task.Deadline;","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"Anant1902"},"content":"import drake.task.Event;","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"Anant1902"},"content":"import drake.task.Task;","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"Anant1902"},"content":"import drake.task.TaskList;","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"Anant1902"},"content":"import drake.task.Todo;","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"Anant1902"},"content":"enum Command {","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"Anant1902"},"content":" BYE, LIST, MARK, UNMARK, TODO, DEADLINE, EVENT, DELETE, INVALID;","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"Anant1902"},"content":" ","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"Anant1902"},"content":" // Method to get the appropriate enum value from a string input","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"Anant1902"},"content":" public static Command fromString(String commandString) {","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"Anant1902"},"content":" switch (commandString.toLowerCase()) {","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"Anant1902"},"content":" case \"bye\":","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"Anant1902"},"content":" return BYE;","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"Anant1902"},"content":" case \"list\":","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"Anant1902"},"content":" return LIST;","lastModifiedDate":"2024-01-24"},{"lineNumber":23,"author":{"gitId":"Anant1902"},"content":" case \"mark\":","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"Anant1902"},"content":" return MARK;","lastModifiedDate":"2024-01-24"},{"lineNumber":25,"author":{"gitId":"Anant1902"},"content":" case \"unmark\":","lastModifiedDate":"2024-01-24"},{"lineNumber":26,"author":{"gitId":"Anant1902"},"content":" return UNMARK;","lastModifiedDate":"2024-01-24"},{"lineNumber":27,"author":{"gitId":"Anant1902"},"content":" case \"todo\":","lastModifiedDate":"2024-01-24"},{"lineNumber":28,"author":{"gitId":"Anant1902"},"content":" return TODO;","lastModifiedDate":"2024-01-24"},{"lineNumber":29,"author":{"gitId":"Anant1902"},"content":" case \"deadline\":","lastModifiedDate":"2024-01-24"},{"lineNumber":30,"author":{"gitId":"Anant1902"},"content":" return DEADLINE;","lastModifiedDate":"2024-01-24"},{"lineNumber":31,"author":{"gitId":"Anant1902"},"content":" case \"event\":","lastModifiedDate":"2024-01-24"},{"lineNumber":32,"author":{"gitId":"Anant1902"},"content":" return EVENT;","lastModifiedDate":"2024-01-24"},{"lineNumber":33,"author":{"gitId":"Anant1902"},"content":" case \"delete\":","lastModifiedDate":"2024-01-24"},{"lineNumber":34,"author":{"gitId":"Anant1902"},"content":" return DELETE;","lastModifiedDate":"2024-01-24"},{"lineNumber":35,"author":{"gitId":"Anant1902"},"content":" default:","lastModifiedDate":"2024-01-24"},{"lineNumber":36,"author":{"gitId":"Anant1902"},"content":" return INVALID;","lastModifiedDate":"2024-01-24"},{"lineNumber":37,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":38,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":39,"author":{"gitId":"Anant1902"},"content":"}","lastModifiedDate":"2024-01-24"},{"lineNumber":40,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":41,"author":{"gitId":"Anant1902"},"content":"public class Drake {","lastModifiedDate":"2024-01-23"},{"lineNumber":42,"author":{"gitId":"Anant1902"},"content":" private Ui ui;","lastModifiedDate":"2024-01-28"},{"lineNumber":43,"author":{"gitId":"Anant1902"},"content":" private Storage storage;","lastModifiedDate":"2024-01-28"},{"lineNumber":44,"author":{"gitId":"Anant1902"},"content":" private TaskList taskList;","lastModifiedDate":"2024-01-28"},{"lineNumber":45,"author":{"gitId":"Anant1902"},"content":" private boolean isRunning; ","lastModifiedDate":"2024-01-28"},{"lineNumber":46,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":47,"author":{"gitId":"Anant1902"},"content":" public Drake(String FILE_PATH) {","lastModifiedDate":"2024-01-28"},{"lineNumber":48,"author":{"gitId":"Anant1902"},"content":" ui \u003d new Ui();","lastModifiedDate":"2024-01-28"},{"lineNumber":49,"author":{"gitId":"Anant1902"},"content":" storage \u003d new Storage(FILE_PATH);","lastModifiedDate":"2024-01-28"},{"lineNumber":50,"author":{"gitId":"Anant1902"},"content":" taskList \u003d new TaskList(storage.loadTasks());","lastModifiedDate":"2024-01-28"},{"lineNumber":51,"author":{"gitId":"Anant1902"},"content":" isRunning \u003d true;","lastModifiedDate":"2024-01-28"},{"lineNumber":52,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":53,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":54,"author":{"gitId":"Anant1902"},"content":" public void run() throws Exception {","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"Anant1902"},"content":" Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-24"},{"lineNumber":56,"author":{"gitId":"Anant1902"},"content":" ui.showWelcome();","lastModifiedDate":"2024-01-28"},{"lineNumber":57,"author":{"gitId":"Anant1902"},"content":" ","lastModifiedDate":"2024-01-24"},{"lineNumber":58,"author":{"gitId":"Anant1902"},"content":" while (isRunning) {","lastModifiedDate":"2024-01-28"},{"lineNumber":59,"author":{"gitId":"Anant1902"},"content":" String input \u003d scanner.nextLine().trim();","lastModifiedDate":"2024-01-24"},{"lineNumber":60,"author":{"gitId":"Anant1902"},"content":" String[] words \u003d input.split(\" \", 2);","lastModifiedDate":"2024-01-24"},{"lineNumber":61,"author":{"gitId":"Anant1902"},"content":" String commandWord \u003d words[0];","lastModifiedDate":"2024-01-24"},{"lineNumber":62,"author":{"gitId":"Anant1902"},"content":" Command command \u003d Command.fromString(commandWord);","lastModifiedDate":"2024-01-24"},{"lineNumber":63,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":64,"author":{"gitId":"Anant1902"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":65,"author":{"gitId":"Anant1902"},"content":" switch (command) {","lastModifiedDate":"2024-01-24"},{"lineNumber":66,"author":{"gitId":"Anant1902"},"content":" case BYE:","lastModifiedDate":"2024-01-24"},{"lineNumber":67,"author":{"gitId":"Anant1902"},"content":" isRunning \u003d false;","lastModifiedDate":"2024-01-28"},{"lineNumber":68,"author":{"gitId":"Anant1902"},"content":" storage.saveTasks(taskList.getTasks());","lastModifiedDate":"2024-01-28"},{"lineNumber":69,"author":{"gitId":"Anant1902"},"content":" ui.showGoodbye();","lastModifiedDate":"2024-01-28"},{"lineNumber":70,"author":{"gitId":"Anant1902"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":71,"author":{"gitId":"Anant1902"},"content":" case LIST:","lastModifiedDate":"2024-01-24"},{"lineNumber":72,"author":{"gitId":"Anant1902"},"content":" ui.showTaskList(taskList);","lastModifiedDate":"2024-01-28"},{"lineNumber":73,"author":{"gitId":"Anant1902"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":74,"author":{"gitId":"Anant1902"},"content":" case MARK:","lastModifiedDate":"2024-01-24"},{"lineNumber":75,"author":{"gitId":"Anant1902"},"content":" int markIndex \u003d Parser.parseTaskIndex(input);","lastModifiedDate":"2024-01-28"},{"lineNumber":76,"author":{"gitId":"Anant1902"},"content":" taskList.markTask(markIndex);","lastModifiedDate":"2024-01-28"},{"lineNumber":77,"author":{"gitId":"Anant1902"},"content":" ui.showMarkTask(taskList.getTask(markIndex));","lastModifiedDate":"2024-01-28"},{"lineNumber":78,"author":{"gitId":"Anant1902"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":79,"author":{"gitId":"Anant1902"},"content":" case UNMARK:","lastModifiedDate":"2024-01-24"},{"lineNumber":80,"author":{"gitId":"Anant1902"},"content":" int unmarkIndex \u003d Parser.parseTaskIndex(input);","lastModifiedDate":"2024-01-28"},{"lineNumber":81,"author":{"gitId":"Anant1902"},"content":" taskList.unmarkTask(unmarkIndex);","lastModifiedDate":"2024-01-28"},{"lineNumber":82,"author":{"gitId":"Anant1902"},"content":" ui.showUnmarkTask(taskList.getTask(unmarkIndex));","lastModifiedDate":"2024-01-28"},{"lineNumber":83,"author":{"gitId":"Anant1902"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":84,"author":{"gitId":"Anant1902"},"content":" case TODO:","lastModifiedDate":"2024-01-24"},{"lineNumber":85,"author":{"gitId":"Anant1902"},"content":" String todoDescription \u003d Parser.parseDescription(input);","lastModifiedDate":"2024-01-28"},{"lineNumber":86,"author":{"gitId":"Anant1902"},"content":" Todo newTodo \u003d new Todo(todoDescription);","lastModifiedDate":"2024-01-28"},{"lineNumber":87,"author":{"gitId":"Anant1902"},"content":" taskList.addTask(newTodo);","lastModifiedDate":"2024-01-28"},{"lineNumber":88,"author":{"gitId":"Anant1902"},"content":" ui.showAddTask(newTodo, taskList.size());","lastModifiedDate":"2024-01-28"},{"lineNumber":89,"author":{"gitId":"Anant1902"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":90,"author":{"gitId":"Anant1902"},"content":" case DEADLINE:","lastModifiedDate":"2024-01-24"},{"lineNumber":91,"author":{"gitId":"Anant1902"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":92,"author":{"gitId":"Anant1902"},"content":" Object[] deadlineDetails \u003d Parser.parseDeadline (input);","lastModifiedDate":"2024-01-28"},{"lineNumber":93,"author":{"gitId":"Anant1902"},"content":" Deadline newDeadline \u003d new Deadline((String) deadlineDetails[0], (LocalDateTime) deadlineDetails[1]);","lastModifiedDate":"2024-01-28"},{"lineNumber":94,"author":{"gitId":"Anant1902"},"content":" taskList.addTask(newDeadline);","lastModifiedDate":"2024-01-28"},{"lineNumber":95,"author":{"gitId":"Anant1902"},"content":" ui.showAddTask(newDeadline, taskList.size());","lastModifiedDate":"2024-01-28"},{"lineNumber":96,"author":{"gitId":"Anant1902"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":97,"author":{"gitId":"Anant1902"},"content":" ui.showError(\"Oops, format error! Type in a date in the form yy-mm-dd and try again!\");","lastModifiedDate":"2024-01-28"},{"lineNumber":98,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":99,"author":{"gitId":"Anant1902"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":100,"author":{"gitId":"Anant1902"},"content":" case EVENT:","lastModifiedDate":"2024-01-24"},{"lineNumber":101,"author":{"gitId":"Anant1902"},"content":" String[] eventDetails \u003d Parser.parseEvent(input);","lastModifiedDate":"2024-01-28"},{"lineNumber":102,"author":{"gitId":"Anant1902"},"content":" Event newEvent \u003d new Event(eventDetails[0], eventDetails[1], eventDetails[2]);","lastModifiedDate":"2024-01-28"},{"lineNumber":103,"author":{"gitId":"Anant1902"},"content":" taskList.addTask(newEvent);","lastModifiedDate":"2024-01-28"},{"lineNumber":104,"author":{"gitId":"Anant1902"},"content":" ui.showAddTask(newEvent, taskList.size());","lastModifiedDate":"2024-01-28"},{"lineNumber":105,"author":{"gitId":"Anant1902"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":106,"author":{"gitId":"Anant1902"},"content":" case DELETE:","lastModifiedDate":"2024-01-24"},{"lineNumber":107,"author":{"gitId":"Anant1902"},"content":" int deleteIndex \u003d Parser.parseTaskIndex(input);","lastModifiedDate":"2024-01-28"},{"lineNumber":108,"author":{"gitId":"Anant1902"},"content":" Task deletedTask \u003d taskList.deleteTask(deleteIndex);","lastModifiedDate":"2024-01-28"},{"lineNumber":109,"author":{"gitId":"Anant1902"},"content":" ui.showDeleteTask(deletedTask, taskList.size());","lastModifiedDate":"2024-01-28"},{"lineNumber":110,"author":{"gitId":"Anant1902"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":111,"author":{"gitId":"Anant1902"},"content":" case INVALID:","lastModifiedDate":"2024-01-24"},{"lineNumber":112,"author":{"gitId":"Anant1902"},"content":" throw new NotValidCommand(\"That\u0027s not a valid command!\");","lastModifiedDate":"2024-01-28"},{"lineNumber":113,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":114,"author":{"gitId":"Anant1902"},"content":" } catch (NotValidCommand | TodoLeftBlank e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":115,"author":{"gitId":"Anant1902"},"content":" ui.showError(e.getMessage());","lastModifiedDate":"2024-01-28"},{"lineNumber":116,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":117,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":118,"author":{"gitId":"Anant1902"},"content":" scanner.close();","lastModifiedDate":"2024-01-24"},{"lineNumber":119,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":120,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":121,"author":{"gitId":"Anant1902"},"content":" public static void main(String[] args) throws Exception {","lastModifiedDate":"2024-01-30"},{"lineNumber":122,"author":{"gitId":"Anant1902"},"content":" new Drake(\"./list.dat\").run();","lastModifiedDate":"2024-01-28"},{"lineNumber":123,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":124,"author":{"gitId":"Anant1902"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"Anant1902":124}},{"path":"src/main/java/drake/NotValidCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Anant1902"},"content":"package drake;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"Anant1902"},"content":"public class NotValidCommand extends Exception {","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"Anant1902"},"content":" public NotValidCommand(String message) {","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"Anant1902"},"content":" super(message);","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"Anant1902"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"Anant1902":6}},{"path":"src/main/java/drake/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Anant1902"},"content":"package drake;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"Anant1902"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"Anant1902"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"Anant1902"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"Anant1902"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"Anant1902"},"content":"public class Parser {","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"Anant1902"},"content":" public static Command parseCommand(String input) {","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"Anant1902"},"content":" String[] words \u003d input.split(\" \", 2);","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"Anant1902"},"content":" String commandWord \u003d words[0];","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"Anant1902"},"content":" return Command.fromString(commandWord);","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"Anant1902"},"content":" public static int parseTaskIndex(String input) throws NumberFormatException {","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"Anant1902"},"content":" String[] words \u003d input.split(\" \", 2);","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"Anant1902"},"content":" if (words.length \u003c 2) {","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"Anant1902"},"content":" throw new IllegalArgumentException(\"No task index provided.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"Anant1902"},"content":" return Integer.parseInt(words[1]) - 1; // Subtract 1 to convert to zero-based index","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"Anant1902"},"content":" public static String parseDescription(String input) {","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"Anant1902"},"content":" String[] parts \u003d input.split(\" \", 2);","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"Anant1902"},"content":" if (parts.length \u003c 2 || parts[1].trim().isEmpty()) {","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"Anant1902"},"content":" throw new TodoLeftBlank(\"Looks like you left the description of the todo empty. This isn\u0027t allowed!\");","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"Anant1902"},"content":" return parts[1].trim();","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"Anant1902"},"content":" public static Object[] parseDeadline(String input) throws Exception {","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"Anant1902"},"content":" String[] parts \u003d input.split(\" /by \");","lastModifiedDate":"2024-01-28"},{"lineNumber":33,"author":{"gitId":"Anant1902"},"content":" if (parts.length \u003c 2) {","lastModifiedDate":"2024-01-28"},{"lineNumber":34,"author":{"gitId":"Anant1902"},"content":" throw new IllegalArgumentException(\"Deadline time not provided.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":35,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"Anant1902"},"content":" if (!parts[0].split(\" \")[0].equals(\"deadline\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"Anant1902"},"content":" throw new Exception(\"Looks like you spelt deadline wrong. Please try again!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"Anant1902"},"content":" String description \u003d parts[0].substring(parts[0].indexOf(\u0027 \u0027) + 1).trim();","lastModifiedDate":"2024-01-28"},{"lineNumber":42,"author":{"gitId":"Anant1902"},"content":" LocalDate date;","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"Anant1902"},"content":" LocalDateTime by;","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"Anant1902"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"Anant1902"},"content":" date \u003d LocalDate.parse(parts[1], DateTimeFormatter.ofPattern(\"yyyy-MM-dd\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"Anant1902"},"content":" by \u003d date.atStartOfDay();","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"Anant1902"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"Anant1902"},"content":" throw new Exception(\"Date is of the wrong format!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"Anant1902"},"content":" } ","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"Anant1902"},"content":" ","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"Anant1902"},"content":" return new Object[]{description, by};","lastModifiedDate":"2024-01-28"},{"lineNumber":53,"author":{"gitId":"Anant1902"},"content":" ","lastModifiedDate":"2024-01-28"},{"lineNumber":54,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":55,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":56,"author":{"gitId":"Anant1902"},"content":" public static String[] parseEvent(String input) {","lastModifiedDate":"2024-01-28"},{"lineNumber":57,"author":{"gitId":"Anant1902"},"content":" String[] parts \u003d input.substring(6).split(\"/\");","lastModifiedDate":"2024-01-28"},{"lineNumber":58,"author":{"gitId":"Anant1902"},"content":" String title \u003d parts[0];","lastModifiedDate":"2024-01-28"},{"lineNumber":59,"author":{"gitId":"Anant1902"},"content":" String from \u003d \"\";","lastModifiedDate":"2024-01-28"},{"lineNumber":60,"author":{"gitId":"Anant1902"},"content":" String to \u003d \"\";","lastModifiedDate":"2024-01-28"},{"lineNumber":61,"author":{"gitId":"Anant1902"},"content":" ","lastModifiedDate":"2024-01-28"},{"lineNumber":62,"author":{"gitId":"Anant1902"},"content":" for (int i \u003d 1; i \u003c parts.length; i++) {","lastModifiedDate":"2024-01-28"},{"lineNumber":63,"author":{"gitId":"Anant1902"},"content":" if (parts[i].split(\" \")[0].equals(\"from\")) {","lastModifiedDate":"2024-01-28"},{"lineNumber":64,"author":{"gitId":"Anant1902"},"content":" from \u003d parts[i].substring(5);","lastModifiedDate":"2024-01-28"},{"lineNumber":65,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":66,"author":{"gitId":"Anant1902"},"content":" if (parts[i].split(\" \")[0].equals(\"to\")) {","lastModifiedDate":"2024-01-28"},{"lineNumber":67,"author":{"gitId":"Anant1902"},"content":" to \u003d parts[i].substring(3);","lastModifiedDate":"2024-01-28"},{"lineNumber":68,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":69,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":70,"author":{"gitId":"Anant1902"},"content":" return new String[]{title, from, to};","lastModifiedDate":"2024-01-28"},{"lineNumber":71,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":72,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":73,"author":{"gitId":"Anant1902"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"Anant1902":73}},{"path":"src/main/java/drake/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Anant1902"},"content":"package drake;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"Anant1902"},"content":"import java.io.*;","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"Anant1902"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"Anant1902"},"content":"import drake.task.Task;","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"Anant1902"},"content":"public class Storage {","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"Anant1902"},"content":" private String filePath;","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"Anant1902"},"content":" public Storage(String filePath) {","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"Anant1902"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"Anant1902"},"content":" public void saveTasks(ArrayList\u003cTask\u003e tasks) {","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"Anant1902"},"content":" try (ObjectOutputStream oos \u003d new ObjectOutputStream(new FileOutputStream(filePath))) {","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"Anant1902"},"content":" oos.writeObject(tasks);","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"Anant1902"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"Anant1902"},"content":" System.out.println(\"Error saving list!: \" + e.getMessage());","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"Anant1902"},"content":" @SuppressWarnings(\"unchecked\")","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"Anant1902"},"content":" public ArrayList\u003cTask\u003e loadTasks() {","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"Anant1902"},"content":" File file \u003d new File(filePath);","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"Anant1902"},"content":" if (file.exists()) {","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"Anant1902"},"content":" try (ObjectInputStream ois \u003d new ObjectInputStream(new FileInputStream(file))) {","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"Anant1902"},"content":" return (ArrayList\u003cTask\u003e) ois.readObject();","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"Anant1902"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"Anant1902"},"content":" return new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"Anant1902"},"content":" } catch (ClassNotFoundException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"Anant1902"},"content":" System.out.println(\"Class not found!: \" + e.getMessage());","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":33,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":34,"author":{"gitId":"Anant1902"},"content":" return new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-28"},{"lineNumber":35,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"Anant1902"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"Anant1902":36}},{"path":"src/main/java/drake/TodoLeftBlank.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Anant1902"},"content":"package drake;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"Anant1902"},"content":"public class TodoLeftBlank extends StringIndexOutOfBoundsException {","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"Anant1902"},"content":" public TodoLeftBlank(String message) {","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"Anant1902"},"content":" super(message);","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"Anant1902"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"Anant1902":6}},{"path":"src/main/java/drake/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Anant1902"},"content":"package drake;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"Anant1902"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"Anant1902"},"content":"import drake.task.Task;","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"Anant1902"},"content":"import drake.task.TaskList;","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"Anant1902"},"content":"public class Ui {","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"Anant1902"},"content":" public void showWelcome() {","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"Anant1902"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"Anant1902"},"content":" System.out.println(\" What\u0027s up everyone. I\u0027m Drake.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"Anant1902"},"content":" System.out.println(\" How can I help?\");","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"Anant1902"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"Anant1902"},"content":" public void showGoodbye() {","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"Anant1902"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"Anant1902"},"content":" System.out.println(\" See you later, alligator! \");","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"Anant1902"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"Anant1902"},"content":" public void showError(String message) {","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"Anant1902"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"Anant1902"},"content":" System.out.println(message);","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"Anant1902"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"Anant1902"},"content":" public void showTask(String message, Task task, int size) {","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"Anant1902"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"Anant1902"},"content":" System.out.println(message);","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"Anant1902"},"content":" System.out.println(task);","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"Anant1902"},"content":" System.out.println(\"Now you have \" + size + \" tasks in the list.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"Anant1902"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-28"},{"lineNumber":33,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":34,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":35,"author":{"gitId":"Anant1902"},"content":" public void showTaskList(TaskList tasks) {","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"Anant1902"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"Anant1902"},"content":" System.out.println(\"You asked for the tasks in your list? Here:\");","lastModifiedDate":"2024-01-28"},{"lineNumber":38,"author":{"gitId":"Anant1902"},"content":" ArrayList\u003cTask\u003e taskList \u003d tasks.getTasks();","lastModifiedDate":"2024-01-28"},{"lineNumber":39,"author":{"gitId":"Anant1902"},"content":" for (int i \u003d 0; i \u003c taskList.size(); i++) {","lastModifiedDate":"2024-01-28"},{"lineNumber":40,"author":{"gitId":"Anant1902"},"content":" System.out.println((i + 1) + \". \" + taskList.get(i));","lastModifiedDate":"2024-01-28"},{"lineNumber":41,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":42,"author":{"gitId":"Anant1902"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-28"},{"lineNumber":43,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":44,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":45,"author":{"gitId":"Anant1902"},"content":" public void showAddTask(Task task, int size) {","lastModifiedDate":"2024-01-28"},{"lineNumber":46,"author":{"gitId":"Anant1902"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-28"},{"lineNumber":47,"author":{"gitId":"Anant1902"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2024-01-28"},{"lineNumber":48,"author":{"gitId":"Anant1902"},"content":" System.out.println(task);","lastModifiedDate":"2024-01-28"},{"lineNumber":49,"author":{"gitId":"Anant1902"},"content":" System.out.println(\"Now you have \" + size + \" tasks in the list.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":50,"author":{"gitId":"Anant1902"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-28"},{"lineNumber":51,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":52,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":53,"author":{"gitId":"Anant1902"},"content":" public void showMarkTask(Task task) {","lastModifiedDate":"2024-01-28"},{"lineNumber":54,"author":{"gitId":"Anant1902"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-28"},{"lineNumber":55,"author":{"gitId":"Anant1902"},"content":" System.out.println(\"Cool. I now declare this task marked as, done:\");","lastModifiedDate":"2024-01-28"},{"lineNumber":56,"author":{"gitId":"Anant1902"},"content":" System.out.println(task);","lastModifiedDate":"2024-01-28"},{"lineNumber":57,"author":{"gitId":"Anant1902"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-28"},{"lineNumber":58,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":59,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":60,"author":{"gitId":"Anant1902"},"content":" public void showUnmarkTask(Task task) {","lastModifiedDate":"2024-01-28"},{"lineNumber":61,"author":{"gitId":"Anant1902"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-28"},{"lineNumber":62,"author":{"gitId":"Anant1902"},"content":" System.out.println(\"OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2024-01-28"},{"lineNumber":63,"author":{"gitId":"Anant1902"},"content":" System.out.println(task);","lastModifiedDate":"2024-01-28"},{"lineNumber":64,"author":{"gitId":"Anant1902"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-28"},{"lineNumber":65,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":66,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":67,"author":{"gitId":"Anant1902"},"content":" public void showDeleteTask(Task task, int size) {","lastModifiedDate":"2024-01-28"},{"lineNumber":68,"author":{"gitId":"Anant1902"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-28"},{"lineNumber":69,"author":{"gitId":"Anant1902"},"content":" System.out.println(\"Noted. I\u0027ve removed this task:\");","lastModifiedDate":"2024-01-28"},{"lineNumber":70,"author":{"gitId":"Anant1902"},"content":" System.out.println(task);","lastModifiedDate":"2024-01-28"},{"lineNumber":71,"author":{"gitId":"Anant1902"},"content":" System.out.println(\"Now you have \" + size + \" tasks in the list.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":72,"author":{"gitId":"Anant1902"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-28"},{"lineNumber":73,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":74,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":75,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":76,"author":{"gitId":"Anant1902"},"content":" // ... Other UI methods ...","lastModifiedDate":"2024-01-28"},{"lineNumber":77,"author":{"gitId":"Anant1902"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"Anant1902":77}},{"path":"src/main/java/drake/task/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Anant1902"},"content":"package drake.task;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"Anant1902"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"Anant1902"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"Anant1902"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"Anant1902"},"content":" protected LocalDateTime by;","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"Anant1902"},"content":" public Deadline(String description, LocalDateTime by) {","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"Anant1902"},"content":" super(description);","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"Anant1902"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"Anant1902"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"Anant1902"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"Anant1902"},"content":" return \"[D]\" + super.toString() + \"(by: \" + this.by.format(DateTimeFormatter.ofPattern(\"MMM dd yyyy\")) + \")\";","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"Anant1902"},"content":" ","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"Anant1902"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"Anant1902":19}},{"path":"src/main/java/drake/task/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Anant1902"},"content":"package drake.task;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"Anant1902"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"Anant1902"},"content":" protected String from;","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"Anant1902"},"content":" protected String to;","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"Anant1902"},"content":" public Event(String description, String from, String to) {","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"Anant1902"},"content":" super(description);","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"Anant1902"},"content":" this.from \u003d from;","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"Anant1902"},"content":" this.to \u003d to;","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"Anant1902"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"Anant1902"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"Anant1902"},"content":" return \"[E]\" + super.toString() + \"(from: \" + from + \"to: \" + to + \")\";","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"Anant1902"},"content":" ","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"Anant1902"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"Anant1902":17}},{"path":"src/main/java/drake/task/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Anant1902"},"content":"package drake.task;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"Anant1902"},"content":"import java.io.Serializable;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"Anant1902"},"content":"public class Task implements Serializable { // adapted skeleton from cs2103t course website","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"Anant1902"},"content":" protected String description;","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"Anant1902"},"content":" protected boolean isDone;","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"Anant1902"},"content":" public Task(String description) {","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"Anant1902"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"Anant1902"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"Anant1902"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"Anant1902"},"content":" return (isDone ? \"[X] \" : \"[ ] \"); // mark done task with X","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"Anant1902"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"Anant1902"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"Anant1902"},"content":" return getStatusIcon() + description;","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"Anant1902"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"Anant1902":22}},{"path":"src/main/java/drake/task/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Anant1902"},"content":"package drake.task;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"Anant1902"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"Anant1902"},"content":"public class TaskList {","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"Anant1902"},"content":" private ArrayList\u003cTask\u003e tasks;","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"Anant1902"},"content":" public TaskList() {","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"Anant1902"},"content":" tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"Anant1902"},"content":" public TaskList(ArrayList\u003cTask\u003e tasks) {","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"Anant1902"},"content":" this.tasks \u003d tasks;","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"Anant1902"},"content":" public void addTask(Task task) {","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"Anant1902"},"content":" tasks.add(task);","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"Anant1902"},"content":" public Task deleteTask(int index) throws IndexOutOfBoundsException {","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"Anant1902"},"content":" if (index \u003c 0 || index \u003e\u003d tasks.size()) {","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"Anant1902"},"content":" throw new IndexOutOfBoundsException(\"Task index is out of bounds.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"Anant1902"},"content":" return tasks.remove(index);","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"Anant1902"},"content":" public Task getTask(int index) throws IndexOutOfBoundsException {","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"Anant1902"},"content":" if (index \u003c 0 || index \u003e\u003d tasks.size()) {","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"Anant1902"},"content":" throw new IndexOutOfBoundsException(\"Task index is out of bounds.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"Anant1902"},"content":" return tasks.get(index);","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":33,"author":{"gitId":"Anant1902"},"content":" public int size() {","lastModifiedDate":"2024-01-28"},{"lineNumber":34,"author":{"gitId":"Anant1902"},"content":" return tasks.size();","lastModifiedDate":"2024-01-28"},{"lineNumber":35,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"Anant1902"},"content":" public ArrayList\u003cTask\u003e getTasks() {","lastModifiedDate":"2024-01-28"},{"lineNumber":38,"author":{"gitId":"Anant1902"},"content":" return tasks;","lastModifiedDate":"2024-01-28"},{"lineNumber":39,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":40,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":41,"author":{"gitId":"Anant1902"},"content":" public void markTask(int index) throws IndexOutOfBoundsException {","lastModifiedDate":"2024-01-28"},{"lineNumber":42,"author":{"gitId":"Anant1902"},"content":" getTask(index).isDone \u003d true;","lastModifiedDate":"2024-01-28"},{"lineNumber":43,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":44,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":45,"author":{"gitId":"Anant1902"},"content":" public void unmarkTask(int index) throws IndexOutOfBoundsException {","lastModifiedDate":"2024-01-28"},{"lineNumber":46,"author":{"gitId":"Anant1902"},"content":" getTask(index).isDone \u003d false;","lastModifiedDate":"2024-01-28"},{"lineNumber":47,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":48,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":49,"author":{"gitId":"Anant1902"},"content":" // ... Other task list operations ...","lastModifiedDate":"2024-01-28"},{"lineNumber":50,"author":{"gitId":"Anant1902"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"Anant1902":50}},{"path":"src/main/java/drake/task/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Anant1902"},"content":"package drake.task;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"Anant1902"},"content":"public class Todo extends Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"Anant1902"},"content":" public Todo(String description) {","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"Anant1902"},"content":" super(description);","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"Anant1902"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"Anant1902"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"Anant1902"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"Anant1902"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"Anant1902":13}},{"path":"src/test/java/drake/ParserTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Anant1902"},"content":"package drake;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"Anant1902"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"Anant1902"},"content":"import drake.Parser;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"Anant1902"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"Anant1902"},"content":"import static org.junit.jupiter.api.Assertions.fail;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"Anant1902"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"Anant1902"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"Anant1902"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"Anant1902"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"Anant1902"},"content":"public class ParserTest {","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"Anant1902"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"Anant1902"},"content":" public void parseDeadlineSucessTest() throws Exception {","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"Anant1902"},"content":" String testInput \u003d \"deadline eat dinner /by 2024-12-01\";","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"Anant1902"},"content":" Object[] actualOutput \u003d Parser.parseDeadline(testInput);","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"Anant1902"},"content":" Object[] expectedOutput \u003d {\"eat dinner\", LocalDate.parse(\"2024-12-01\", DateTimeFormatter.ofPattern(\"yyyy-MM-dd\")).atStartOfDay()};","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"Anant1902"},"content":" assertEquals(actualOutput, actualOutput);","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"Anant1902"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"Anant1902"},"content":" public void parseDeadlineWrongDateFormatTest() throws Exception {","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"Anant1902"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"Anant1902"},"content":" String testInput \u003d \"deadline eat dinner /by 2024-14-01\";","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"Anant1902"},"content":" Object[] actualOutput \u003d Parser.parseDeadline(testInput);","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"Anant1902"},"content":" Object[] expectedWrongOutput \u003d {\"eat dinner\", LocalDate.parse(\"2024-14-01\", DateTimeFormatter.ofPattern(\"yyyy-MM-dd\")).atStartOfDay()};","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"Anant1902"},"content":" ","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"Anant1902"},"content":" assertEquals(actualOutput, expectedWrongOutput);","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"Anant1902"},"content":" fail(); //This block should not be run.","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"Anant1902"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"Anant1902"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"Anant1902"},"content":" assertEquals(\"Date is of the wrong format!\", e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"Anant1902"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"Anant1902"},"content":" public void parseDeadlineWrongSpellingFormatTest() throws Exception {","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"Anant1902"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"Anant1902"},"content":" String testInput \u003d \"dedline eat dinner /by 2024-12-01\";","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"Anant1902"},"content":" Object[] actualOutput \u003d Parser.parseDeadline(testInput);","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"Anant1902"},"content":" Object[] expectedWrongOutput \u003d {\"eat dinner\", LocalDate.parse(\"2024-12-01\", DateTimeFormatter.ofPattern(\"yyyy-MM-dd\")).atStartOfDay()};","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"Anant1902"},"content":" fail(); //This block should not be run.","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"Anant1902"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"Anant1902"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"Anant1902"},"content":" assertEquals(\"Looks like you spelt deadline wrong. Please try again!\", e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"Anant1902"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"Anant1902":55}},{"path":"src/test/java/drake/task/TaskListTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Anant1902"},"content":"package drake.task;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"Anant1902"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"Anant1902"},"content":"import drake.Ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"Anant1902"},"content":"import drake.task.TaskList;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"Anant1902"},"content":"import drake.task.Task;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"Anant1902"},"content":"import drake.task.Todo;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"Anant1902"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"Anant1902"},"content":"import static org.junit.jupiter.api.Assertions.fail;","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"Anant1902"},"content":"public class TaskListTest {","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"Anant1902"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"Anant1902"},"content":" public void getTaskSucessTest() throws Exception {","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"Anant1902"},"content":" TaskList input \u003d new TaskList();","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"Anant1902"},"content":" Task task1 \u003d new Todo(\"sleep\");","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"Anant1902"},"content":" input.addTask(task1);","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"Anant1902"},"content":" input.addTask(new Todo(\"eat\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"Anant1902"},"content":" Task actualOutput \u003d input.getTask(0);","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"Anant1902"},"content":" ","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"Anant1902"},"content":" assertEquals(task1, actualOutput);","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"Anant1902"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"Anant1902"},"content":" public void getTaskOutofBoundsTest() throws Exception {","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"Anant1902"},"content":" TaskList input \u003d new TaskList();","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"Anant1902"},"content":" Task task1 \u003d new Todo(\"sleep\");","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"Anant1902"},"content":" input.addTask(task1);","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"Anant1902"},"content":" input.addTask(new Todo(\"eat\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"Anant1902"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"Anant1902"},"content":" Task actualOutput \u003d input.getTask(3);","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"Anant1902"},"content":" assertEquals(task1, actualOutput);","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"Anant1902"},"content":" fail();","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"Anant1902"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"Anant1902"},"content":" assertEquals(\"Task index is out of bounds.\", e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"Anant1902"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"Anant1902":41}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"Anant1902"},"content":"todo","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"Anant1902"},"content":"invalidddd command","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"Anant1902"},"content":"todo eat dinner","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"Anant1902"},"content":"deadline finish 2103 assignment /by 2024-10-06","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"Anant1902"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"Anant1902"},"content":"event hackathon /from Wed 2pm /to 4pm","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"Anant1902"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"Anant1902"},"content":"mark 3","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"Anant1902"},"content":"deadline finish 2103 assignment /by Wednesday","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"Anant1902"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"Anant1902"},"content":"unmark 3","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"Anant1902"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"Anant1902"},"content":"mark 2","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"Anant1902"},"content":"mark 1","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"Anant1902"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"Anant1902"},"content":"bye","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"Anant1902":16}},{"path":"text-ui-test/runtest.sh","fileType":"sh","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"#!/usr/bin/env bash","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"# create bin directory if it doesn\u0027t exist","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"if [ ! -d \"../bin\" ]","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":" mkdir ../bin","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"# delete output from previous run","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"if [ -e \"./ACTUAL.TXT\" ]","lastModifiedDate":"2020-05-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":" rm ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"# compile the code into the bin folder, terminates if error occurred","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"Anant1902"},"content":"if ! javac -cp ../src/main/java -Xlint:none -d ../bin ../src/main/java/drake/*.java","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" echo \"********** BUILD FAILURE **********\"","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" exit 1","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":"# run the program, feed commands from input.txt file and redirect the output to the ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"Anant1902"},"content":"java -classpath ../bin Drake \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":"# convert to UNIX format","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":"cp EXPECTED.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":"dos2unix ACTUAL.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"# compare the output to the expected output","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"diff ACTUAL.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":"if [ $? -eq 0 ]","lastModifiedDate":"2020-05-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":" echo \"Test result: PASSED\"","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":" exit 0","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":"else","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" echo \"Test result: FAILED\"","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" exit 1","lastModifiedDate":"2020-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"-":36,"Anant1902":2}}] diff --git a/Anant1902_ip_master/commits.json b/Anant1902_ip_master/commits.json index aa1234a6..9922ec8f 100644 --- a/Anant1902_ip_master/commits.json +++ b/Anant1902_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"Anant1902":[{"date":"2024-01-23","commitResults":[{"hash":"ae90a7eb803bb99b458c07e55f09a6e54761a25b","isMergeCommit":false,"messageTitle":"Add greeting skeleton","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":10}}}]},{"date":"2024-01-24","commitResults":[{"hash":"8812e1586c8ab979e68b1940155255345909a3e4","isMergeCommit":false,"messageTitle":"Add echo feature","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":22,"deletions":4}}},{"hash":"2c27be34ce8b679b6b3b1518c5e8ee1808ff9ead","isMergeCommit":false,"messageTitle":"Enable add and list feature","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":16,"deletions":4}}},{"hash":"2e3b53fdc1c06fec6b64681412aaee1536132489","isMergeCommit":false,"messageTitle":"Add mark feature","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":38,"deletions":5}}},{"hash":"8018728190acbd3a0bb2ff2b1a583350cbca76c6","isMergeCommit":false,"messageTitle":"add todo, events, deadlines","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":102,"deletions":6}}},{"hash":"46648c55ac3ee45c05fdf66e3bee5daab410e6e5","isMergeCommit":false,"messageTitle":"Test using i/o redirection","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":13,"deletions":0},"sh":{"insertions":1,"deletions":1}}},{"hash":"e258f85319b6bd84fcc151dea76b1b7f7043b933","isMergeCommit":false,"messageTitle":"Handle erros","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":107,"deletions":75}}},{"hash":"42a9b0fbd06fd900ed6b782fb82b821ac59a688e","isMergeCommit":false,"messageTitle":"add delete function","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":0}}},{"hash":"42d638cd355430959196e5a4dc45a5c3218e4f79","isMergeCommit":false,"messageTitle":"Use enums","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":128,"deletions":95}}}]},{"date":"2024-01-28","commitResults":[{"hash":"09e7171ee6367bbc8af364a1e417101aa512dcf4","isMergeCommit":false,"messageTitle":"Enabled file save","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":35,"deletions":5}}},{"hash":"b6eb395efe68740a6c5b50eb5a451ceb4139b8b8","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}},{"hash":"36f39842000ab521d2b13596ca54367309f861f0","isMergeCommit":false,"messageTitle":"Enable date recognition","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":30,"deletions":12}}},{"hash":"a517babbe99965851cce9a0086aa0888549e50c2","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}},{"hash":"13010ef354ee6df5c45ed8df9b6a7c72737b090c","isMergeCommit":false,"messageTitle":"Add OOP","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":1},"java":{"insertions":262,"deletions":138}}},{"hash":"f93de4713e3a36fce213b3b0706cc187fd4fb829","isMergeCommit":false,"messageTitle":"Structure into packages","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{"java":{"insertions":24,"deletions":10},"sh":{"insertions":1,"deletions":1}}},{"hash":"509134d27a53b00839699a12db7ad6d79c4fb6b5","isMergeCommit":true,"messageTitle":"Merge branch \u0027add-gradle-support\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"4530cf1c96684878e50395802bcfddc3c18afc5a","isMergeCommit":false,"messageTitle":"add gradle support","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{"gradle":{"insertions":2,"deletions":2}}}]}]},"authorFileTypeContributionMap":{"Anant1902":{"java":430,"md":0,"fxml":0,"sh":2,"bat":0,"gradle":2,"txt":16}},"authorContributionVariance":{"Anant1902":53343.04},"authorDisplayNameMap":{"Anant1902":"CS2103T-F13-1 ANAN..NKER"}} +{"authorDailyContributionsMap":{"Anant1902":[{"date":"2024-01-23","commitResults":[{"hash":"ae90a7eb803bb99b458c07e55f09a6e54761a25b","isMergeCommit":false,"messageTitle":"Add greeting skeleton","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":10}}}]},{"date":"2024-01-24","commitResults":[{"hash":"8812e1586c8ab979e68b1940155255345909a3e4","isMergeCommit":false,"messageTitle":"Add echo feature","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":22,"deletions":4}}},{"hash":"2c27be34ce8b679b6b3b1518c5e8ee1808ff9ead","isMergeCommit":false,"messageTitle":"Enable add and list feature","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":16,"deletions":4}}},{"hash":"2e3b53fdc1c06fec6b64681412aaee1536132489","isMergeCommit":false,"messageTitle":"Add mark feature","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":38,"deletions":5}}},{"hash":"8018728190acbd3a0bb2ff2b1a583350cbca76c6","isMergeCommit":false,"messageTitle":"add todo, events, deadlines","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":102,"deletions":6}}},{"hash":"46648c55ac3ee45c05fdf66e3bee5daab410e6e5","isMergeCommit":false,"messageTitle":"Test using i/o redirection","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":13,"deletions":0},"sh":{"insertions":1,"deletions":1}}},{"hash":"e258f85319b6bd84fcc151dea76b1b7f7043b933","isMergeCommit":false,"messageTitle":"Handle erros","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":107,"deletions":75}}},{"hash":"42a9b0fbd06fd900ed6b782fb82b821ac59a688e","isMergeCommit":false,"messageTitle":"add delete function","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":0}}},{"hash":"42d638cd355430959196e5a4dc45a5c3218e4f79","isMergeCommit":false,"messageTitle":"Use enums","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":128,"deletions":95}}}]},{"date":"2024-01-28","commitResults":[{"hash":"09e7171ee6367bbc8af364a1e417101aa512dcf4","isMergeCommit":false,"messageTitle":"Enabled file save","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":35,"deletions":5}}},{"hash":"b6eb395efe68740a6c5b50eb5a451ceb4139b8b8","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}},{"hash":"36f39842000ab521d2b13596ca54367309f861f0","isMergeCommit":false,"messageTitle":"Enable date recognition","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":30,"deletions":12}}},{"hash":"a517babbe99965851cce9a0086aa0888549e50c2","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}},{"hash":"13010ef354ee6df5c45ed8df9b6a7c72737b090c","isMergeCommit":false,"messageTitle":"Add OOP","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":1},"java":{"insertions":262,"deletions":138}}},{"hash":"f93de4713e3a36fce213b3b0706cc187fd4fb829","isMergeCommit":false,"messageTitle":"Structure into packages","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{"java":{"insertions":24,"deletions":10},"sh":{"insertions":1,"deletions":1}}},{"hash":"509134d27a53b00839699a12db7ad6d79c4fb6b5","isMergeCommit":true,"messageTitle":"Merge branch \u0027add-gradle-support\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"4530cf1c96684878e50395802bcfddc3c18afc5a","isMergeCommit":false,"messageTitle":"add gradle support","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{"gradle":{"insertions":2,"deletions":2}}}]},{"date":"2024-01-30","commitResults":[{"hash":"5932a69c817df5bfefeff8e99515cc49f1c5b2c3","isMergeCommit":false,"messageTitle":"Add 2 junit tests","messageBody":"","tags":["A-Jar","A-JUnit"],"fileTypesAndContributionMap":{"java":{"insertions":115,"deletions":6}}}]}]},"authorFileTypeContributionMap":{"Anant1902":{"java":539,"md":0,"fxml":0,"sh":2,"bat":0,"gradle":2,"txt":16}},"authorContributionVariance":{"Anant1902":45512.24},"authorDisplayNameMap":{"Anant1902":"CS2103T-F13-1 ANAN..NKER"}} diff --git a/AndrewOng2066_ip_master/authorship.json b/AndrewOng2066_ip_master/authorship.json index 588a6a8d..56568b5a 100644 --- a/AndrewOng2066_ip_master/authorship.json +++ b/AndrewOng2066_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"AndrewOng2066"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"AndrewOng2066"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"AndrewOng2066"},"content":"import java.util.HashMap;","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"AndrewOng2066"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":7,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"AndrewOng2066"},"content":" public enum Action {","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"AndrewOng2066"},"content":" LIST,","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"AndrewOng2066"},"content":" TODO,","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"AndrewOng2066"},"content":" DEADLINE,","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"AndrewOng2066"},"content":" EVENT,","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"AndrewOng2066"},"content":" MARK,","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"AndrewOng2066"},"content":" UNMARK,","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"AndrewOng2066"},"content":" DELETE,","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"AndrewOng2066"},"content":" BYE","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"AndrewOng2066"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"AndrewOng2066"},"content":" static ArrayList\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2019-07-29"},{"lineNumber":20,"author":{"gitId":"-"},"content":" String logo \u003d \" ____ _ \\n\"","lastModifiedDate":"2019-07-29"},{"lineNumber":21,"author":{"gitId":"-"},"content":" + \"| _ \\\\ _ _| | _____ \\n\"","lastModifiedDate":"2019-07-29"},{"lineNumber":22,"author":{"gitId":"-"},"content":" + \"| | | | | | | |/ / _ \\\\\\n\"","lastModifiedDate":"2019-07-29"},{"lineNumber":23,"author":{"gitId":"-"},"content":" + \"| |_| | |_| | \u003c __/\\n\"","lastModifiedDate":"2019-07-29"},{"lineNumber":24,"author":{"gitId":"-"},"content":" + \"|____/ \\\\__,_|_|\\\\_\\\\___|\\n\";","lastModifiedDate":"2019-07-29"},{"lineNumber":25,"author":{"gitId":"AndrewOng2066"},"content":"// System.out.println(\"Hello from\\n\" + logo);","lastModifiedDate":"2024-01-22"},{"lineNumber":26,"author":{"gitId":"AndrewOng2066"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2024-01-22"},{"lineNumber":27,"author":{"gitId":"AndrewOng2066"},"content":" System.out.println(\" Hello! I\u0027m AndrewOng2066\");","lastModifiedDate":"2024-01-22"},{"lineNumber":28,"author":{"gitId":"AndrewOng2066"},"content":" System.out.println(\" What can I do for you?\");","lastModifiedDate":"2024-01-22"},{"lineNumber":29,"author":{"gitId":"AndrewOng2066"},"content":" System.out.println(\" ____________________________________________________________\\n\");","lastModifiedDate":"2024-01-22"},{"lineNumber":30,"author":{"gitId":"AndrewOng2066"},"content":" Scanner sc \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-22"},{"lineNumber":31,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":32,"author":{"gitId":"AndrewOng2066"},"content":" String userInput \u003d sc.nextLine().trim();","lastModifiedDate":"2024-01-22"},{"lineNumber":33,"author":{"gitId":"AndrewOng2066"},"content":" while (!userInput.equalsIgnoreCase(Action.BYE.toString())) {","lastModifiedDate":"2024-01-24"},{"lineNumber":34,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":35,"author":{"gitId":"AndrewOng2066"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2024-01-23"},{"lineNumber":36,"author":{"gitId":"AndrewOng2066"},"content":" String[] splitInput \u003d userInput.split(\" \");","lastModifiedDate":"2024-01-22"},{"lineNumber":37,"author":{"gitId":"AndrewOng2066"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":38,"author":{"gitId":"AndrewOng2066"},"content":" if (splitInput[0].equalsIgnoreCase(Action.LIST.toString())) {","lastModifiedDate":"2024-01-24"},{"lineNumber":39,"author":{"gitId":"AndrewOng2066"},"content":" listMethod();","lastModifiedDate":"2024-01-24"},{"lineNumber":40,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":41,"author":{"gitId":"AndrewOng2066"},"content":" } else if (splitInput[0].equalsIgnoreCase(Action.MARK.toString())) {","lastModifiedDate":"2024-01-24"},{"lineNumber":42,"author":{"gitId":"AndrewOng2066"},"content":" markTask(userInput);","lastModifiedDate":"2024-01-23"},{"lineNumber":43,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":44,"author":{"gitId":"AndrewOng2066"},"content":" } else if (splitInput[0].equalsIgnoreCase(Action.UNMARK.toString())) {","lastModifiedDate":"2024-01-24"},{"lineNumber":45,"author":{"gitId":"AndrewOng2066"},"content":" unmarkTask(userInput);","lastModifiedDate":"2024-01-23"},{"lineNumber":46,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":47,"author":{"gitId":"AndrewOng2066"},"content":" } else if (splitInput[0].equalsIgnoreCase(Action.TODO.toString())) {","lastModifiedDate":"2024-01-24"},{"lineNumber":48,"author":{"gitId":"AndrewOng2066"},"content":" addToDo(userInput);","lastModifiedDate":"2024-01-23"},{"lineNumber":49,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":50,"author":{"gitId":"AndrewOng2066"},"content":" } else if (splitInput[0].equalsIgnoreCase(Action.DEADLINE.toString())) {","lastModifiedDate":"2024-01-24"},{"lineNumber":51,"author":{"gitId":"AndrewOng2066"},"content":" addDeadline(userInput);","lastModifiedDate":"2024-01-23"},{"lineNumber":52,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":53,"author":{"gitId":"AndrewOng2066"},"content":" } else if (splitInput[0].equalsIgnoreCase(Action.EVENT.toString())) {","lastModifiedDate":"2024-01-24"},{"lineNumber":54,"author":{"gitId":"AndrewOng2066"},"content":" addEvent(userInput);","lastModifiedDate":"2024-01-23"},{"lineNumber":55,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":56,"author":{"gitId":"AndrewOng2066"},"content":" } else if (splitInput[0].equalsIgnoreCase(Action.DELETE.toString())) {","lastModifiedDate":"2024-01-24"},{"lineNumber":57,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":58,"author":{"gitId":"AndrewOng2066"},"content":" deleteTask(userInput);","lastModifiedDate":"2024-01-24"},{"lineNumber":59,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":60,"author":{"gitId":"AndrewOng2066"},"content":" } else {","lastModifiedDate":"2024-01-23"},{"lineNumber":61,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":62,"author":{"gitId":"AndrewOng2066"},"content":" System.out.println(\" I\u0027m sorry, I do not understand that.\");","lastModifiedDate":"2024-01-23"},{"lineNumber":63,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":64,"author":{"gitId":"AndrewOng2066"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":65,"author":{"gitId":"AndrewOng2066"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":66,"author":{"gitId":"AndrewOng2066"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-24"},{"lineNumber":67,"author":{"gitId":"AndrewOng2066"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":68,"author":{"gitId":"AndrewOng2066"},"content":" System.out.println(\" ____________________________________________________________\\n\");","lastModifiedDate":"2024-01-23"},{"lineNumber":69,"author":{"gitId":"AndrewOng2066"},"content":" userInput \u003d sc.nextLine().trim();","lastModifiedDate":"2024-01-23"},{"lineNumber":70,"author":{"gitId":"AndrewOng2066"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":71,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":72,"author":{"gitId":"AndrewOng2066"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2024-01-23"},{"lineNumber":73,"author":{"gitId":"AndrewOng2066"},"content":" System.out.println(\" Bye. Hope to see you again soon!\");","lastModifiedDate":"2024-01-23"},{"lineNumber":74,"author":{"gitId":"AndrewOng2066"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2024-01-23"},{"lineNumber":75,"author":{"gitId":"AndrewOng2066"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":76,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":77,"author":{"gitId":"AndrewOng2066"},"content":" public static void listMethod() {","lastModifiedDate":"2024-01-24"},{"lineNumber":78,"author":{"gitId":"AndrewOng2066"},"content":" System.out.println(\" Here are the tasks in your list:\");","lastModifiedDate":"2024-01-24"},{"lineNumber":79,"author":{"gitId":"AndrewOng2066"},"content":" for (int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2024-01-24"},{"lineNumber":80,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":81,"author":{"gitId":"AndrewOng2066"},"content":" System.out.println(\" \" + (i + 1) + \".\" + tasks.get(i).toString());","lastModifiedDate":"2024-01-24"},{"lineNumber":82,"author":{"gitId":"AndrewOng2066"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":83,"author":{"gitId":"AndrewOng2066"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":84,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":85,"author":{"gitId":"AndrewOng2066"},"content":" public static void addToDo(String input) throws DukeException {","lastModifiedDate":"2024-01-23"},{"lineNumber":86,"author":{"gitId":"AndrewOng2066"},"content":" String[] splitInput \u003d input.split(\" \");","lastModifiedDate":"2024-01-23"},{"lineNumber":87,"author":{"gitId":"AndrewOng2066"},"content":" if (splitInput.length \u003c\u003d 1) {","lastModifiedDate":"2024-01-23"},{"lineNumber":88,"author":{"gitId":"AndrewOng2066"},"content":" throw new DukeException(\" Missing the description!\");","lastModifiedDate":"2024-01-23"},{"lineNumber":89,"author":{"gitId":"AndrewOng2066"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":90,"author":{"gitId":"AndrewOng2066"},"content":" String name \u003d \"\";","lastModifiedDate":"2024-01-22"},{"lineNumber":91,"author":{"gitId":"AndrewOng2066"},"content":" for (int i \u003d 1; i \u003c splitInput.length; i++) {","lastModifiedDate":"2024-01-22"},{"lineNumber":92,"author":{"gitId":"AndrewOng2066"},"content":" name +\u003d splitInput[i] + \" \";","lastModifiedDate":"2024-01-22"},{"lineNumber":93,"author":{"gitId":"AndrewOng2066"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":94,"author":{"gitId":"AndrewOng2066"},"content":" ToDo newToDo\u003d new ToDo(name.trim());","lastModifiedDate":"2024-01-24"},{"lineNumber":95,"author":{"gitId":"AndrewOng2066"},"content":" tasks.add(newToDo);","lastModifiedDate":"2024-01-24"},{"lineNumber":96,"author":{"gitId":"AndrewOng2066"},"content":" System.out.println(\" Got it. I\u0027ve added this task:\");","lastModifiedDate":"2024-01-22"},{"lineNumber":97,"author":{"gitId":"AndrewOng2066"},"content":" System.out.println(\" \" + newToDo.toString());","lastModifiedDate":"2024-01-24"},{"lineNumber":98,"author":{"gitId":"AndrewOng2066"},"content":" System.out.println(\" Now you have \" + tasks.size() + \" tasks in the list.\");","lastModifiedDate":"2024-01-22"},{"lineNumber":99,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":100,"author":{"gitId":"AndrewOng2066"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":101,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":102,"author":{"gitId":"AndrewOng2066"},"content":" public static void addDeadline(String input) throws DukeException {","lastModifiedDate":"2024-01-23"},{"lineNumber":103,"author":{"gitId":"AndrewOng2066"},"content":" String[] splitInput \u003d input.split(\" \");","lastModifiedDate":"2024-01-23"},{"lineNumber":104,"author":{"gitId":"AndrewOng2066"},"content":" if (splitInput.length \u003c\u003d 1) {","lastModifiedDate":"2024-01-23"},{"lineNumber":105,"author":{"gitId":"AndrewOng2066"},"content":" throw new DukeException(\" Missing the description!\");","lastModifiedDate":"2024-01-23"},{"lineNumber":106,"author":{"gitId":"AndrewOng2066"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":107,"author":{"gitId":"AndrewOng2066"},"content":" String[] deadlineSplit \u003d input.split(\"/\");","lastModifiedDate":"2024-01-23"},{"lineNumber":108,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":109,"author":{"gitId":"AndrewOng2066"},"content":" if (deadlineSplit.length \u003c 2) {","lastModifiedDate":"2024-01-23"},{"lineNumber":110,"author":{"gitId":"AndrewOng2066"},"content":" throw new DukeException(\" Invalid format for new Deadline!\");","lastModifiedDate":"2024-01-23"},{"lineNumber":111,"author":{"gitId":"AndrewOng2066"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":112,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":113,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":114,"author":{"gitId":"AndrewOng2066"},"content":" String name \u003d deadlineSplit[0].substring(9).trim();","lastModifiedDate":"2024-01-22"},{"lineNumber":115,"author":{"gitId":"AndrewOng2066"},"content":" String by \u003d deadlineSplit[1].substring(3).trim();","lastModifiedDate":"2024-01-22"},{"lineNumber":116,"author":{"gitId":"AndrewOng2066"},"content":" Deadline newDeadline \u003d new Deadline(name, by);","lastModifiedDate":"2024-01-24"},{"lineNumber":117,"author":{"gitId":"AndrewOng2066"},"content":" tasks.add(newDeadline);","lastModifiedDate":"2024-01-24"},{"lineNumber":118,"author":{"gitId":"AndrewOng2066"},"content":" System.out.println(\" Got it. I\u0027ve added this task:\");","lastModifiedDate":"2024-01-22"},{"lineNumber":119,"author":{"gitId":"AndrewOng2066"},"content":" System.out.println(\" \" + newDeadline.toString());","lastModifiedDate":"2024-01-24"},{"lineNumber":120,"author":{"gitId":"AndrewOng2066"},"content":" System.out.println(\" Now you have \" + tasks.size() + \" tasks in the list.\");","lastModifiedDate":"2024-01-22"},{"lineNumber":121,"author":{"gitId":"AndrewOng2066"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":122,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":123,"author":{"gitId":"AndrewOng2066"},"content":" public static void addEvent(String input) throws DukeException {","lastModifiedDate":"2024-01-23"},{"lineNumber":124,"author":{"gitId":"AndrewOng2066"},"content":" String[] splitInput \u003d input.split(\" \");","lastModifiedDate":"2024-01-23"},{"lineNumber":125,"author":{"gitId":"AndrewOng2066"},"content":" if (splitInput.length \u003c\u003d 1) {","lastModifiedDate":"2024-01-23"},{"lineNumber":126,"author":{"gitId":"AndrewOng2066"},"content":" throw new DukeException(\" Missing the description!\");","lastModifiedDate":"2024-01-23"},{"lineNumber":127,"author":{"gitId":"AndrewOng2066"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":128,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":129,"author":{"gitId":"AndrewOng2066"},"content":" String[] eventSplit \u003d input.split(\"/\");","lastModifiedDate":"2024-01-23"},{"lineNumber":130,"author":{"gitId":"AndrewOng2066"},"content":" if (eventSplit.length \u003c 3) {","lastModifiedDate":"2024-01-23"},{"lineNumber":131,"author":{"gitId":"AndrewOng2066"},"content":" throw new DukeException(\" Invalid format for new Event!\");","lastModifiedDate":"2024-01-23"},{"lineNumber":132,"author":{"gitId":"AndrewOng2066"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":133,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":134,"author":{"gitId":"AndrewOng2066"},"content":" String name \u003d eventSplit[0].substring(6).trim();","lastModifiedDate":"2024-01-22"},{"lineNumber":135,"author":{"gitId":"AndrewOng2066"},"content":" String start \u003d eventSplit[1].substring(5).trim();","lastModifiedDate":"2024-01-22"},{"lineNumber":136,"author":{"gitId":"AndrewOng2066"},"content":" String end \u003d eventSplit[2].substring(3).trim();","lastModifiedDate":"2024-01-22"},{"lineNumber":137,"author":{"gitId":"AndrewOng2066"},"content":" Event newEvent \u003d new Event(name, start, end);","lastModifiedDate":"2024-01-24"},{"lineNumber":138,"author":{"gitId":"AndrewOng2066"},"content":" tasks.add(newEvent);","lastModifiedDate":"2024-01-24"},{"lineNumber":139,"author":{"gitId":"AndrewOng2066"},"content":" System.out.println(\" Got it. I\u0027ve added this task:\");","lastModifiedDate":"2024-01-22"},{"lineNumber":140,"author":{"gitId":"AndrewOng2066"},"content":" System.out.println(\" \" + newEvent.toString());","lastModifiedDate":"2024-01-24"},{"lineNumber":141,"author":{"gitId":"AndrewOng2066"},"content":" System.out.println(\" Now you have \" + tasks.size() + \" tasks in the list.\");","lastModifiedDate":"2024-01-22"},{"lineNumber":142,"author":{"gitId":"AndrewOng2066"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":143,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":144,"author":{"gitId":"AndrewOng2066"},"content":" public static void markTask(String input) throws DukeException {","lastModifiedDate":"2024-01-23"},{"lineNumber":145,"author":{"gitId":"AndrewOng2066"},"content":" String splitInput[] \u003d input.split(\" \");","lastModifiedDate":"2024-01-23"},{"lineNumber":146,"author":{"gitId":"AndrewOng2066"},"content":" if (tasks.size() \u003d\u003d 0) {","lastModifiedDate":"2024-01-23"},{"lineNumber":147,"author":{"gitId":"AndrewOng2066"},"content":" throw new DukeException(\" No task at the moment.\");","lastModifiedDate":"2024-01-23"},{"lineNumber":148,"author":{"gitId":"AndrewOng2066"},"content":" } else if (splitInput.length \u003c 2) {","lastModifiedDate":"2024-01-23"},{"lineNumber":149,"author":{"gitId":"AndrewOng2066"},"content":" throw new DukeException(\" Please select the task.\");","lastModifiedDate":"2024-01-23"},{"lineNumber":150,"author":{"gitId":"AndrewOng2066"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":151,"author":{"gitId":"AndrewOng2066"},"content":" int choiceMark;","lastModifiedDate":"2024-01-24"},{"lineNumber":152,"author":{"gitId":"AndrewOng2066"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":153,"author":{"gitId":"AndrewOng2066"},"content":" choiceMark \u003d Integer.parseInt(splitInput[1]);","lastModifiedDate":"2024-01-24"},{"lineNumber":154,"author":{"gitId":"AndrewOng2066"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":155,"author":{"gitId":"AndrewOng2066"},"content":" throw new DukeException(\" Please enter a valid integer value.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":156,"author":{"gitId":"AndrewOng2066"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":157,"author":{"gitId":"AndrewOng2066"},"content":" if (choiceMark \u003c\u003d tasks.size() \u0026\u0026 choiceMark \u003e 0) {","lastModifiedDate":"2024-01-25"},{"lineNumber":158,"author":{"gitId":"AndrewOng2066"},"content":" tasks.get(choiceMark - 1).markAsDone();","lastModifiedDate":"2024-01-23"},{"lineNumber":159,"author":{"gitId":"AndrewOng2066"},"content":" System.out.println(\" Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2024-01-23"},{"lineNumber":160,"author":{"gitId":"AndrewOng2066"},"content":"// System.out.println(\" \" + \"[X] \" + tasks.get(choiceMark - 1).toString());","lastModifiedDate":"2024-01-24"},{"lineNumber":161,"author":{"gitId":"AndrewOng2066"},"content":" System.out.println(\" \" + tasks.get(choiceMark - 1).toString());","lastModifiedDate":"2024-01-24"},{"lineNumber":162,"author":{"gitId":"AndrewOng2066"},"content":" } else {","lastModifiedDate":"2024-01-22"},{"lineNumber":163,"author":{"gitId":"AndrewOng2066"},"content":" throw new DukeException(\" Invalid choice.\");","lastModifiedDate":"2024-01-23"},{"lineNumber":164,"author":{"gitId":"AndrewOng2066"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":165,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":166,"author":{"gitId":"AndrewOng2066"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":167,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":168,"author":{"gitId":"AndrewOng2066"},"content":" public static void unmarkTask(String input) throws DukeException {","lastModifiedDate":"2024-01-23"},{"lineNumber":169,"author":{"gitId":"AndrewOng2066"},"content":" String splitInput[] \u003d input.split(\" \");","lastModifiedDate":"2024-01-23"},{"lineNumber":170,"author":{"gitId":"AndrewOng2066"},"content":" if (tasks.size() \u003d\u003d 0) {","lastModifiedDate":"2024-01-23"},{"lineNumber":171,"author":{"gitId":"AndrewOng2066"},"content":" throw new DukeException(\" No task at the moment.\");","lastModifiedDate":"2024-01-23"},{"lineNumber":172,"author":{"gitId":"AndrewOng2066"},"content":" } else if (splitInput.length \u003c 2) {","lastModifiedDate":"2024-01-23"},{"lineNumber":173,"author":{"gitId":"AndrewOng2066"},"content":" throw new DukeException(\" Please select the task.\");","lastModifiedDate":"2024-01-23"},{"lineNumber":174,"author":{"gitId":"AndrewOng2066"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":175,"author":{"gitId":"AndrewOng2066"},"content":" int choiceUnmark;","lastModifiedDate":"2024-01-24"},{"lineNumber":176,"author":{"gitId":"AndrewOng2066"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":177,"author":{"gitId":"AndrewOng2066"},"content":" choiceUnmark \u003d Integer.parseInt(splitInput[1]);","lastModifiedDate":"2024-01-24"},{"lineNumber":178,"author":{"gitId":"AndrewOng2066"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":179,"author":{"gitId":"AndrewOng2066"},"content":" throw new DukeException(\" Please enter a valid integer value.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":180,"author":{"gitId":"AndrewOng2066"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":181,"author":{"gitId":"AndrewOng2066"},"content":" if (choiceUnmark \u003c\u003d tasks.size() \u0026\u0026 choiceUnmark \u003e 0) {","lastModifiedDate":"2024-01-25"},{"lineNumber":182,"author":{"gitId":"AndrewOng2066"},"content":" tasks.get(choiceUnmark - 1).markAsUndone();","lastModifiedDate":"2024-01-24"},{"lineNumber":183,"author":{"gitId":"AndrewOng2066"},"content":" System.out.println(\" OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2024-01-23"},{"lineNumber":184,"author":{"gitId":"AndrewOng2066"},"content":"// System.out.println(\" \" + \"[ ] \" + tasks.get(choiceUnmark - 1).toString());","lastModifiedDate":"2024-01-24"},{"lineNumber":185,"author":{"gitId":"AndrewOng2066"},"content":" System.out.println(\" \" + tasks.get(choiceUnmark - 1).toString());","lastModifiedDate":"2024-01-24"},{"lineNumber":186,"author":{"gitId":"AndrewOng2066"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":187,"author":{"gitId":"AndrewOng2066"},"content":" System.out.println(\" Invalid choice\");","lastModifiedDate":"2024-01-24"},{"lineNumber":188,"author":{"gitId":"AndrewOng2066"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":189,"author":{"gitId":"AndrewOng2066"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":190,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":191,"author":{"gitId":"AndrewOng2066"},"content":" public static void deleteTask(String input) throws DukeException {","lastModifiedDate":"2024-01-24"},{"lineNumber":192,"author":{"gitId":"AndrewOng2066"},"content":" String[] splitInput \u003d input.split(\" \");","lastModifiedDate":"2024-01-24"},{"lineNumber":193,"author":{"gitId":"AndrewOng2066"},"content":" if (tasks.size() \u003d\u003d 0) {","lastModifiedDate":"2024-01-24"},{"lineNumber":194,"author":{"gitId":"AndrewOng2066"},"content":" throw new DukeException(\" No task at the moment.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":195,"author":{"gitId":"AndrewOng2066"},"content":" } else if (splitInput.length \u003c 2) {","lastModifiedDate":"2024-01-24"},{"lineNumber":196,"author":{"gitId":"AndrewOng2066"},"content":" throw new DukeException(\" Please select the task.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":197,"author":{"gitId":"AndrewOng2066"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":198,"author":{"gitId":"AndrewOng2066"},"content":" int choiceDelete;","lastModifiedDate":"2024-01-24"},{"lineNumber":199,"author":{"gitId":"AndrewOng2066"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":200,"author":{"gitId":"AndrewOng2066"},"content":" choiceDelete \u003d Integer.parseInt(splitInput[1]);","lastModifiedDate":"2024-01-24"},{"lineNumber":201,"author":{"gitId":"AndrewOng2066"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":202,"author":{"gitId":"AndrewOng2066"},"content":" throw new DukeException(\" Please enter a valid integer value.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":203,"author":{"gitId":"AndrewOng2066"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":204,"author":{"gitId":"AndrewOng2066"},"content":" if (choiceDelete \u003c\u003d tasks.size() \u0026\u0026 choiceDelete \u003e 0) {","lastModifiedDate":"2024-01-25"},{"lineNumber":205,"author":{"gitId":"AndrewOng2066"},"content":" Task deletedTask \u003d tasks.get(choiceDelete - 1);","lastModifiedDate":"2024-01-24"},{"lineNumber":206,"author":{"gitId":"AndrewOng2066"},"content":" tasks.remove(choiceDelete - 1);","lastModifiedDate":"2024-01-24"},{"lineNumber":207,"author":{"gitId":"AndrewOng2066"},"content":" System.out.println(\" Noted, I\u0027ve removed this task:\");","lastModifiedDate":"2024-01-24"},{"lineNumber":208,"author":{"gitId":"AndrewOng2066"},"content":" System.out.println(\" \" + deletedTask.toString());","lastModifiedDate":"2024-01-24"},{"lineNumber":209,"author":{"gitId":"AndrewOng2066"},"content":" System.out.println(\" Now you have \" + tasks.size() + \" tasks in the list.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":210,"author":{"gitId":"AndrewOng2066"},"content":" } else {","lastModifiedDate":"2024-01-23"},{"lineNumber":211,"author":{"gitId":"AndrewOng2066"},"content":" System.out.println(\" Invalid choice\");","lastModifiedDate":"2024-01-23"},{"lineNumber":212,"author":{"gitId":"AndrewOng2066"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":213,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":214,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":215,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"},{"lineNumber":216,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":217,"author":{"gitId":"AndrewOng2066"},"content":"class Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":218,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":219,"author":{"gitId":"AndrewOng2066"},"content":" private String description;","lastModifiedDate":"2024-01-22"},{"lineNumber":220,"author":{"gitId":"AndrewOng2066"},"content":" private boolean isDone;","lastModifiedDate":"2024-01-22"},{"lineNumber":221,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":222,"author":{"gitId":"AndrewOng2066"},"content":" public Task(String description) {","lastModifiedDate":"2024-01-22"},{"lineNumber":223,"author":{"gitId":"AndrewOng2066"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-22"},{"lineNumber":224,"author":{"gitId":"AndrewOng2066"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-22"},{"lineNumber":225,"author":{"gitId":"AndrewOng2066"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":226,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":227,"author":{"gitId":"AndrewOng2066"},"content":" public String getDescription() {","lastModifiedDate":"2024-01-22"},{"lineNumber":228,"author":{"gitId":"AndrewOng2066"},"content":" return description;","lastModifiedDate":"2024-01-22"},{"lineNumber":229,"author":{"gitId":"AndrewOng2066"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":230,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":231,"author":{"gitId":"AndrewOng2066"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-01-22"},{"lineNumber":232,"author":{"gitId":"AndrewOng2066"},"content":" return (isDone ? \"X\" : \" \");","lastModifiedDate":"2024-01-22"},{"lineNumber":233,"author":{"gitId":"AndrewOng2066"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":234,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":235,"author":{"gitId":"AndrewOng2066"},"content":" public void markAsDone() {","lastModifiedDate":"2024-01-22"},{"lineNumber":236,"author":{"gitId":"AndrewOng2066"},"content":" this.isDone \u003d true;","lastModifiedDate":"2024-01-22"},{"lineNumber":237,"author":{"gitId":"AndrewOng2066"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":238,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":239,"author":{"gitId":"AndrewOng2066"},"content":" public void markAsUndone() {","lastModifiedDate":"2024-01-22"},{"lineNumber":240,"author":{"gitId":"AndrewOng2066"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-22"},{"lineNumber":241,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":242,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2024-01-22"},{"lineNumber":243,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":244,"author":{"gitId":"AndrewOng2066"},"content":"class ToDo extends Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":245,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":246,"author":{"gitId":"AndrewOng2066"},"content":" public ToDo(String description) {","lastModifiedDate":"2024-01-22"},{"lineNumber":247,"author":{"gitId":"AndrewOng2066"},"content":" super(description);","lastModifiedDate":"2024-01-22"},{"lineNumber":248,"author":{"gitId":"AndrewOng2066"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":249,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":250,"author":{"gitId":"AndrewOng2066"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":251,"author":{"gitId":"AndrewOng2066"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":252,"author":{"gitId":"AndrewOng2066"},"content":" return \"[T][\"+ super.getStatusIcon() +\"] \" + super.getDescription();","lastModifiedDate":"2024-01-24"},{"lineNumber":253,"author":{"gitId":"AndrewOng2066"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":254,"author":{"gitId":"AndrewOng2066"},"content":"}","lastModifiedDate":"2024-01-22"},{"lineNumber":255,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":256,"author":{"gitId":"AndrewOng2066"},"content":"class Deadline extends Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":257,"author":{"gitId":"AndrewOng2066"},"content":" String by;","lastModifiedDate":"2024-01-22"},{"lineNumber":258,"author":{"gitId":"AndrewOng2066"},"content":" public Deadline(String description, String by) {","lastModifiedDate":"2024-01-22"},{"lineNumber":259,"author":{"gitId":"AndrewOng2066"},"content":" super(description);","lastModifiedDate":"2024-01-22"},{"lineNumber":260,"author":{"gitId":"AndrewOng2066"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-22"},{"lineNumber":261,"author":{"gitId":"AndrewOng2066"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":262,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":263,"author":{"gitId":"AndrewOng2066"},"content":" public String getBy() {","lastModifiedDate":"2024-01-22"},{"lineNumber":264,"author":{"gitId":"AndrewOng2066"},"content":" return this.by;","lastModifiedDate":"2024-01-22"},{"lineNumber":265,"author":{"gitId":"AndrewOng2066"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":266,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":267,"author":{"gitId":"AndrewOng2066"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":268,"author":{"gitId":"AndrewOng2066"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":269,"author":{"gitId":"AndrewOng2066"},"content":" return \"[D][\"+ super.getStatusIcon() +\"] \" + super.getDescription() + \" (by: \" + this.by + \")\";","lastModifiedDate":"2024-01-24"},{"lineNumber":270,"author":{"gitId":"AndrewOng2066"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":271,"author":{"gitId":"AndrewOng2066"},"content":"}","lastModifiedDate":"2024-01-22"},{"lineNumber":272,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":273,"author":{"gitId":"AndrewOng2066"},"content":"class Event extends Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":274,"author":{"gitId":"AndrewOng2066"},"content":" String start;","lastModifiedDate":"2024-01-22"},{"lineNumber":275,"author":{"gitId":"AndrewOng2066"},"content":" String end;","lastModifiedDate":"2024-01-22"},{"lineNumber":276,"author":{"gitId":"AndrewOng2066"},"content":" public Event(String description, String start, String end) {","lastModifiedDate":"2024-01-22"},{"lineNumber":277,"author":{"gitId":"AndrewOng2066"},"content":" super(description);","lastModifiedDate":"2024-01-22"},{"lineNumber":278,"author":{"gitId":"AndrewOng2066"},"content":" this.start \u003d start;","lastModifiedDate":"2024-01-22"},{"lineNumber":279,"author":{"gitId":"AndrewOng2066"},"content":" this.end \u003d end;","lastModifiedDate":"2024-01-22"},{"lineNumber":280,"author":{"gitId":"AndrewOng2066"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":281,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":282,"author":{"gitId":"AndrewOng2066"},"content":" public String getStart() {","lastModifiedDate":"2024-01-22"},{"lineNumber":283,"author":{"gitId":"AndrewOng2066"},"content":" return this.start;","lastModifiedDate":"2024-01-22"},{"lineNumber":284,"author":{"gitId":"AndrewOng2066"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":285,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":286,"author":{"gitId":"AndrewOng2066"},"content":" public String getEnd() {","lastModifiedDate":"2024-01-22"},{"lineNumber":287,"author":{"gitId":"AndrewOng2066"},"content":" return this.end;","lastModifiedDate":"2024-01-22"},{"lineNumber":288,"author":{"gitId":"AndrewOng2066"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":289,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":290,"author":{"gitId":"AndrewOng2066"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":291,"author":{"gitId":"AndrewOng2066"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":292,"author":{"gitId":"AndrewOng2066"},"content":" return \"[E][\"+ super.getStatusIcon() +\"] \" + super.getDescription() + \" (from: \" + this.start + \" to: \" + this.end + \")\";","lastModifiedDate":"2024-01-24"},{"lineNumber":293,"author":{"gitId":"AndrewOng2066"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":294,"author":{"gitId":"AndrewOng2066"},"content":"}","lastModifiedDate":"2024-01-22"},{"lineNumber":295,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":296,"author":{"gitId":"AndrewOng2066"},"content":"class DukeException extends Exception{","lastModifiedDate":"2024-01-23"},{"lineNumber":297,"author":{"gitId":"AndrewOng2066"},"content":" public DukeException(String message) {","lastModifiedDate":"2024-01-23"},{"lineNumber":298,"author":{"gitId":"AndrewOng2066"},"content":" super(message);","lastModifiedDate":"2024-01-23"},{"lineNumber":299,"author":{"gitId":"AndrewOng2066"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":300,"author":{"gitId":"AndrewOng2066"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"AndrewOng2066":289,"-":11}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"AndrewOng2066"},"content":"todo read book","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"AndrewOng2066"},"content":"todo return book","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"AndrewOng2066"},"content":"bye","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"AndrewOng2066":3}},{"path":"text-ui-test/input2.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"AndrewOng2066"},"content":"todo read book","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"AndrewOng2066"},"content":"deadline return book /by June 6th","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"AndrewOng2066"},"content":"event project meeting /from Aug 6th 2pm /to 4pm","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"AndrewOng2066"},"content":"todo","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"AndrewOng2066"},"content":"todo join sports club","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"AndrewOng2066"},"content":"todo borrow book","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"AndrewOng2066"},"content":"mark 1","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"AndrewOng2066"},"content":"mark 4","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"AndrewOng2066"},"content":"deadline","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"AndrewOng2066"},"content":"deadline return book","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"AndrewOng2066"},"content":"deadline return book /by Sunday","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"AndrewOng2066"},"content":"event","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"AndrewOng2066"},"content":"event meeting","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"AndrewOng2066"},"content":"event meeting /from 5pm","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"AndrewOng2066"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"AndrewOng2066"},"content":"list","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"AndrewOng2066"},"content":"mark 5","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"AndrewOng2066"},"content":"mark 7","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"AndrewOng2066"},"content":"mark","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"AndrewOng2066"},"content":"mark 9","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"AndrewOng2066"},"content":"list","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"AndrewOng2066"},"content":"unmark","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"AndrewOng2066"},"content":"unmark 4","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"AndrewOng2066"},"content":"unmark 9","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"AndrewOng2066"},"content":"delete","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"AndrewOng2066"},"content":"delete 8","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"AndrewOng2066"},"content":"delete 6","lastModifiedDate":"2024-01-25"},{"lineNumber":28,"author":{"gitId":"AndrewOng2066"},"content":"list","lastModifiedDate":"2024-01-25"},{"lineNumber":29,"author":{"gitId":"AndrewOng2066"},"content":"blah","lastModifiedDate":"2024-01-25"},{"lineNumber":30,"author":{"gitId":"AndrewOng2066"},"content":"bye","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"AndrewOng2066":30}},{"path":"text-ui-test/runtest2.bat","fileType":"bat","lines":[{"lineNumber":1,"author":{"gitId":"AndrewOng2066"},"content":"@ECHO OFF","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"AndrewOng2066"},"content":"REM create bin directory if it doesn\u0027t exist","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"AndrewOng2066"},"content":"if not exist ..\\bin mkdir ..\\bin","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"AndrewOng2066"},"content":"REM delete output from previous run","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"AndrewOng2066"},"content":"if exist ACTUAL.TXT del ACTUAL.TXT","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"AndrewOng2066"},"content":"REM compile the code into the bin folder","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"AndrewOng2066"},"content":"javac -cp ..\\src\\main\\java -Xlint:none -d ..\\bin ..\\src\\main\\java\\*.java","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"AndrewOng2066"},"content":"IF ERRORLEVEL 1 (","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"AndrewOng2066"},"content":" echo ********** BUILD FAILURE **********","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"AndrewOng2066"},"content":" exit /b 1","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"AndrewOng2066"},"content":")","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"AndrewOng2066"},"content":"REM no error here, errorlevel \u003d\u003d 0","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"AndrewOng2066"},"content":"REM run the program, feed commands from input.txt file and redirect the output to the ACTUAL.TXT","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"AndrewOng2066"},"content":"java -classpath ..\\bin Duke \u003c input2.txt \u003e ACTUAL2.TXT","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"AndrewOng2066"},"content":"REM compare the output to the expected output","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"AndrewOng2066"},"content":"FC ACTUAL2.TXT EXPECTED2.TXT","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"AndrewOng2066":21}},{"path":"text-ui-test/runtest2.sh","fileType":"sh","lines":[{"lineNumber":1,"author":{"gitId":"AndrewOng2066"},"content":"#!/usr/bin/env bash","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"AndrewOng2066"},"content":"# create bin directory if it doesn\u0027t exist","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"AndrewOng2066"},"content":"if [ ! -d \"../bin\" ]","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"AndrewOng2066"},"content":"then","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"AndrewOng2066"},"content":" mkdir ../bin","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"AndrewOng2066"},"content":"fi","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"AndrewOng2066"},"content":"# delete output from previous run","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"AndrewOng2066"},"content":"if [ -e \"./ACTUAL.TXT\" ]","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"AndrewOng2066"},"content":"then","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"AndrewOng2066"},"content":" rm ACTUAL.TXT","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"AndrewOng2066"},"content":"fi","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"AndrewOng2066"},"content":"# compile the code into the bin folder, terminates if error occurred","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"AndrewOng2066"},"content":"if ! javac -cp ../src/main/java -Xlint:none -d ../bin ../src/main/java/*.java","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"AndrewOng2066"},"content":"then","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"AndrewOng2066"},"content":" echo \"********** BUILD FAILURE **********\"","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"AndrewOng2066"},"content":" exit 1","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"AndrewOng2066"},"content":"fi","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"AndrewOng2066"},"content":"# run the program, feed commands from input.txt file and redirect the output to the ACTUAL.TXT","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"AndrewOng2066"},"content":"java -classpath ../bin Duke \u003c input2.txt \u003e ACTUAL2.TXT","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"AndrewOng2066"},"content":"# convert to UNIX format","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"AndrewOng2066"},"content":"cp EXPECTED2.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"AndrewOng2066"},"content":"dos2unix ACTUAL2.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2024-01-25"},{"lineNumber":28,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":29,"author":{"gitId":"AndrewOng2066"},"content":"# compare the output to the expected output","lastModifiedDate":"2024-01-25"},{"lineNumber":30,"author":{"gitId":"AndrewOng2066"},"content":"diff ACTUAL2.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2024-01-25"},{"lineNumber":31,"author":{"gitId":"AndrewOng2066"},"content":"if [ $? -eq 0 ]","lastModifiedDate":"2024-01-25"},{"lineNumber":32,"author":{"gitId":"AndrewOng2066"},"content":"then","lastModifiedDate":"2024-01-25"},{"lineNumber":33,"author":{"gitId":"AndrewOng2066"},"content":" echo \"Test result: PASSED\"","lastModifiedDate":"2024-01-25"},{"lineNumber":34,"author":{"gitId":"AndrewOng2066"},"content":" exit 0","lastModifiedDate":"2024-01-25"},{"lineNumber":35,"author":{"gitId":"AndrewOng2066"},"content":"else","lastModifiedDate":"2024-01-25"},{"lineNumber":36,"author":{"gitId":"AndrewOng2066"},"content":" echo \"Test result: FAILED\"","lastModifiedDate":"2024-01-25"},{"lineNumber":37,"author":{"gitId":"AndrewOng2066"},"content":" exit 1","lastModifiedDate":"2024-01-25"},{"lineNumber":38,"author":{"gitId":"AndrewOng2066"},"content":"fi","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"AndrewOng2066":38}}] +[{"path":"data/duke.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"AndrewOng2066"},"content":"T | 0 | read book","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"AndrewOng2066"},"content":"D | 1 | return book | now","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"AndrewOng2066"},"content":"D | 0 | meeting | now","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"AndrewOng2066"},"content":"T | 0 | borrow book","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"AndrewOng2066":4}},{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"AndrewOng2066"},"content":"import java.io.BufferedWriter;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"AndrewOng2066"},"content":"import java.io.File;","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"AndrewOng2066"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"AndrewOng2066"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"AndrewOng2066"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"AndrewOng2066"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"AndrewOng2066"},"content":"import java.util.HashMap;","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"AndrewOng2066"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":11,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"AndrewOng2066"},"content":" public enum Action {","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"AndrewOng2066"},"content":" LIST,","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"AndrewOng2066"},"content":" TODO,","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"AndrewOng2066"},"content":" DEADLINE,","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"AndrewOng2066"},"content":" EVENT,","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"AndrewOng2066"},"content":" MARK,","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"AndrewOng2066"},"content":" UNMARK,","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"AndrewOng2066"},"content":" DELETE,","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"AndrewOng2066"},"content":" BYE","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"AndrewOng2066"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"AndrewOng2066"},"content":" static ArrayList\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-23"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2019-07-29"},{"lineNumber":27,"author":{"gitId":"-"},"content":" String logo \u003d \" ____ _ \\n\"","lastModifiedDate":"2019-07-29"},{"lineNumber":28,"author":{"gitId":"-"},"content":" + \"| _ \\\\ _ _| | _____ \\n\"","lastModifiedDate":"2019-07-29"},{"lineNumber":29,"author":{"gitId":"-"},"content":" + \"| | | | | | | |/ / _ \\\\\\n\"","lastModifiedDate":"2019-07-29"},{"lineNumber":30,"author":{"gitId":"-"},"content":" + \"| |_| | |_| | \u003c __/\\n\"","lastModifiedDate":"2019-07-29"},{"lineNumber":31,"author":{"gitId":"-"},"content":" + \"|____/ \\\\__,_|_|\\\\_\\\\___|\\n\";","lastModifiedDate":"2019-07-29"},{"lineNumber":32,"author":{"gitId":"AndrewOng2066"},"content":"// System.out.println(\"Hello from\\n\" + logo);","lastModifiedDate":"2024-01-22"},{"lineNumber":33,"author":{"gitId":"AndrewOng2066"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2024-01-22"},{"lineNumber":34,"author":{"gitId":"AndrewOng2066"},"content":" System.out.println(\" Hello! I\u0027m AndrewOng2066\");","lastModifiedDate":"2024-01-22"},{"lineNumber":35,"author":{"gitId":"AndrewOng2066"},"content":" System.out.println(\" What can I do for you?\");","lastModifiedDate":"2024-01-22"},{"lineNumber":36,"author":{"gitId":"AndrewOng2066"},"content":" System.out.println(\" ____________________________________________________________\\n\");","lastModifiedDate":"2024-01-22"},{"lineNumber":37,"author":{"gitId":"AndrewOng2066"},"content":" Scanner sc \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-22"},{"lineNumber":38,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":39,"author":{"gitId":"AndrewOng2066"},"content":" String userInput \u003d sc.nextLine().trim();","lastModifiedDate":"2024-01-22"},{"lineNumber":40,"author":{"gitId":"AndrewOng2066"},"content":" while (!userInput.equalsIgnoreCase(Action.BYE.toString())) {","lastModifiedDate":"2024-01-24"},{"lineNumber":41,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":42,"author":{"gitId":"AndrewOng2066"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2024-01-23"},{"lineNumber":43,"author":{"gitId":"AndrewOng2066"},"content":" String[] splitInput \u003d userInput.split(\" \");","lastModifiedDate":"2024-01-22"},{"lineNumber":44,"author":{"gitId":"AndrewOng2066"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":45,"author":{"gitId":"AndrewOng2066"},"content":" if (splitInput[0].equalsIgnoreCase(Action.LIST.toString())) {","lastModifiedDate":"2024-01-24"},{"lineNumber":46,"author":{"gitId":"AndrewOng2066"},"content":" listMethod();","lastModifiedDate":"2024-01-24"},{"lineNumber":47,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":48,"author":{"gitId":"AndrewOng2066"},"content":" } else if (splitInput[0].equalsIgnoreCase(Action.MARK.toString())) {","lastModifiedDate":"2024-01-24"},{"lineNumber":49,"author":{"gitId":"AndrewOng2066"},"content":" markTask(userInput);","lastModifiedDate":"2024-01-23"},{"lineNumber":50,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":51,"author":{"gitId":"AndrewOng2066"},"content":" } else if (splitInput[0].equalsIgnoreCase(Action.UNMARK.toString())) {","lastModifiedDate":"2024-01-24"},{"lineNumber":52,"author":{"gitId":"AndrewOng2066"},"content":" unmarkTask(userInput);","lastModifiedDate":"2024-01-23"},{"lineNumber":53,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":54,"author":{"gitId":"AndrewOng2066"},"content":" } else if (splitInput[0].equalsIgnoreCase(Action.TODO.toString())) {","lastModifiedDate":"2024-01-24"},{"lineNumber":55,"author":{"gitId":"AndrewOng2066"},"content":" addToDo(userInput);","lastModifiedDate":"2024-01-23"},{"lineNumber":56,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":57,"author":{"gitId":"AndrewOng2066"},"content":" } else if (splitInput[0].equalsIgnoreCase(Action.DEADLINE.toString())) {","lastModifiedDate":"2024-01-24"},{"lineNumber":58,"author":{"gitId":"AndrewOng2066"},"content":" addDeadline(userInput);","lastModifiedDate":"2024-01-23"},{"lineNumber":59,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":60,"author":{"gitId":"AndrewOng2066"},"content":" } else if (splitInput[0].equalsIgnoreCase(Action.EVENT.toString())) {","lastModifiedDate":"2024-01-24"},{"lineNumber":61,"author":{"gitId":"AndrewOng2066"},"content":" addEvent(userInput);","lastModifiedDate":"2024-01-23"},{"lineNumber":62,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":63,"author":{"gitId":"AndrewOng2066"},"content":" } else if (splitInput[0].equalsIgnoreCase(Action.DELETE.toString())) {","lastModifiedDate":"2024-01-24"},{"lineNumber":64,"author":{"gitId":"AndrewOng2066"},"content":" deleteTask(userInput);","lastModifiedDate":"2024-01-24"},{"lineNumber":65,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":66,"author":{"gitId":"AndrewOng2066"},"content":" } else {","lastModifiedDate":"2024-01-23"},{"lineNumber":67,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":68,"author":{"gitId":"AndrewOng2066"},"content":" System.out.println(\" I\u0027m sorry, I do not understand that.\");","lastModifiedDate":"2024-01-23"},{"lineNumber":69,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":70,"author":{"gitId":"AndrewOng2066"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":71,"author":{"gitId":"AndrewOng2066"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":72,"author":{"gitId":"AndrewOng2066"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-24"},{"lineNumber":73,"author":{"gitId":"AndrewOng2066"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":74,"author":{"gitId":"AndrewOng2066"},"content":" System.out.println(\" ____________________________________________________________\\n\");","lastModifiedDate":"2024-01-23"},{"lineNumber":75,"author":{"gitId":"AndrewOng2066"},"content":" userInput \u003d sc.nextLine().trim();","lastModifiedDate":"2024-01-23"},{"lineNumber":76,"author":{"gitId":"AndrewOng2066"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":77,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":78,"author":{"gitId":"AndrewOng2066"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2024-01-23"},{"lineNumber":79,"author":{"gitId":"AndrewOng2066"},"content":" System.out.println(\" Bye. Hope to see you again soon!\");","lastModifiedDate":"2024-01-23"},{"lineNumber":80,"author":{"gitId":"AndrewOng2066"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2024-01-23"},{"lineNumber":81,"author":{"gitId":"AndrewOng2066"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":82,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":83,"author":{"gitId":"AndrewOng2066"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":84,"author":{"gitId":"AndrewOng2066"},"content":" * Lists down the list of Tasks.","lastModifiedDate":"2024-01-30"},{"lineNumber":85,"author":{"gitId":"AndrewOng2066"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":86,"author":{"gitId":"AndrewOng2066"},"content":" public static void listMethod() {","lastModifiedDate":"2024-01-24"},{"lineNumber":87,"author":{"gitId":"AndrewOng2066"},"content":" System.out.println(\" Here are the tasks in your list:\");","lastModifiedDate":"2024-01-24"},{"lineNumber":88,"author":{"gitId":"AndrewOng2066"},"content":" ArrayList\u003cTask\u003e allTasksFromFile \u003d getTasksFromFile(\"duke\");","lastModifiedDate":"2024-01-29"},{"lineNumber":89,"author":{"gitId":"AndrewOng2066"},"content":" tasks \u003d allTasksFromFile;","lastModifiedDate":"2024-01-29"},{"lineNumber":90,"author":{"gitId":"AndrewOng2066"},"content":" for (int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2024-01-24"},{"lineNumber":91,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":92,"author":{"gitId":"AndrewOng2066"},"content":" System.out.println(\" \" + (i + 1) + \".\" + tasks.get(i).toString());","lastModifiedDate":"2024-01-24"},{"lineNumber":93,"author":{"gitId":"AndrewOng2066"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":94,"author":{"gitId":"AndrewOng2066"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":95,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":96,"author":{"gitId":"AndrewOng2066"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":97,"author":{"gitId":"AndrewOng2066"},"content":" * Adds a new ToDo.","lastModifiedDate":"2024-01-30"},{"lineNumber":98,"author":{"gitId":"AndrewOng2066"},"content":" * Adds the new ToDo inside the file.","lastModifiedDate":"2024-01-30"},{"lineNumber":99,"author":{"gitId":"AndrewOng2066"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":100,"author":{"gitId":"AndrewOng2066"},"content":" * @param input the description of the ToDo.","lastModifiedDate":"2024-01-30"},{"lineNumber":101,"author":{"gitId":"AndrewOng2066"},"content":" * @throws DukeException If missing the description.","lastModifiedDate":"2024-01-30"},{"lineNumber":102,"author":{"gitId":"AndrewOng2066"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":103,"author":{"gitId":"AndrewOng2066"},"content":" public static void addToDo(String input) throws DukeException {","lastModifiedDate":"2024-01-23"},{"lineNumber":104,"author":{"gitId":"AndrewOng2066"},"content":" String[] splitInput \u003d input.split(\" \");","lastModifiedDate":"2024-01-23"},{"lineNumber":105,"author":{"gitId":"AndrewOng2066"},"content":" if (splitInput.length \u003c\u003d 1) {","lastModifiedDate":"2024-01-23"},{"lineNumber":106,"author":{"gitId":"AndrewOng2066"},"content":" throw new DukeException(\" Missing the description!\");","lastModifiedDate":"2024-01-23"},{"lineNumber":107,"author":{"gitId":"AndrewOng2066"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":108,"author":{"gitId":"AndrewOng2066"},"content":" String name \u003d \"\";","lastModifiedDate":"2024-01-22"},{"lineNumber":109,"author":{"gitId":"AndrewOng2066"},"content":" for (int i \u003d 1; i \u003c splitInput.length; i++) {","lastModifiedDate":"2024-01-22"},{"lineNumber":110,"author":{"gitId":"AndrewOng2066"},"content":" name +\u003d splitInput[i] + \" \";","lastModifiedDate":"2024-01-22"},{"lineNumber":111,"author":{"gitId":"AndrewOng2066"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":112,"author":{"gitId":"AndrewOng2066"},"content":" ToDo newToDo\u003d new ToDo(name.trim(), false);","lastModifiedDate":"2024-01-29"},{"lineNumber":113,"author":{"gitId":"AndrewOng2066"},"content":" tasks.add(newToDo);","lastModifiedDate":"2024-01-24"},{"lineNumber":114,"author":{"gitId":"AndrewOng2066"},"content":" ArrayList\u003cTask\u003e newToDoList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-29"},{"lineNumber":115,"author":{"gitId":"AndrewOng2066"},"content":" newToDoList.add(newToDo);","lastModifiedDate":"2024-01-29"},{"lineNumber":116,"author":{"gitId":"AndrewOng2066"},"content":" storeArrayListToFile(\"duke\", newToDoList, false);//TODO Add the file function here","lastModifiedDate":"2024-01-30"},{"lineNumber":117,"author":{"gitId":"AndrewOng2066"},"content":" System.out.println(\" Got it. I\u0027ve added this task:\");","lastModifiedDate":"2024-01-22"},{"lineNumber":118,"author":{"gitId":"AndrewOng2066"},"content":" System.out.println(\" \" + newToDo.toString());","lastModifiedDate":"2024-01-24"},{"lineNumber":119,"author":{"gitId":"AndrewOng2066"},"content":" System.out.println(\" Now you have \" + tasks.size() + \" tasks in the list.\");","lastModifiedDate":"2024-01-22"},{"lineNumber":120,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":121,"author":{"gitId":"AndrewOng2066"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":122,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":123,"author":{"gitId":"AndrewOng2066"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":124,"author":{"gitId":"AndrewOng2066"},"content":" * Adds a new Deadline.","lastModifiedDate":"2024-01-30"},{"lineNumber":125,"author":{"gitId":"AndrewOng2066"},"content":" * Adds the new Deadline inside the file.","lastModifiedDate":"2024-01-30"},{"lineNumber":126,"author":{"gitId":"AndrewOng2066"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":127,"author":{"gitId":"AndrewOng2066"},"content":" * @param input the description and \u0027by\u0027 of the Deadline.","lastModifiedDate":"2024-01-30"},{"lineNumber":128,"author":{"gitId":"AndrewOng2066"},"content":" * @throws DukeException If missing the description or \u0027by\u0027.","lastModifiedDate":"2024-01-30"},{"lineNumber":129,"author":{"gitId":"AndrewOng2066"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":130,"author":{"gitId":"AndrewOng2066"},"content":" public static void addDeadline(String input) throws DukeException {","lastModifiedDate":"2024-01-23"},{"lineNumber":131,"author":{"gitId":"AndrewOng2066"},"content":" String[] splitInput \u003d input.split(\" \");","lastModifiedDate":"2024-01-23"},{"lineNumber":132,"author":{"gitId":"AndrewOng2066"},"content":" if (splitInput.length \u003c\u003d 1) {","lastModifiedDate":"2024-01-23"},{"lineNumber":133,"author":{"gitId":"AndrewOng2066"},"content":" throw new DukeException(\" Missing the description!\");","lastModifiedDate":"2024-01-23"},{"lineNumber":134,"author":{"gitId":"AndrewOng2066"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":135,"author":{"gitId":"AndrewOng2066"},"content":" String[] deadlineSplit \u003d input.split(\"/\");","lastModifiedDate":"2024-01-23"},{"lineNumber":136,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":137,"author":{"gitId":"AndrewOng2066"},"content":" if (deadlineSplit.length \u003c 2) {","lastModifiedDate":"2024-01-23"},{"lineNumber":138,"author":{"gitId":"AndrewOng2066"},"content":" throw new DukeException(\" Invalid format for new Deadline!\");","lastModifiedDate":"2024-01-23"},{"lineNumber":139,"author":{"gitId":"AndrewOng2066"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":140,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":141,"author":{"gitId":"AndrewOng2066"},"content":" String name \u003d deadlineSplit[0].substring(9).trim();","lastModifiedDate":"2024-01-22"},{"lineNumber":142,"author":{"gitId":"AndrewOng2066"},"content":" String by \u003d deadlineSplit[1].substring(3).trim();","lastModifiedDate":"2024-01-22"},{"lineNumber":143,"author":{"gitId":"AndrewOng2066"},"content":" Deadline newDeadline \u003d new Deadline(name,false, by);","lastModifiedDate":"2024-01-29"},{"lineNumber":144,"author":{"gitId":"AndrewOng2066"},"content":" tasks.add(newDeadline);","lastModifiedDate":"2024-01-24"},{"lineNumber":145,"author":{"gitId":"AndrewOng2066"},"content":" ArrayList\u003cTask\u003e newDeadlineList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-29"},{"lineNumber":146,"author":{"gitId":"AndrewOng2066"},"content":" newDeadlineList.add(newDeadline);","lastModifiedDate":"2024-01-29"},{"lineNumber":147,"author":{"gitId":"AndrewOng2066"},"content":" storeArrayListToFile(\"duke\", newDeadlineList, false);//TODO Add the file function here","lastModifiedDate":"2024-01-30"},{"lineNumber":148,"author":{"gitId":"AndrewOng2066"},"content":" System.out.println(\" Got it. I\u0027ve added this task:\");","lastModifiedDate":"2024-01-22"},{"lineNumber":149,"author":{"gitId":"AndrewOng2066"},"content":" System.out.println(\" \" + newDeadline.toString());","lastModifiedDate":"2024-01-24"},{"lineNumber":150,"author":{"gitId":"AndrewOng2066"},"content":" System.out.println(\" Now you have \" + tasks.size() + \" tasks in the list.\");","lastModifiedDate":"2024-01-22"},{"lineNumber":151,"author":{"gitId":"AndrewOng2066"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":152,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":153,"author":{"gitId":"AndrewOng2066"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":154,"author":{"gitId":"AndrewOng2066"},"content":" * Adds a new Event.","lastModifiedDate":"2024-01-30"},{"lineNumber":155,"author":{"gitId":"AndrewOng2066"},"content":" * Adds the new Event inside the file.","lastModifiedDate":"2024-01-30"},{"lineNumber":156,"author":{"gitId":"AndrewOng2066"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":157,"author":{"gitId":"AndrewOng2066"},"content":" * @param input the description, \u0027from\u0027, and \u0027to\u0027 of the Event.","lastModifiedDate":"2024-01-30"},{"lineNumber":158,"author":{"gitId":"AndrewOng2066"},"content":" * @throws DukeException if missing the description, \u0027from\u0027 or \u0027to\u0027.","lastModifiedDate":"2024-01-30"},{"lineNumber":159,"author":{"gitId":"AndrewOng2066"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":160,"author":{"gitId":"AndrewOng2066"},"content":" public static void addEvent(String input) throws DukeException {","lastModifiedDate":"2024-01-23"},{"lineNumber":161,"author":{"gitId":"AndrewOng2066"},"content":" String[] splitInput \u003d input.split(\" \");","lastModifiedDate":"2024-01-23"},{"lineNumber":162,"author":{"gitId":"AndrewOng2066"},"content":" if (splitInput.length \u003c\u003d 1) {","lastModifiedDate":"2024-01-23"},{"lineNumber":163,"author":{"gitId":"AndrewOng2066"},"content":" throw new DukeException(\" Missing the description!\");","lastModifiedDate":"2024-01-23"},{"lineNumber":164,"author":{"gitId":"AndrewOng2066"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":165,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":166,"author":{"gitId":"AndrewOng2066"},"content":" String[] eventSplit \u003d input.split(\"/\");","lastModifiedDate":"2024-01-23"},{"lineNumber":167,"author":{"gitId":"AndrewOng2066"},"content":" if (eventSplit.length \u003c 3) {","lastModifiedDate":"2024-01-23"},{"lineNumber":168,"author":{"gitId":"AndrewOng2066"},"content":" throw new DukeException(\" Invalid format for new Event!\");","lastModifiedDate":"2024-01-23"},{"lineNumber":169,"author":{"gitId":"AndrewOng2066"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":170,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":171,"author":{"gitId":"AndrewOng2066"},"content":" String name \u003d eventSplit[0].substring(6).trim();","lastModifiedDate":"2024-01-22"},{"lineNumber":172,"author":{"gitId":"AndrewOng2066"},"content":" String start \u003d eventSplit[1].substring(5).trim();","lastModifiedDate":"2024-01-22"},{"lineNumber":173,"author":{"gitId":"AndrewOng2066"},"content":" String end \u003d eventSplit[2].substring(3).trim();","lastModifiedDate":"2024-01-22"},{"lineNumber":174,"author":{"gitId":"AndrewOng2066"},"content":" Event newEvent \u003d new Event(name, false, start, end);","lastModifiedDate":"2024-01-29"},{"lineNumber":175,"author":{"gitId":"AndrewOng2066"},"content":" tasks.add(newEvent);","lastModifiedDate":"2024-01-24"},{"lineNumber":176,"author":{"gitId":"AndrewOng2066"},"content":" ArrayList\u003cTask\u003e newEventList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-29"},{"lineNumber":177,"author":{"gitId":"AndrewOng2066"},"content":" newEventList.add(newEvent);","lastModifiedDate":"2024-01-29"},{"lineNumber":178,"author":{"gitId":"AndrewOng2066"},"content":" storeArrayListToFile(\"duke\", newEventList, false);//TODO Add the file function here","lastModifiedDate":"2024-01-30"},{"lineNumber":179,"author":{"gitId":"AndrewOng2066"},"content":" System.out.println(\" Got it. I\u0027ve added this task:\");","lastModifiedDate":"2024-01-22"},{"lineNumber":180,"author":{"gitId":"AndrewOng2066"},"content":" System.out.println(\" \" + newEvent.toString());","lastModifiedDate":"2024-01-24"},{"lineNumber":181,"author":{"gitId":"AndrewOng2066"},"content":" System.out.println(\" Now you have \" + tasks.size() + \" tasks in the list.\");","lastModifiedDate":"2024-01-22"},{"lineNumber":182,"author":{"gitId":"AndrewOng2066"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":183,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":184,"author":{"gitId":"AndrewOng2066"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":185,"author":{"gitId":"AndrewOng2066"},"content":" * Marks a task for being completed.","lastModifiedDate":"2024-01-30"},{"lineNumber":186,"author":{"gitId":"AndrewOng2066"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":187,"author":{"gitId":"AndrewOng2066"},"content":" * @param input the index of the task.","lastModifiedDate":"2024-01-30"},{"lineNumber":188,"author":{"gitId":"AndrewOng2066"},"content":" * @throws DukeException If the size of tasks is 0, or no task is being selected.","lastModifiedDate":"2024-01-30"},{"lineNumber":189,"author":{"gitId":"AndrewOng2066"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":190,"author":{"gitId":"AndrewOng2066"},"content":" public static void markTask(String input) throws DukeException {","lastModifiedDate":"2024-01-23"},{"lineNumber":191,"author":{"gitId":"AndrewOng2066"},"content":" String splitInput[] \u003d input.split(\" \");","lastModifiedDate":"2024-01-23"},{"lineNumber":192,"author":{"gitId":"AndrewOng2066"},"content":" if (tasks.size() \u003d\u003d 0) {","lastModifiedDate":"2024-01-23"},{"lineNumber":193,"author":{"gitId":"AndrewOng2066"},"content":" throw new DukeException(\" No task at the moment.\");","lastModifiedDate":"2024-01-23"},{"lineNumber":194,"author":{"gitId":"AndrewOng2066"},"content":" } else if (splitInput.length \u003c 2) {","lastModifiedDate":"2024-01-23"},{"lineNumber":195,"author":{"gitId":"AndrewOng2066"},"content":" throw new DukeException(\" Please select the task.\");","lastModifiedDate":"2024-01-23"},{"lineNumber":196,"author":{"gitId":"AndrewOng2066"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":197,"author":{"gitId":"AndrewOng2066"},"content":" int choiceMark;","lastModifiedDate":"2024-01-24"},{"lineNumber":198,"author":{"gitId":"AndrewOng2066"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":199,"author":{"gitId":"AndrewOng2066"},"content":" choiceMark \u003d Integer.parseInt(splitInput[1]);","lastModifiedDate":"2024-01-24"},{"lineNumber":200,"author":{"gitId":"AndrewOng2066"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":201,"author":{"gitId":"AndrewOng2066"},"content":" throw new DukeException(\" Please enter a valid integer value.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":202,"author":{"gitId":"AndrewOng2066"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":203,"author":{"gitId":"AndrewOng2066"},"content":" if (choiceMark \u003c\u003d tasks.size() \u0026\u0026 choiceMark \u003e 0) {","lastModifiedDate":"2024-01-25"},{"lineNumber":204,"author":{"gitId":"AndrewOng2066"},"content":" tasks.get(choiceMark - 1).markAsDone();","lastModifiedDate":"2024-01-23"},{"lineNumber":205,"author":{"gitId":"AndrewOng2066"},"content":" storeArrayListToFile(\"duke\", tasks, true);","lastModifiedDate":"2024-01-30"},{"lineNumber":206,"author":{"gitId":"AndrewOng2066"},"content":" System.out.println(\" Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2024-01-23"},{"lineNumber":207,"author":{"gitId":"AndrewOng2066"},"content":" System.out.println(\" \" + tasks.get(choiceMark - 1).toString());","lastModifiedDate":"2024-01-24"},{"lineNumber":208,"author":{"gitId":"AndrewOng2066"},"content":" } else {","lastModifiedDate":"2024-01-22"},{"lineNumber":209,"author":{"gitId":"AndrewOng2066"},"content":" throw new DukeException(\" Invalid choice.\");","lastModifiedDate":"2024-01-23"},{"lineNumber":210,"author":{"gitId":"AndrewOng2066"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":211,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":212,"author":{"gitId":"AndrewOng2066"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":213,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":214,"author":{"gitId":"AndrewOng2066"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":215,"author":{"gitId":"AndrewOng2066"},"content":" * Unmarks a task for being incomplete.","lastModifiedDate":"2024-01-30"},{"lineNumber":216,"author":{"gitId":"AndrewOng2066"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":217,"author":{"gitId":"AndrewOng2066"},"content":" * @param input the index of the task.","lastModifiedDate":"2024-01-30"},{"lineNumber":218,"author":{"gitId":"AndrewOng2066"},"content":" * @throws DukeException If the size of tasks is 0, or no task is being selected.","lastModifiedDate":"2024-01-30"},{"lineNumber":219,"author":{"gitId":"AndrewOng2066"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":220,"author":{"gitId":"AndrewOng2066"},"content":" public static void unmarkTask(String input) throws DukeException {","lastModifiedDate":"2024-01-23"},{"lineNumber":221,"author":{"gitId":"AndrewOng2066"},"content":" String splitInput[] \u003d input.split(\" \");","lastModifiedDate":"2024-01-23"},{"lineNumber":222,"author":{"gitId":"AndrewOng2066"},"content":" if (tasks.size() \u003d\u003d 0) {","lastModifiedDate":"2024-01-23"},{"lineNumber":223,"author":{"gitId":"AndrewOng2066"},"content":" throw new DukeException(\" No task at the moment.\");","lastModifiedDate":"2024-01-23"},{"lineNumber":224,"author":{"gitId":"AndrewOng2066"},"content":" } else if (splitInput.length \u003c 2) {","lastModifiedDate":"2024-01-23"},{"lineNumber":225,"author":{"gitId":"AndrewOng2066"},"content":" throw new DukeException(\" Please select the task.\");","lastModifiedDate":"2024-01-23"},{"lineNumber":226,"author":{"gitId":"AndrewOng2066"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":227,"author":{"gitId":"AndrewOng2066"},"content":" int choiceUnmark;","lastModifiedDate":"2024-01-24"},{"lineNumber":228,"author":{"gitId":"AndrewOng2066"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":229,"author":{"gitId":"AndrewOng2066"},"content":" choiceUnmark \u003d Integer.parseInt(splitInput[1]);","lastModifiedDate":"2024-01-24"},{"lineNumber":230,"author":{"gitId":"AndrewOng2066"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":231,"author":{"gitId":"AndrewOng2066"},"content":" throw new DukeException(\" Please enter a valid integer value.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":232,"author":{"gitId":"AndrewOng2066"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":233,"author":{"gitId":"AndrewOng2066"},"content":" if (choiceUnmark \u003c\u003d tasks.size() \u0026\u0026 choiceUnmark \u003e 0) {","lastModifiedDate":"2024-01-25"},{"lineNumber":234,"author":{"gitId":"AndrewOng2066"},"content":" tasks.get(choiceUnmark - 1).markAsUndone();","lastModifiedDate":"2024-01-24"},{"lineNumber":235,"author":{"gitId":"AndrewOng2066"},"content":" storeArrayListToFile(\"duke\", tasks, true);","lastModifiedDate":"2024-01-30"},{"lineNumber":236,"author":{"gitId":"AndrewOng2066"},"content":" System.out.println(\" OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2024-01-23"},{"lineNumber":237,"author":{"gitId":"AndrewOng2066"},"content":"// System.out.println(\" \" + \"[ ] \" + tasks.get(choiceUnmark - 1).toString());","lastModifiedDate":"2024-01-24"},{"lineNumber":238,"author":{"gitId":"AndrewOng2066"},"content":" System.out.println(\" \" + tasks.get(choiceUnmark - 1).toString());","lastModifiedDate":"2024-01-24"},{"lineNumber":239,"author":{"gitId":"AndrewOng2066"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":240,"author":{"gitId":"AndrewOng2066"},"content":" System.out.println(\" Invalid choice\");","lastModifiedDate":"2024-01-24"},{"lineNumber":241,"author":{"gitId":"AndrewOng2066"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":242,"author":{"gitId":"AndrewOng2066"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":243,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":244,"author":{"gitId":"AndrewOng2066"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":245,"author":{"gitId":"AndrewOng2066"},"content":" * Deletes a task.","lastModifiedDate":"2024-01-30"},{"lineNumber":246,"author":{"gitId":"AndrewOng2066"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":247,"author":{"gitId":"AndrewOng2066"},"content":" * @param input the index of the task.","lastModifiedDate":"2024-01-30"},{"lineNumber":248,"author":{"gitId":"AndrewOng2066"},"content":" * @throws DukeException If the size of tasks is 0, or no task is being selected.","lastModifiedDate":"2024-01-30"},{"lineNumber":249,"author":{"gitId":"AndrewOng2066"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":250,"author":{"gitId":"AndrewOng2066"},"content":" public static void deleteTask(String input) throws DukeException {","lastModifiedDate":"2024-01-24"},{"lineNumber":251,"author":{"gitId":"AndrewOng2066"},"content":" String[] splitInput \u003d input.split(\" \");","lastModifiedDate":"2024-01-24"},{"lineNumber":252,"author":{"gitId":"AndrewOng2066"},"content":" if (tasks.size() \u003d\u003d 0) {","lastModifiedDate":"2024-01-24"},{"lineNumber":253,"author":{"gitId":"AndrewOng2066"},"content":" throw new DukeException(\" No task at the moment.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":254,"author":{"gitId":"AndrewOng2066"},"content":" } else if (splitInput.length \u003c 2) {","lastModifiedDate":"2024-01-24"},{"lineNumber":255,"author":{"gitId":"AndrewOng2066"},"content":" throw new DukeException(\" Please select the task.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":256,"author":{"gitId":"AndrewOng2066"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":257,"author":{"gitId":"AndrewOng2066"},"content":" int choiceDelete;","lastModifiedDate":"2024-01-24"},{"lineNumber":258,"author":{"gitId":"AndrewOng2066"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":259,"author":{"gitId":"AndrewOng2066"},"content":" choiceDelete \u003d Integer.parseInt(splitInput[1]);","lastModifiedDate":"2024-01-24"},{"lineNumber":260,"author":{"gitId":"AndrewOng2066"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":261,"author":{"gitId":"AndrewOng2066"},"content":" throw new DukeException(\" Please enter a valid integer value.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":262,"author":{"gitId":"AndrewOng2066"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":263,"author":{"gitId":"AndrewOng2066"},"content":" if (choiceDelete \u003c\u003d tasks.size() \u0026\u0026 choiceDelete \u003e 0) {","lastModifiedDate":"2024-01-25"},{"lineNumber":264,"author":{"gitId":"AndrewOng2066"},"content":" Task deletedTask \u003d tasks.get(choiceDelete - 1);","lastModifiedDate":"2024-01-24"},{"lineNumber":265,"author":{"gitId":"AndrewOng2066"},"content":" tasks.remove(choiceDelete - 1);","lastModifiedDate":"2024-01-24"},{"lineNumber":266,"author":{"gitId":"AndrewOng2066"},"content":" storeArrayListToFile(\"duke\", tasks, true);","lastModifiedDate":"2024-01-30"},{"lineNumber":267,"author":{"gitId":"AndrewOng2066"},"content":" System.out.println(\" Noted, I\u0027ve removed this task:\");","lastModifiedDate":"2024-01-24"},{"lineNumber":268,"author":{"gitId":"AndrewOng2066"},"content":" System.out.println(\" \" + deletedTask.toString());","lastModifiedDate":"2024-01-24"},{"lineNumber":269,"author":{"gitId":"AndrewOng2066"},"content":" System.out.println(\" Now you have \" + tasks.size() + \" tasks in the list.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":270,"author":{"gitId":"AndrewOng2066"},"content":" } else {","lastModifiedDate":"2024-01-23"},{"lineNumber":271,"author":{"gitId":"AndrewOng2066"},"content":" System.out.println(\" Invalid choice\");","lastModifiedDate":"2024-01-23"},{"lineNumber":272,"author":{"gitId":"AndrewOng2066"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":273,"author":{"gitId":"AndrewOng2066"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":274,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":275,"author":{"gitId":"AndrewOng2066"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":276,"author":{"gitId":"AndrewOng2066"},"content":" * Load the data into a txt file","lastModifiedDate":"2024-01-29"},{"lineNumber":277,"author":{"gitId":"AndrewOng2066"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":278,"author":{"gitId":"AndrewOng2066"},"content":" * @param fileName name of the txt file","lastModifiedDate":"2024-01-29"},{"lineNumber":279,"author":{"gitId":"AndrewOng2066"},"content":" * @param tasks context to be stored in the txt file","lastModifiedDate":"2024-01-29"},{"lineNumber":280,"author":{"gitId":"AndrewOng2066"},"content":" * @param isOverwrite check if we need to delete the current context in the txt file","lastModifiedDate":"2024-01-29"},{"lineNumber":281,"author":{"gitId":"AndrewOng2066"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":282,"author":{"gitId":"AndrewOng2066"},"content":" static void storeArrayListToFile(String fileName, ArrayList\u003cTask\u003e tasks, boolean isOverwrite) {","lastModifiedDate":"2024-01-30"},{"lineNumber":283,"author":{"gitId":"AndrewOng2066"},"content":" FileManager fileManager \u003d new FileManager(fileName);","lastModifiedDate":"2024-01-29"},{"lineNumber":284,"author":{"gitId":"AndrewOng2066"},"content":" fileManager.writeArrayListToFile(tasks, isOverwrite);","lastModifiedDate":"2024-01-29"},{"lineNumber":285,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":286,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":287,"author":{"gitId":"AndrewOng2066"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":288,"author":{"gitId":"AndrewOng2066"},"content":" * Gets the list of Tasks from the file.","lastModifiedDate":"2024-01-30"},{"lineNumber":289,"author":{"gitId":"AndrewOng2066"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":290,"author":{"gitId":"AndrewOng2066"},"content":" * @param filename the txt file.","lastModifiedDate":"2024-01-30"},{"lineNumber":291,"author":{"gitId":"AndrewOng2066"},"content":" * @return an ArrayList of Tasks.","lastModifiedDate":"2024-01-30"},{"lineNumber":292,"author":{"gitId":"AndrewOng2066"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":293,"author":{"gitId":"AndrewOng2066"},"content":" static ArrayList\u003cTask\u003e getTasksFromFile(String filename) {","lastModifiedDate":"2024-01-29"},{"lineNumber":294,"author":{"gitId":"AndrewOng2066"},"content":" FileManager fileManager \u003d new FileManager(filename);","lastModifiedDate":"2024-01-29"},{"lineNumber":295,"author":{"gitId":"AndrewOng2066"},"content":" return fileManager.loadTasksFromFile();","lastModifiedDate":"2024-01-29"},{"lineNumber":296,"author":{"gitId":"AndrewOng2066"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":297,"author":{"gitId":"AndrewOng2066"},"content":" ","lastModifiedDate":"2024-01-29"},{"lineNumber":298,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":299,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":300,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"},{"lineNumber":301,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":302,"author":{"gitId":"AndrewOng2066"},"content":"class Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":303,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":304,"author":{"gitId":"AndrewOng2066"},"content":" private String description;","lastModifiedDate":"2024-01-22"},{"lineNumber":305,"author":{"gitId":"AndrewOng2066"},"content":" private boolean isDone;","lastModifiedDate":"2024-01-22"},{"lineNumber":306,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":307,"author":{"gitId":"AndrewOng2066"},"content":" public Task(String description, boolean isDone) {","lastModifiedDate":"2024-01-29"},{"lineNumber":308,"author":{"gitId":"AndrewOng2066"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-22"},{"lineNumber":309,"author":{"gitId":"AndrewOng2066"},"content":" this.isDone \u003d isDone;","lastModifiedDate":"2024-01-29"},{"lineNumber":310,"author":{"gitId":"AndrewOng2066"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":311,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":312,"author":{"gitId":"AndrewOng2066"},"content":" public String getDescription() {","lastModifiedDate":"2024-01-22"},{"lineNumber":313,"author":{"gitId":"AndrewOng2066"},"content":" return description;","lastModifiedDate":"2024-01-22"},{"lineNumber":314,"author":{"gitId":"AndrewOng2066"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":315,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":316,"author":{"gitId":"AndrewOng2066"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-01-22"},{"lineNumber":317,"author":{"gitId":"AndrewOng2066"},"content":" return (isDone ? \"X\" : \" \");","lastModifiedDate":"2024-01-22"},{"lineNumber":318,"author":{"gitId":"AndrewOng2066"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":319,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":320,"author":{"gitId":"AndrewOng2066"},"content":" public void markAsDone() {","lastModifiedDate":"2024-01-22"},{"lineNumber":321,"author":{"gitId":"AndrewOng2066"},"content":" this.isDone \u003d true;","lastModifiedDate":"2024-01-22"},{"lineNumber":322,"author":{"gitId":"AndrewOng2066"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":323,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":324,"author":{"gitId":"AndrewOng2066"},"content":" public void markAsUndone() {","lastModifiedDate":"2024-01-22"},{"lineNumber":325,"author":{"gitId":"AndrewOng2066"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-22"},{"lineNumber":326,"author":{"gitId":"AndrewOng2066"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":327,"author":{"gitId":"AndrewOng2066"},"content":"}","lastModifiedDate":"2024-01-22"},{"lineNumber":328,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":329,"author":{"gitId":"AndrewOng2066"},"content":"class ToDo extends Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":330,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":331,"author":{"gitId":"AndrewOng2066"},"content":" public ToDo(String description, boolean isDone) {","lastModifiedDate":"2024-01-29"},{"lineNumber":332,"author":{"gitId":"AndrewOng2066"},"content":" super(description, isDone);","lastModifiedDate":"2024-01-29"},{"lineNumber":333,"author":{"gitId":"AndrewOng2066"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":334,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":335,"author":{"gitId":"AndrewOng2066"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":336,"author":{"gitId":"AndrewOng2066"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":337,"author":{"gitId":"AndrewOng2066"},"content":" return \"[T][\"+ super.getStatusIcon() +\"] \" + super.getDescription();","lastModifiedDate":"2024-01-24"},{"lineNumber":338,"author":{"gitId":"AndrewOng2066"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":339,"author":{"gitId":"AndrewOng2066"},"content":"}","lastModifiedDate":"2024-01-22"},{"lineNumber":340,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":341,"author":{"gitId":"AndrewOng2066"},"content":"class Deadline extends Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":342,"author":{"gitId":"AndrewOng2066"},"content":" String by;","lastModifiedDate":"2024-01-22"},{"lineNumber":343,"author":{"gitId":"AndrewOng2066"},"content":" public Deadline(String description, boolean isDone, String by) {","lastModifiedDate":"2024-01-29"},{"lineNumber":344,"author":{"gitId":"AndrewOng2066"},"content":" super(description, isDone);","lastModifiedDate":"2024-01-29"},{"lineNumber":345,"author":{"gitId":"AndrewOng2066"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-22"},{"lineNumber":346,"author":{"gitId":"AndrewOng2066"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":347,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":348,"author":{"gitId":"AndrewOng2066"},"content":" public String getBy() {","lastModifiedDate":"2024-01-22"},{"lineNumber":349,"author":{"gitId":"AndrewOng2066"},"content":" return this.by;","lastModifiedDate":"2024-01-22"},{"lineNumber":350,"author":{"gitId":"AndrewOng2066"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":351,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":352,"author":{"gitId":"AndrewOng2066"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":353,"author":{"gitId":"AndrewOng2066"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":354,"author":{"gitId":"AndrewOng2066"},"content":" return \"[D][\"+ super.getStatusIcon() +\"] \" + super.getDescription() + \" (by: \" + this.by + \")\";","lastModifiedDate":"2024-01-24"},{"lineNumber":355,"author":{"gitId":"AndrewOng2066"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":356,"author":{"gitId":"AndrewOng2066"},"content":"}","lastModifiedDate":"2024-01-22"},{"lineNumber":357,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":358,"author":{"gitId":"AndrewOng2066"},"content":"class Event extends Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":359,"author":{"gitId":"AndrewOng2066"},"content":" String start;","lastModifiedDate":"2024-01-22"},{"lineNumber":360,"author":{"gitId":"AndrewOng2066"},"content":" String end;","lastModifiedDate":"2024-01-22"},{"lineNumber":361,"author":{"gitId":"AndrewOng2066"},"content":" public Event(String description, boolean isDone, String start, String end) {","lastModifiedDate":"2024-01-29"},{"lineNumber":362,"author":{"gitId":"AndrewOng2066"},"content":" super(description, isDone);","lastModifiedDate":"2024-01-29"},{"lineNumber":363,"author":{"gitId":"AndrewOng2066"},"content":" this.start \u003d start;","lastModifiedDate":"2024-01-22"},{"lineNumber":364,"author":{"gitId":"AndrewOng2066"},"content":" this.end \u003d end;","lastModifiedDate":"2024-01-22"},{"lineNumber":365,"author":{"gitId":"AndrewOng2066"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":366,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":367,"author":{"gitId":"AndrewOng2066"},"content":" public String getStart() {","lastModifiedDate":"2024-01-22"},{"lineNumber":368,"author":{"gitId":"AndrewOng2066"},"content":" return this.start;","lastModifiedDate":"2024-01-22"},{"lineNumber":369,"author":{"gitId":"AndrewOng2066"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":370,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":371,"author":{"gitId":"AndrewOng2066"},"content":" public String getEnd() {","lastModifiedDate":"2024-01-22"},{"lineNumber":372,"author":{"gitId":"AndrewOng2066"},"content":" return this.end;","lastModifiedDate":"2024-01-22"},{"lineNumber":373,"author":{"gitId":"AndrewOng2066"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":374,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":375,"author":{"gitId":"AndrewOng2066"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":376,"author":{"gitId":"AndrewOng2066"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":377,"author":{"gitId":"AndrewOng2066"},"content":" return \"[E][\"+ super.getStatusIcon() +\"] \" + super.getDescription() + \" (from: \" + this.start + \" to: \" + this.end + \")\";","lastModifiedDate":"2024-01-24"},{"lineNumber":378,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":379,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2024-01-22"},{"lineNumber":380,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"AndrewOng2066":369,"-":11}},{"path":"src/main/java/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"AndrewOng2066"},"content":"class DukeException extends Exception{","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"AndrewOng2066"},"content":" public DukeException(String message) {","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"AndrewOng2066"},"content":" super(message);","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"AndrewOng2066"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"AndrewOng2066"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"AndrewOng2066":5}},{"path":"src/main/java/FileManager.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"AndrewOng2066"},"content":"import java.io.*;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"AndrewOng2066"},"content":"import java.nio.file.Files;","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"AndrewOng2066"},"content":"import java.nio.file.Path;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"AndrewOng2066"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"AndrewOng2066"},"content":"import java.nio.file.StandardOpenOption;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"AndrewOng2066"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"AndrewOng2066"},"content":"import java.util.List;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"AndrewOng2066"},"content":"public class FileManager {","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"AndrewOng2066"},"content":" static final Path DIRECTORY_PATH \u003d Paths.get(\"./data\");","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"AndrewOng2066"},"content":" private String fileName;","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"AndrewOng2066"},"content":" private Path filePath;","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"AndrewOng2066"},"content":" public FileManager(String fileName) {","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"AndrewOng2066"},"content":" this.fileName \u003d fileName;","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"AndrewOng2066"},"content":" filePath \u003d DIRECTORY_PATH.resolve(fileName + \".txt\");","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"AndrewOng2066"},"content":" createFile();","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"AndrewOng2066"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"AndrewOng2066"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"AndrewOng2066"},"content":" * Creates directory and file if it doesn\u0027t exist.","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"AndrewOng2066"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"AndrewOng2066"},"content":" private void createFile() {","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"AndrewOng2066"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"AndrewOng2066"},"content":" if (!Files.exists(DIRECTORY_PATH)) {","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"AndrewOng2066"},"content":" Files.createDirectories(DIRECTORY_PATH);","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"AndrewOng2066"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"AndrewOng2066"},"content":" if (!Files.exists(filePath)) {","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"AndrewOng2066"},"content":" Files.createFile(filePath);","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"AndrewOng2066"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"AndrewOng2066"},"content":" } catch (IOException io) {","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"AndrewOng2066"},"content":" System.out.println(\"There is an error when creating file. The error is \" + io.getMessage());","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"AndrewOng2066"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"AndrewOng2066"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"AndrewOng2066"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"AndrewOng2066"},"content":" * Writes tasks to the file.","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"AndrewOng2066"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"AndrewOng2066"},"content":" * @param tasks the tasks that need to be written.","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"AndrewOng2066"},"content":" * @param isOverwrite True for overwrite the previous data. False for appending the data.","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"AndrewOng2066"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"AndrewOng2066"},"content":" void writeArrayListToFile(ArrayList\u003cTask\u003e tasks, boolean isOverwrite) {","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"AndrewOng2066"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"AndrewOng2066"},"content":" if (isOverwrite) {","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"AndrewOng2066"},"content":" Files.write(filePath, convertTasksToString(tasks).getBytes(), StandardOpenOption.CREATE, StandardOpenOption.WRITE, StandardOpenOption.TRUNCATE_EXISTING);","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"AndrewOng2066"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"AndrewOng2066"},"content":" Files.write(filePath, convertTasksToString(tasks).getBytes(), StandardOpenOption.CREATE, StandardOpenOption.APPEND);","lastModifiedDate":"2024-01-29"},{"lineNumber":50,"author":{"gitId":"AndrewOng2066"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":51,"author":{"gitId":"AndrewOng2066"},"content":" } catch (IOException io) {","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"AndrewOng2066"},"content":" System.out.println(\"There is an error when writing to file. The error is \" + io.getMessage());","lastModifiedDate":"2024-01-29"},{"lineNumber":53,"author":{"gitId":"AndrewOng2066"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":54,"author":{"gitId":"AndrewOng2066"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":55,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":56,"author":{"gitId":"AndrewOng2066"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"AndrewOng2066"},"content":" * Loads Tasks from the file.","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"AndrewOng2066"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":59,"author":{"gitId":"AndrewOng2066"},"content":" * @return an ArrayList of Tasks.","lastModifiedDate":"2024-01-30"},{"lineNumber":60,"author":{"gitId":"AndrewOng2066"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":61,"author":{"gitId":"AndrewOng2066"},"content":" ArrayList\u003cTask\u003e loadTasksFromFile() {","lastModifiedDate":"2024-01-29"},{"lineNumber":62,"author":{"gitId":"AndrewOng2066"},"content":" ArrayList\u003cTask\u003e result \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-29"},{"lineNumber":63,"author":{"gitId":"AndrewOng2066"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":64,"author":{"gitId":"AndrewOng2066"},"content":" List\u003cString\u003e fileContentLines \u003d Files.readAllLines(filePath);","lastModifiedDate":"2024-01-29"},{"lineNumber":65,"author":{"gitId":"AndrewOng2066"},"content":" result \u003d convertStringListToTasks(fileContentLines);","lastModifiedDate":"2024-01-29"},{"lineNumber":66,"author":{"gitId":"AndrewOng2066"},"content":" } catch (IOException io) {","lastModifiedDate":"2024-01-29"},{"lineNumber":67,"author":{"gitId":"AndrewOng2066"},"content":" System.out.println(\"There is an error when reading the file.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":68,"author":{"gitId":"AndrewOng2066"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":69,"author":{"gitId":"AndrewOng2066"},"content":" return result;","lastModifiedDate":"2024-01-29"},{"lineNumber":70,"author":{"gitId":"AndrewOng2066"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":71,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":72,"author":{"gitId":"AndrewOng2066"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":73,"author":{"gitId":"AndrewOng2066"},"content":" * Converts an ArrayList of Tasks to String.","lastModifiedDate":"2024-01-30"},{"lineNumber":74,"author":{"gitId":"AndrewOng2066"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":75,"author":{"gitId":"AndrewOng2066"},"content":" * @param tasks An arrayList of Tasks.","lastModifiedDate":"2024-01-30"},{"lineNumber":76,"author":{"gitId":"AndrewOng2066"},"content":" * @return String format of the list of Tasks.","lastModifiedDate":"2024-01-30"},{"lineNumber":77,"author":{"gitId":"AndrewOng2066"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":78,"author":{"gitId":"AndrewOng2066"},"content":" private String convertTasksToString(ArrayList\u003cTask\u003e tasks) {","lastModifiedDate":"2024-01-29"},{"lineNumber":79,"author":{"gitId":"AndrewOng2066"},"content":" StringBuilder result \u003d new StringBuilder();","lastModifiedDate":"2024-01-29"},{"lineNumber":80,"author":{"gitId":"AndrewOng2066"},"content":" for (Task task: tasks) {","lastModifiedDate":"2024-01-29"},{"lineNumber":81,"author":{"gitId":"AndrewOng2066"},"content":"// result.append(task.toString());","lastModifiedDate":"2024-01-29"},{"lineNumber":82,"author":{"gitId":"AndrewOng2066"},"content":"// result.append(System.getProperty(\"line.separator\"));","lastModifiedDate":"2024-01-29"},{"lineNumber":83,"author":{"gitId":"AndrewOng2066"},"content":" if (task instanceof ToDo) {","lastModifiedDate":"2024-01-29"},{"lineNumber":84,"author":{"gitId":"AndrewOng2066"},"content":" result.append(\"T | \");","lastModifiedDate":"2024-01-29"},{"lineNumber":85,"author":{"gitId":"AndrewOng2066"},"content":" result.append(task.getStatusIcon().equals(\"X\") ? \"1 | \" : \"0 | \");","lastModifiedDate":"2024-01-29"},{"lineNumber":86,"author":{"gitId":"AndrewOng2066"},"content":" result.append(task.getDescription());","lastModifiedDate":"2024-01-29"},{"lineNumber":87,"author":{"gitId":"AndrewOng2066"},"content":" result.append(System.getProperty(\"line.separator\"));","lastModifiedDate":"2024-01-29"},{"lineNumber":88,"author":{"gitId":"AndrewOng2066"},"content":" } else if (task instanceof Deadline) {","lastModifiedDate":"2024-01-29"},{"lineNumber":89,"author":{"gitId":"AndrewOng2066"},"content":" result.append(\"D | \");","lastModifiedDate":"2024-01-29"},{"lineNumber":90,"author":{"gitId":"AndrewOng2066"},"content":" result.append(task.getStatusIcon().equals(\"X\") ? \"1 | \" : \"0 | \");","lastModifiedDate":"2024-01-29"},{"lineNumber":91,"author":{"gitId":"AndrewOng2066"},"content":" result.append(task.getDescription() + \" | \");","lastModifiedDate":"2024-01-29"},{"lineNumber":92,"author":{"gitId":"AndrewOng2066"},"content":" result.append(((Deadline) task).getBy());","lastModifiedDate":"2024-01-29"},{"lineNumber":93,"author":{"gitId":"AndrewOng2066"},"content":" result.append(System.getProperty(\"line.separator\"));","lastModifiedDate":"2024-01-29"},{"lineNumber":94,"author":{"gitId":"AndrewOng2066"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":95,"author":{"gitId":"AndrewOng2066"},"content":" result.append(\"D | \");","lastModifiedDate":"2024-01-29"},{"lineNumber":96,"author":{"gitId":"AndrewOng2066"},"content":" result.append(task.getStatusIcon().equals(\"X\") ? \"1 | \" : \"0 | \");","lastModifiedDate":"2024-01-29"},{"lineNumber":97,"author":{"gitId":"AndrewOng2066"},"content":" result.append(task.getDescription() + \" | \");","lastModifiedDate":"2024-01-29"},{"lineNumber":98,"author":{"gitId":"AndrewOng2066"},"content":" result.append(((Event) task).getStart() + \" | \");","lastModifiedDate":"2024-01-29"},{"lineNumber":99,"author":{"gitId":"AndrewOng2066"},"content":" result.append(((Event) task).getEnd());","lastModifiedDate":"2024-01-29"},{"lineNumber":100,"author":{"gitId":"AndrewOng2066"},"content":" result.append(System.getProperty(\"line.separator\"));","lastModifiedDate":"2024-01-29"},{"lineNumber":101,"author":{"gitId":"AndrewOng2066"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":102,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":103,"author":{"gitId":"AndrewOng2066"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":104,"author":{"gitId":"AndrewOng2066"},"content":" return result.toString();","lastModifiedDate":"2024-01-29"},{"lineNumber":105,"author":{"gitId":"AndrewOng2066"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":106,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":107,"author":{"gitId":"AndrewOng2066"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":108,"author":{"gitId":"AndrewOng2066"},"content":" * Converts the List of String to an ArrayList of Tasks.","lastModifiedDate":"2024-01-30"},{"lineNumber":109,"author":{"gitId":"AndrewOng2066"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":110,"author":{"gitId":"AndrewOng2066"},"content":" * @param content the List of String to be converted.","lastModifiedDate":"2024-01-30"},{"lineNumber":111,"author":{"gitId":"AndrewOng2066"},"content":" * @return an ArrayList of Tasks.","lastModifiedDate":"2024-01-30"},{"lineNumber":112,"author":{"gitId":"AndrewOng2066"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":113,"author":{"gitId":"AndrewOng2066"},"content":" private ArrayList\u003cTask\u003e convertStringListToTasks(List\u003cString\u003e content) {","lastModifiedDate":"2024-01-29"},{"lineNumber":114,"author":{"gitId":"AndrewOng2066"},"content":" ArrayList\u003cTask\u003e fileTasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-29"},{"lineNumber":115,"author":{"gitId":"AndrewOng2066"},"content":" for (String i : content) {","lastModifiedDate":"2024-01-29"},{"lineNumber":116,"author":{"gitId":"AndrewOng2066"},"content":" String[] stringAttributes \u003d i.split(\"\\\\|\");","lastModifiedDate":"2024-01-29"},{"lineNumber":117,"author":{"gitId":"AndrewOng2066"},"content":" if (stringAttributes[0].trim().equals(\"T\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":118,"author":{"gitId":"AndrewOng2066"},"content":" fileTasks.add(new ToDo(stringAttributes[2].trim(), stringAttributes[1].trim().equals(\"1\") ? true : false));","lastModifiedDate":"2024-01-29"},{"lineNumber":119,"author":{"gitId":"AndrewOng2066"},"content":" } else if (stringAttributes[0].trim().equals(\"D\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":120,"author":{"gitId":"AndrewOng2066"},"content":" fileTasks.add(new Deadline(stringAttributes[2].trim(), stringAttributes[1].trim().equals(\"1\") ? true : false, stringAttributes[3].trim()));","lastModifiedDate":"2024-01-29"},{"lineNumber":121,"author":{"gitId":"AndrewOng2066"},"content":" } else if (stringAttributes[0].trim().equals(\"E\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":122,"author":{"gitId":"AndrewOng2066"},"content":" fileTasks.add(new Event(stringAttributes[2].trim(), stringAttributes[1].trim().equals(\"1\") ? true : false, stringAttributes[3].trim(), stringAttributes[4].trim()));","lastModifiedDate":"2024-01-29"},{"lineNumber":123,"author":{"gitId":"AndrewOng2066"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":124,"author":{"gitId":"AndrewOng2066"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":125,"author":{"gitId":"AndrewOng2066"},"content":" return fileTasks;","lastModifiedDate":"2024-01-29"},{"lineNumber":126,"author":{"gitId":"AndrewOng2066"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":127,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":128,"author":{"gitId":"AndrewOng2066"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":129,"author":{"gitId":"AndrewOng2066"},"content":" * Converts the String content to an ArrayList of Tasks.","lastModifiedDate":"2024-01-30"},{"lineNumber":130,"author":{"gitId":"AndrewOng2066"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":131,"author":{"gitId":"AndrewOng2066"},"content":" * @param content the String content to be converted.","lastModifiedDate":"2024-01-30"},{"lineNumber":132,"author":{"gitId":"AndrewOng2066"},"content":" * @return an ArrayList of Tasks.","lastModifiedDate":"2024-01-30"},{"lineNumber":133,"author":{"gitId":"AndrewOng2066"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":134,"author":{"gitId":"AndrewOng2066"},"content":" private ArrayList\u003cTask\u003e convertStringToTasks(String content) {","lastModifiedDate":"2024-01-29"},{"lineNumber":135,"author":{"gitId":"AndrewOng2066"},"content":" String[] individualStringTask \u003d content.trim().split(System.lineSeparator());","lastModifiedDate":"2024-01-29"},{"lineNumber":136,"author":{"gitId":"AndrewOng2066"},"content":" ArrayList\u003cTask\u003e fileTasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-29"},{"lineNumber":137,"author":{"gitId":"AndrewOng2066"},"content":" for (String i : individualStringTask) {","lastModifiedDate":"2024-01-29"},{"lineNumber":138,"author":{"gitId":"AndrewOng2066"},"content":" String[] stringAttributes \u003d i.split(\"|\");","lastModifiedDate":"2024-01-29"},{"lineNumber":139,"author":{"gitId":"AndrewOng2066"},"content":" if (stringAttributes[0].equals(\"T\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":140,"author":{"gitId":"AndrewOng2066"},"content":" fileTasks.add(new ToDo(stringAttributes[2].trim(), stringAttributes[1].equals(\"1\") ? true : false));","lastModifiedDate":"2024-01-29"},{"lineNumber":141,"author":{"gitId":"AndrewOng2066"},"content":" } else if (stringAttributes[0].equals(\"D\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":142,"author":{"gitId":"AndrewOng2066"},"content":" fileTasks.add(new Deadline(stringAttributes[2].trim(), stringAttributes[1].equals(\"1\") ? true : false, stringAttributes[3].trim()));","lastModifiedDate":"2024-01-29"},{"lineNumber":143,"author":{"gitId":"AndrewOng2066"},"content":" } else if (stringAttributes[0].equals(\"E\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":144,"author":{"gitId":"AndrewOng2066"},"content":" fileTasks.add(new Event(stringAttributes[2].trim(), stringAttributes[1].equals(\"1\") ? true : false, stringAttributes[3].trim(), stringAttributes[4].trim()));","lastModifiedDate":"2024-01-29"},{"lineNumber":145,"author":{"gitId":"AndrewOng2066"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":146,"author":{"gitId":"AndrewOng2066"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":147,"author":{"gitId":"AndrewOng2066"},"content":" return fileTasks;","lastModifiedDate":"2024-01-29"},{"lineNumber":148,"author":{"gitId":"AndrewOng2066"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":149,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":150,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":151,"author":{"gitId":"AndrewOng2066"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"AndrewOng2066":151}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"AndrewOng2066"},"content":"todo read book","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"AndrewOng2066"},"content":"todo return book","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"AndrewOng2066"},"content":"bye","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"AndrewOng2066":3}},{"path":"text-ui-test/input2.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"AndrewOng2066"},"content":"todo read book","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"AndrewOng2066"},"content":"deadline return book /by June 6th","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"AndrewOng2066"},"content":"event project meeting /from Aug 6th 2pm /to 4pm","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"AndrewOng2066"},"content":"todo","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"AndrewOng2066"},"content":"todo join sports club","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"AndrewOng2066"},"content":"todo borrow book","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"AndrewOng2066"},"content":"mark 1","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"AndrewOng2066"},"content":"mark 4","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"AndrewOng2066"},"content":"deadline","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"AndrewOng2066"},"content":"deadline return book","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"AndrewOng2066"},"content":"deadline return book /by Sunday","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"AndrewOng2066"},"content":"event","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"AndrewOng2066"},"content":"event meeting","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"AndrewOng2066"},"content":"event meeting /from 5pm","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"AndrewOng2066"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"AndrewOng2066"},"content":"list","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"AndrewOng2066"},"content":"mark 5","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"AndrewOng2066"},"content":"mark 7","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"AndrewOng2066"},"content":"mark","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"AndrewOng2066"},"content":"mark 9","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"AndrewOng2066"},"content":"list","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"AndrewOng2066"},"content":"unmark","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"AndrewOng2066"},"content":"unmark 4","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"AndrewOng2066"},"content":"unmark 9","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"AndrewOng2066"},"content":"delete","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"AndrewOng2066"},"content":"delete 8","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"AndrewOng2066"},"content":"delete 6","lastModifiedDate":"2024-01-25"},{"lineNumber":28,"author":{"gitId":"AndrewOng2066"},"content":"list","lastModifiedDate":"2024-01-25"},{"lineNumber":29,"author":{"gitId":"AndrewOng2066"},"content":"blah","lastModifiedDate":"2024-01-25"},{"lineNumber":30,"author":{"gitId":"AndrewOng2066"},"content":"bye","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"AndrewOng2066":30}},{"path":"text-ui-test/runtest2.bat","fileType":"bat","lines":[{"lineNumber":1,"author":{"gitId":"AndrewOng2066"},"content":"@ECHO OFF","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"AndrewOng2066"},"content":"REM create bin directory if it doesn\u0027t exist","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"AndrewOng2066"},"content":"if not exist ..\\bin mkdir ..\\bin","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"AndrewOng2066"},"content":"REM delete output from previous run","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"AndrewOng2066"},"content":"if exist ACTUAL.TXT del ACTUAL.TXT","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"AndrewOng2066"},"content":"REM compile the code into the bin folder","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"AndrewOng2066"},"content":"javac -cp ..\\src\\main\\java -Xlint:none -d ..\\bin ..\\src\\main\\java\\*.java","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"AndrewOng2066"},"content":"IF ERRORLEVEL 1 (","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"AndrewOng2066"},"content":" echo ********** BUILD FAILURE **********","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"AndrewOng2066"},"content":" exit /b 1","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"AndrewOng2066"},"content":")","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"AndrewOng2066"},"content":"REM no error here, errorlevel \u003d\u003d 0","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"AndrewOng2066"},"content":"REM run the program, feed commands from input.txt file and redirect the output to the ACTUAL.TXT","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"AndrewOng2066"},"content":"java -classpath ..\\bin Duke \u003c input2.txt \u003e ACTUAL2.TXT","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"AndrewOng2066"},"content":"REM compare the output to the expected output","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"AndrewOng2066"},"content":"FC ACTUAL2.TXT EXPECTED2.TXT","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"AndrewOng2066":21}},{"path":"text-ui-test/runtest2.sh","fileType":"sh","lines":[{"lineNumber":1,"author":{"gitId":"AndrewOng2066"},"content":"#!/usr/bin/env bash","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"AndrewOng2066"},"content":"# create bin directory if it doesn\u0027t exist","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"AndrewOng2066"},"content":"if [ ! -d \"../bin\" ]","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"AndrewOng2066"},"content":"then","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"AndrewOng2066"},"content":" mkdir ../bin","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"AndrewOng2066"},"content":"fi","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"AndrewOng2066"},"content":"# delete output from previous run","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"AndrewOng2066"},"content":"if [ -e \"./ACTUAL.TXT\" ]","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"AndrewOng2066"},"content":"then","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"AndrewOng2066"},"content":" rm ACTUAL.TXT","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"AndrewOng2066"},"content":"fi","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"AndrewOng2066"},"content":"# compile the code into the bin folder, terminates if error occurred","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"AndrewOng2066"},"content":"if ! javac -cp ../src/main/java -Xlint:none -d ../bin ../src/main/java/*.java","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"AndrewOng2066"},"content":"then","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"AndrewOng2066"},"content":" echo \"********** BUILD FAILURE **********\"","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"AndrewOng2066"},"content":" exit 1","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"AndrewOng2066"},"content":"fi","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"AndrewOng2066"},"content":"# run the program, feed commands from input.txt file and redirect the output to the ACTUAL.TXT","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"AndrewOng2066"},"content":"java -classpath ../bin Duke \u003c input2.txt \u003e ACTUAL2.TXT","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"AndrewOng2066"},"content":"# convert to UNIX format","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"AndrewOng2066"},"content":"cp EXPECTED2.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"AndrewOng2066"},"content":"dos2unix ACTUAL2.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2024-01-25"},{"lineNumber":28,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":29,"author":{"gitId":"AndrewOng2066"},"content":"# compare the output to the expected output","lastModifiedDate":"2024-01-25"},{"lineNumber":30,"author":{"gitId":"AndrewOng2066"},"content":"diff ACTUAL2.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2024-01-25"},{"lineNumber":31,"author":{"gitId":"AndrewOng2066"},"content":"if [ $? -eq 0 ]","lastModifiedDate":"2024-01-25"},{"lineNumber":32,"author":{"gitId":"AndrewOng2066"},"content":"then","lastModifiedDate":"2024-01-25"},{"lineNumber":33,"author":{"gitId":"AndrewOng2066"},"content":" echo \"Test result: PASSED\"","lastModifiedDate":"2024-01-25"},{"lineNumber":34,"author":{"gitId":"AndrewOng2066"},"content":" exit 0","lastModifiedDate":"2024-01-25"},{"lineNumber":35,"author":{"gitId":"AndrewOng2066"},"content":"else","lastModifiedDate":"2024-01-25"},{"lineNumber":36,"author":{"gitId":"AndrewOng2066"},"content":" echo \"Test result: FAILED\"","lastModifiedDate":"2024-01-25"},{"lineNumber":37,"author":{"gitId":"AndrewOng2066"},"content":" exit 1","lastModifiedDate":"2024-01-25"},{"lineNumber":38,"author":{"gitId":"AndrewOng2066"},"content":"fi","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"AndrewOng2066":38}}] diff --git a/AndrewOng2066_ip_master/commits.json b/AndrewOng2066_ip_master/commits.json index 94ad1281..b8d3090d 100644 --- a/AndrewOng2066_ip_master/commits.json +++ b/AndrewOng2066_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"AndrewOng2066":[{"date":"2024-01-22","commitResults":[{"hash":"c17faef69cde219cb4dc6c4c3bc69f821998ffc0","isMergeCommit":false,"messageTitle":"Implement an initial skeletal version of it that simply greets the user and exits.","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":7,"deletions":1}}},{"hash":"dff0de4d276608f8960f63da0fb91f6bbbb41532","isMergeCommit":false,"messageTitle":"Improve the skeletal version of Duke so that it echos commands entered by the user, and exits when the user types the command bye.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":12,"deletions":0}}},{"hash":"46b1919e3922b0a0a279d9e42983f4c7244771d2","isMergeCommit":false,"messageTitle":"Improve the skeletal version of Duke so that it echos commands entered by the user, and exits when the user types the command bye. Applied indentation","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":10}}},{"hash":"8cec1b6a58ae5e23cec598e1fae47ab49f511d8d","isMergeCommit":false,"messageTitle":"Add the ability to store whatever text entered by the user and display them back to the user when requested.","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":20,"deletions":9}}},{"hash":"556e0b300ac97a68e8b079fa35ed7f07f0c939cd","isMergeCommit":false,"messageTitle":"Add the ability to mark tasks as done. Optionally, add the ability to change the status back to not done.","messageBody":"","tags":["Level-3","A-Classes"],"fileTypesAndContributionMap":{"java":{"insertions":58,"deletions":4}}},{"hash":"a7c5b30bd2be3f9a329d3f5f0d6f12a9d981856e","isMergeCommit":false,"messageTitle":"Add support for tracking three types of tasks","messageBody":"","tags":["Level-4","A-Inheritance"],"fileTypesAndContributionMap":{"java":{"insertions":81,"deletions":6}}}]},{"date":"2024-01-23","commitResults":[{"hash":"bc16ccd96014d53330fc37f47ef609468baa9860","isMergeCommit":false,"messageTitle":"Use the input/output redirection technique to semi-automate the testing of Duke. Commented the code for the \"else\" portion","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":0},"java":{"insertions":4,"deletions":4}}},{"hash":"d56b1bb2a694696ac0d5974d6b9f647801f41062","isMergeCommit":false,"messageTitle":"Teach the chatbot to deal with errors such as incorrect inputs entered by the user.","messageBody":"","tags":["Level-5","A-Exceptions"],"fileTypesAndContributionMap":{"java":{"insertions":133,"deletions":54}}}]},{"date":"2024-01-24","commitResults":[{"hash":"33003e13a0a5abee6e17b91ae2654889bd29af29","isMergeCommit":false,"messageTitle":"Add support for deleting tasks from the list. Added exception handling for integer input. replaced the code with the individual method.","messageBody":"","tags":["Level-6","A-Collections"],"fileTypesAndContributionMap":{"java":{"insertions":93,"deletions":51}}},{"hash":"ac522f6748bf3ab0a34c64747d6f5dc023ac9365","isMergeCommit":false,"messageTitle":"Added Enumerations for the function","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":19,"deletions":8}}}]},{"date":"2024-01-25","commitResults":[{"hash":"4e7c63707531ae1b3c936d9e03e4efa740d4d1bb","isMergeCommit":false,"messageTitle":"Added a test case but not working due to the spaces after \u0027:\u0027. new files added: ACTUAL2.TXT, EXPECTED2.TXT, input2.txt, runtest2.bat","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":30,"deletions":0},"bat":{"insertions":21,"deletions":0}}},{"hash":"970c8316d44631da45b1e3e5244ad4d85836bb6c","isMergeCommit":false,"messageTitle":"Fixed the spaces issue, i.e. spaces after \":\" edited the EXPECTED2.TXT to remove the spaces.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":6,"deletions":6}}},{"hash":"88315a5d27a59f455814ef215e4177715568ebfc","isMergeCommit":false,"messageTitle":"Added new exception handling (i.e. ensure that the input integer are more than 0)","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":3}}},{"hash":"2875c4cd1f50365e0e4ee9671ecd1745a586ef93","isMergeCommit":false,"messageTitle":"Added shell file (runtest.sh)","messageBody":"","fileTypesAndContributionMap":{"sh":{"insertions":38,"deletions":0}}}]}]},"authorFileTypeContributionMap":{"AndrewOng2066":{"java":289,"md":0,"fxml":0,"sh":38,"bat":21,"gradle":0,"txt":33}},"authorContributionVariance":{"AndrewOng2066":8373.266},"authorDisplayNameMap":{"AndrewOng2066":"CS2103T-T13-1 ANDR..WOON"}} +{"authorDailyContributionsMap":{"AndrewOng2066":[{"date":"2024-01-22","commitResults":[{"hash":"c17faef69cde219cb4dc6c4c3bc69f821998ffc0","isMergeCommit":false,"messageTitle":"Implement an initial skeletal version of it that simply greets the user and exits.","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":7,"deletions":1}}},{"hash":"dff0de4d276608f8960f63da0fb91f6bbbb41532","isMergeCommit":false,"messageTitle":"Improve the skeletal version of Duke so that it echos commands entered by the user, and exits when the user types the command bye.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":12,"deletions":0}}},{"hash":"46b1919e3922b0a0a279d9e42983f4c7244771d2","isMergeCommit":false,"messageTitle":"Improve the skeletal version of Duke so that it echos commands entered by the user, and exits when the user types the command bye. Applied indentation","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":10}}},{"hash":"8cec1b6a58ae5e23cec598e1fae47ab49f511d8d","isMergeCommit":false,"messageTitle":"Add the ability to store whatever text entered by the user and display them back to the user when requested.","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":20,"deletions":9}}},{"hash":"556e0b300ac97a68e8b079fa35ed7f07f0c939cd","isMergeCommit":false,"messageTitle":"Add the ability to mark tasks as done. Optionally, add the ability to change the status back to not done.","messageBody":"","tags":["Level-3","A-Classes"],"fileTypesAndContributionMap":{"java":{"insertions":58,"deletions":4}}},{"hash":"a7c5b30bd2be3f9a329d3f5f0d6f12a9d981856e","isMergeCommit":false,"messageTitle":"Add support for tracking three types of tasks","messageBody":"","tags":["Level-4","A-Inheritance"],"fileTypesAndContributionMap":{"java":{"insertions":81,"deletions":6}}}]},{"date":"2024-01-23","commitResults":[{"hash":"bc16ccd96014d53330fc37f47ef609468baa9860","isMergeCommit":false,"messageTitle":"Use the input/output redirection technique to semi-automate the testing of Duke. Commented the code for the \"else\" portion","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":0},"java":{"insertions":4,"deletions":4}}},{"hash":"d56b1bb2a694696ac0d5974d6b9f647801f41062","isMergeCommit":false,"messageTitle":"Teach the chatbot to deal with errors such as incorrect inputs entered by the user.","messageBody":"","tags":["Level-5","A-Exceptions"],"fileTypesAndContributionMap":{"java":{"insertions":133,"deletions":54}}}]},{"date":"2024-01-24","commitResults":[{"hash":"33003e13a0a5abee6e17b91ae2654889bd29af29","isMergeCommit":false,"messageTitle":"Add support for deleting tasks from the list. Added exception handling for integer input. replaced the code with the individual method.","messageBody":"","tags":["Level-6","A-Collections"],"fileTypesAndContributionMap":{"java":{"insertions":93,"deletions":51}}},{"hash":"ac522f6748bf3ab0a34c64747d6f5dc023ac9365","isMergeCommit":false,"messageTitle":"Added Enumerations for the function","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":19,"deletions":8}}}]},{"date":"2024-01-25","commitResults":[{"hash":"4e7c63707531ae1b3c936d9e03e4efa740d4d1bb","isMergeCommit":false,"messageTitle":"Added a test case but not working due to the spaces after \u0027:\u0027. new files added: ACTUAL2.TXT, EXPECTED2.TXT, input2.txt, runtest2.bat","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":30,"deletions":0},"bat":{"insertions":21,"deletions":0}}},{"hash":"970c8316d44631da45b1e3e5244ad4d85836bb6c","isMergeCommit":false,"messageTitle":"Fixed the spaces issue, i.e. spaces after \":\" edited the EXPECTED2.TXT to remove the spaces.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":6,"deletions":6}}},{"hash":"88315a5d27a59f455814ef215e4177715568ebfc","isMergeCommit":false,"messageTitle":"Added new exception handling (i.e. ensure that the input integer are more than 0)","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":3}}},{"hash":"2875c4cd1f50365e0e4ee9671ecd1745a586ef93","isMergeCommit":false,"messageTitle":"Added shell file (runtest.sh)","messageBody":"","fileTypesAndContributionMap":{"sh":{"insertions":38,"deletions":0}}}]},{"date":"2024-01-29","commitResults":[{"hash":"b4778aa460348b2574b1bf705fb7d8df1c46f6ec","isMergeCommit":false,"messageTitle":"Add a new function to store data into a file. However, the current llistMethod is not reading from the file. Add new files, i.e. duke.txt, DukeException.java, FileManager.java","messageBody":"Created a new DukeException.java and moved the DukeException code over.\n\nCreated a new FileManager to write data to a txt file.\n","fileTypesAndContributionMap":{"txt":{"insertions":5,"deletions":0},"java":{"insertions":98,"deletions":7}}},{"hash":"16a6a6efab61c685e2059b080b146649fcc60d0e","isMergeCommit":false,"messageTitle":"Change the layout of each object class (ToDo, Deadline, Event)","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":5},"java":{"insertions":50,"deletions":17}}},{"hash":"d3412f74ea89da378fc086c9e0fcdebefafb2215","isMergeCommit":false,"messageTitle":"Complete the save feature without JavaDoc","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":2},"java":{"insertions":49,"deletions":14}}}]},{"date":"2024-01-30","commitResults":[{"hash":"a83b5ca47098ab8adff99d1c4b46e3f5d6eed9aa","isMergeCommit":false,"messageTitle":"Add Javadoc to the program","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":2},"java":{"insertions":87,"deletions":11}}},{"hash":"108a753e79cb7d04ad29d9433b5393e7827932d9","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"0e85508e2f4427f2f55c3470bb038a14c302e6f6","isMergeCommit":false,"messageTitle":"Add a new empty line","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":0}}},{"hash":"0b32048804aa2164b4e56561f43f418088bc4db7","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"AndrewOng2066":{"java":525,"md":0,"fxml":0,"sh":38,"bat":21,"gradle":0,"txt":37}},"authorContributionVariance":{"AndrewOng2066":9180.083},"authorDisplayNameMap":{"AndrewOng2066":"CS2103T-T13-1 ANDR..WOON"}} diff --git a/Austintjh19_ip_master/authorship.json b/Austintjh19_ip_master/authorship.json index 98c2b665..fddb0aa8 100644 --- a/Austintjh19_ip_master/authorship.json +++ b/Austintjh19_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"src/main/java/Main.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Austintjh19"},"content":"public class Main {","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"Austintjh19"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"Austintjh19"},"content":" // Level 8 Branch","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"Austintjh19"},"content":" final Osiris chatBot \u003d new Osiris();","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"Austintjh19"},"content":" chatBot.startChat();","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"Austintjh19"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"Austintjh19":8}},{"path":"src/main/java/Osiris.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Austintjh19"},"content":"import Task.Task;","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"Austintjh19"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"Austintjh19"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"Austintjh19"},"content":"public class Osiris {","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"Austintjh19"},"content":" public static final String NAME \u003d \"Osiris\";","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"Austintjh19"},"content":" private final TaskManager taskManager \u003d new TaskManager();","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"Austintjh19"},"content":" public void startChat(){","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"Austintjh19"},"content":" Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"Austintjh19"},"content":" this.taskManager.initialise();","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"Austintjh19"},"content":" boolean terminateChat \u003d false;","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":17,"author":{"gitId":"Austintjh19"},"content":" this.printSeparator();","lastModifiedDate":"2024-01-23"},{"lineNumber":18,"author":{"gitId":"Austintjh19"},"content":" this.outputIntroductions();","lastModifiedDate":"2024-01-23"},{"lineNumber":19,"author":{"gitId":"Austintjh19"},"content":" this.printSeparator();","lastModifiedDate":"2024-01-23"},{"lineNumber":20,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":21,"author":{"gitId":"Austintjh19"},"content":" while (!terminateChat){","lastModifiedDate":"2024-01-23"},{"lineNumber":22,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":23,"author":{"gitId":"Austintjh19"},"content":" String userInput \u003d scanner.nextLine();","lastModifiedDate":"2024-01-23"},{"lineNumber":24,"author":{"gitId":"Austintjh19"},"content":" String[] inputtedWords \u003d userInput.split(\" \");","lastModifiedDate":"2024-01-23"},{"lineNumber":25,"author":{"gitId":"Austintjh19"},"content":" String taskName;","lastModifiedDate":"2024-01-24"},{"lineNumber":26,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":27,"author":{"gitId":"Austintjh19"},"content":" switch (inputtedWords[0]) {","lastModifiedDate":"2024-01-23"},{"lineNumber":28,"author":{"gitId":"Austintjh19"},"content":" case \"bye\":","lastModifiedDate":"2024-01-23"},{"lineNumber":29,"author":{"gitId":"Austintjh19"},"content":" terminateChat \u003d true;","lastModifiedDate":"2024-01-23"},{"lineNumber":30,"author":{"gitId":"Austintjh19"},"content":" break;","lastModifiedDate":"2024-01-23"},{"lineNumber":31,"author":{"gitId":"Austintjh19"},"content":" case \"list\":","lastModifiedDate":"2024-01-23"},{"lineNumber":32,"author":{"gitId":"Austintjh19"},"content":" this.printUserTasks();","lastModifiedDate":"2024-01-23"},{"lineNumber":33,"author":{"gitId":"Austintjh19"},"content":" break;","lastModifiedDate":"2024-01-23"},{"lineNumber":34,"author":{"gitId":"Austintjh19"},"content":" case \"mark\":","lastModifiedDate":"2024-01-23"},{"lineNumber":35,"author":{"gitId":"Austintjh19"},"content":" if (inputtedWords.length \u003d\u003d 2) {","lastModifiedDate":"2024-01-24"},{"lineNumber":36,"author":{"gitId":"Austintjh19"},"content":" String taskIndexString \u003d inputtedWords[1];","lastModifiedDate":"2024-01-24"},{"lineNumber":37,"author":{"gitId":"Austintjh19"},"content":" if (taskIndexString.matches(\"\\\\d+\")) {","lastModifiedDate":"2024-01-24"},{"lineNumber":38,"author":{"gitId":"Austintjh19"},"content":" int taskIndex \u003d Integer.parseInt(taskIndexString);","lastModifiedDate":"2024-01-24"},{"lineNumber":39,"author":{"gitId":"Austintjh19"},"content":" this.markTaskCompleted(taskIndex);","lastModifiedDate":"2024-01-24"},{"lineNumber":40,"author":{"gitId":"Austintjh19"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":41,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\"Invalid task index: \" + taskIndexString + \". Please enter a valid integer.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":42,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":43,"author":{"gitId":"Austintjh19"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":44,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\"Invalid task index. Please Reenter\");","lastModifiedDate":"2024-01-24"},{"lineNumber":45,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":46,"author":{"gitId":"Austintjh19"},"content":" break;","lastModifiedDate":"2024-01-23"},{"lineNumber":47,"author":{"gitId":"Austintjh19"},"content":" case \"unmark\":","lastModifiedDate":"2024-01-23"},{"lineNumber":48,"author":{"gitId":"Austintjh19"},"content":" if (inputtedWords.length \u003d\u003d 2) {","lastModifiedDate":"2024-01-24"},{"lineNumber":49,"author":{"gitId":"Austintjh19"},"content":" String taskIndexString \u003d inputtedWords[1];","lastModifiedDate":"2024-01-24"},{"lineNumber":50,"author":{"gitId":"Austintjh19"},"content":" if (taskIndexString.matches(\"\\\\d+\")) {","lastModifiedDate":"2024-01-24"},{"lineNumber":51,"author":{"gitId":"Austintjh19"},"content":" int taskIndex \u003d Integer.parseInt(taskIndexString);","lastModifiedDate":"2024-01-24"},{"lineNumber":52,"author":{"gitId":"Austintjh19"},"content":" this.markTaskIncomplete(taskIndex);","lastModifiedDate":"2024-01-24"},{"lineNumber":53,"author":{"gitId":"Austintjh19"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":54,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\"Invalid task index: \" + taskIndexString + \". Please enter a valid integer.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":55,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":56,"author":{"gitId":"Austintjh19"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":57,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\"Invalid task index. Please Reenter\");","lastModifiedDate":"2024-01-24"},{"lineNumber":58,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":59,"author":{"gitId":"Austintjh19"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":60,"author":{"gitId":"Austintjh19"},"content":" case \"delete\":","lastModifiedDate":"2024-01-24"},{"lineNumber":61,"author":{"gitId":"Austintjh19"},"content":" if (inputtedWords.length \u003d\u003d 2) {","lastModifiedDate":"2024-01-24"},{"lineNumber":62,"author":{"gitId":"Austintjh19"},"content":" String taskIndexString \u003d inputtedWords[1];","lastModifiedDate":"2024-01-24"},{"lineNumber":63,"author":{"gitId":"Austintjh19"},"content":" if (taskIndexString.matches(\"\\\\d+\")) {","lastModifiedDate":"2024-01-24"},{"lineNumber":64,"author":{"gitId":"Austintjh19"},"content":" int taskIndex \u003d Integer.parseInt(taskIndexString);","lastModifiedDate":"2024-01-24"},{"lineNumber":65,"author":{"gitId":"Austintjh19"},"content":" this.removeTask(taskIndex);","lastModifiedDate":"2024-01-24"},{"lineNumber":66,"author":{"gitId":"Austintjh19"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":67,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\"Invalid task index: \" + taskIndexString + \". Please enter a valid integer.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":68,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":69,"author":{"gitId":"Austintjh19"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":70,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\"Invalid task index. Please Reenter\");","lastModifiedDate":"2024-01-24"},{"lineNumber":71,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":72,"author":{"gitId":"Austintjh19"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":73,"author":{"gitId":"Austintjh19"},"content":" case \"todo\":","lastModifiedDate":"2024-01-24"},{"lineNumber":74,"author":{"gitId":"Austintjh19"},"content":" taskName \u003d userInput.substring(\"todo\".length()).trim();","lastModifiedDate":"2024-01-24"},{"lineNumber":75,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":76,"author":{"gitId":"Austintjh19"},"content":" if (!taskName.isEmpty()) {","lastModifiedDate":"2024-01-24"},{"lineNumber":77,"author":{"gitId":"Austintjh19"},"content":" this.addToDoTask(taskName);","lastModifiedDate":"2024-01-24"},{"lineNumber":78,"author":{"gitId":"Austintjh19"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":79,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\"Task name not provided. Please Reenter.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":80,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":81,"author":{"gitId":"Austintjh19"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":82,"author":{"gitId":"Austintjh19"},"content":" case \"deadline\":","lastModifiedDate":"2024-01-24"},{"lineNumber":83,"author":{"gitId":"Austintjh19"},"content":" int byIndex \u003d userInput.indexOf(\"/by\");","lastModifiedDate":"2024-01-24"},{"lineNumber":84,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":85,"author":{"gitId":"Austintjh19"},"content":" if (byIndex !\u003d -1) {","lastModifiedDate":"2024-01-24"},{"lineNumber":86,"author":{"gitId":"Austintjh19"},"content":" taskName \u003d userInput.substring(\"deadline\".length(), byIndex - 1).trim();","lastModifiedDate":"2024-01-24"},{"lineNumber":87,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":88,"author":{"gitId":"Austintjh19"},"content":" if (!taskName.isEmpty()) {","lastModifiedDate":"2024-01-24"},{"lineNumber":89,"author":{"gitId":"Austintjh19"},"content":" String deadline \u003d userInput.substring(byIndex + \"/by\".length()).trim();","lastModifiedDate":"2024-01-24"},{"lineNumber":90,"author":{"gitId":"Austintjh19"},"content":" this.addDeadlineTask(taskName, deadline);","lastModifiedDate":"2024-01-24"},{"lineNumber":91,"author":{"gitId":"Austintjh19"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":92,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\"Task name not provided. Please Reenter.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":93,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":94,"author":{"gitId":"Austintjh19"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":95,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\"Invalid input format. Please Reenter. Ensure \u0027/by\u0027 is specified for a Deadline Task. E.g. deadline Do Homework /by Sunday.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":96,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":97,"author":{"gitId":"Austintjh19"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":98,"author":{"gitId":"Austintjh19"},"content":" case \"event\":","lastModifiedDate":"2024-01-24"},{"lineNumber":99,"author":{"gitId":"Austintjh19"},"content":" int fromIndex \u003d userInput.indexOf(\"/from\");","lastModifiedDate":"2024-01-24"},{"lineNumber":100,"author":{"gitId":"Austintjh19"},"content":" int toIndex \u003d userInput.indexOf(\"/to\");","lastModifiedDate":"2024-01-24"},{"lineNumber":101,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":102,"author":{"gitId":"Austintjh19"},"content":" if (fromIndex !\u003d -1 \u0026\u0026 toIndex !\u003d -1 \u0026\u0026 fromIndex \u003c toIndex) {","lastModifiedDate":"2024-01-24"},{"lineNumber":103,"author":{"gitId":"Austintjh19"},"content":" taskName \u003d userInput.substring(\"event\".length(), fromIndex - 1).trim();","lastModifiedDate":"2024-01-24"},{"lineNumber":104,"author":{"gitId":"Austintjh19"},"content":" if (!taskName.isEmpty()) {","lastModifiedDate":"2024-01-24"},{"lineNumber":105,"author":{"gitId":"Austintjh19"},"content":" String startDateTime \u003d userInput.substring(fromIndex + \"/from\".length(), toIndex - 1).trim();","lastModifiedDate":"2024-01-24"},{"lineNumber":106,"author":{"gitId":"Austintjh19"},"content":" String endDateTime \u003d userInput.substring(toIndex + \"/to\".length()).trim();","lastModifiedDate":"2024-01-24"},{"lineNumber":107,"author":{"gitId":"Austintjh19"},"content":" this.addEventTask(taskName, startDateTime, endDateTime);","lastModifiedDate":"2024-01-24"},{"lineNumber":108,"author":{"gitId":"Austintjh19"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":109,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\"Task name not provided. Please Reenter.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":110,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":111,"author":{"gitId":"Austintjh19"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":112,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\"Invalid input format. Please Reenter. Ensure \u0027/from\u0027 \u0026 \u0027/to\u0027 is specified for a Event Task. E.g. event School Meeting /from Mon 2pm /to 4pm. Please Reenter.\" );","lastModifiedDate":"2024-01-24"},{"lineNumber":113,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":114,"author":{"gitId":"Austintjh19"},"content":" break;","lastModifiedDate":"2024-01-23"},{"lineNumber":115,"author":{"gitId":"Austintjh19"},"content":" default:","lastModifiedDate":"2024-01-23"},{"lineNumber":116,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\"Sorry, but I am unable to comprehend the instruction at my current development stage. Please enter something else.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":117,"author":{"gitId":"Austintjh19"},"content":" break;","lastModifiedDate":"2024-01-23"},{"lineNumber":118,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":119,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":120,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":121,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":122,"author":{"gitId":"Austintjh19"},"content":" this.taskManager.termintate();","lastModifiedDate":"2024-01-29"},{"lineNumber":123,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":124,"author":{"gitId":"Austintjh19"},"content":" this.printSeparator();","lastModifiedDate":"2024-01-23"},{"lineNumber":125,"author":{"gitId":"Austintjh19"},"content":" this.outputGoodbyes();","lastModifiedDate":"2024-01-23"},{"lineNumber":126,"author":{"gitId":"Austintjh19"},"content":" this.printSeparator();","lastModifiedDate":"2024-01-23"},{"lineNumber":127,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":128,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":129,"author":{"gitId":"Austintjh19"},"content":" public void outputIntroductions() {","lastModifiedDate":"2024-01-23"},{"lineNumber":130,"author":{"gitId":"Austintjh19"},"content":" String[] asciiArt \u003d {","lastModifiedDate":"2024-01-28"},{"lineNumber":131,"author":{"gitId":"Austintjh19"},"content":" \" ,o888888o. d888888o. 8 8888 8 888888888o. 8 8888 d888888o. \",","lastModifiedDate":"2024-01-28"},{"lineNumber":132,"author":{"gitId":"Austintjh19"},"content":" \" . 8888 `88. .`8888:\u0027 `88. 8 8888 8 8888 `88. 8 8888 .`8888:\u0027 `88. \",","lastModifiedDate":"2024-01-28"},{"lineNumber":133,"author":{"gitId":"Austintjh19"},"content":" \",8 8888 `8b 8.`8888. Y8 8 8888 8 8888 `88 8 8888 8.`8888. Y8 \",","lastModifiedDate":"2024-01-28"},{"lineNumber":134,"author":{"gitId":"Austintjh19"},"content":" \"88 8888 `8b `8.`8888. 8 8888 8 8888 ,88 8 8888 `8.`8888. \",","lastModifiedDate":"2024-01-28"},{"lineNumber":135,"author":{"gitId":"Austintjh19"},"content":" \"88 8888 88 `8.`8888. 8 8888 8 8888. ,88\u0027 8 8888 `8.`8888. \",","lastModifiedDate":"2024-01-28"},{"lineNumber":136,"author":{"gitId":"Austintjh19"},"content":" \"88 8888 88 `8.`8888. 8 8888 8 888888888P\u0027 8 8888 `8.`8888. \",","lastModifiedDate":"2024-01-28"},{"lineNumber":137,"author":{"gitId":"Austintjh19"},"content":" \"88 8888 ,8P `8.`8888. 8 8888 8 8888`8b 8 8888 `8.`8888. \",","lastModifiedDate":"2024-01-28"},{"lineNumber":138,"author":{"gitId":"Austintjh19"},"content":" \"`8 8888 ,8P 8b `8.`8888. 8 8888 8 8888 `8b. 8 8888 8b `8.`8888. \",","lastModifiedDate":"2024-01-28"},{"lineNumber":139,"author":{"gitId":"Austintjh19"},"content":" \" ` 8888 ,88\u0027 `8b. ;8.`8888 8 8888 8 8888 `8b. 8 8888 `8b. ;8.`8888 \",","lastModifiedDate":"2024-01-28"},{"lineNumber":140,"author":{"gitId":"Austintjh19"},"content":" \" `8888888P\u0027 `Y8888P ,88P\u0027 8 8888 8 8888 `88. 8 8888 `Y8888P ,88P\u0027 \"","lastModifiedDate":"2024-01-28"},{"lineNumber":141,"author":{"gitId":"Austintjh19"},"content":" };","lastModifiedDate":"2024-01-28"},{"lineNumber":142,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":143,"author":{"gitId":"Austintjh19"},"content":" for (String line : asciiArt) {","lastModifiedDate":"2024-01-28"},{"lineNumber":144,"author":{"gitId":"Austintjh19"},"content":" System.out.println(line);","lastModifiedDate":"2024-01-28"},{"lineNumber":145,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":146,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":147,"author":{"gitId":"Austintjh19"},"content":" this.printSeparator();","lastModifiedDate":"2024-01-28"},{"lineNumber":148,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":149,"author":{"gitId":"Austintjh19"},"content":" String introductions \u003d String.format(\"Hello! I\u0027m %s.\\nWhat can I do for you?\", Osiris.NAME);","lastModifiedDate":"2024-01-23"},{"lineNumber":150,"author":{"gitId":"Austintjh19"},"content":" System.out.println(introductions);","lastModifiedDate":"2024-01-23"},{"lineNumber":151,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":152,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":153,"author":{"gitId":"Austintjh19"},"content":" public void outputGoodbyes() {","lastModifiedDate":"2024-01-23"},{"lineNumber":154,"author":{"gitId":"Austintjh19"},"content":" String goodbyes \u003d \"Bye. Hope to see you again soon!\";","lastModifiedDate":"2024-01-23"},{"lineNumber":155,"author":{"gitId":"Austintjh19"},"content":" System.out.println(goodbyes);","lastModifiedDate":"2024-01-23"},{"lineNumber":156,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":157,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":158,"author":{"gitId":"Austintjh19"},"content":" private void addToDoTask(String taskName) {","lastModifiedDate":"2024-01-24"},{"lineNumber":159,"author":{"gitId":"Austintjh19"},"content":" this.taskManager.addToDoTask(taskName, false);","lastModifiedDate":"2024-01-29"},{"lineNumber":160,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":161,"author":{"gitId":"Austintjh19"},"content":" this.printSeparator();","lastModifiedDate":"2024-01-24"},{"lineNumber":162,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\" Got it. I\u0027ve added this task:\");","lastModifiedDate":"2024-01-24"},{"lineNumber":163,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\" \" + this.taskManager.getTask(this.taskManager.getTotalTaskCount() - 1).toString());","lastModifiedDate":"2024-01-29"},{"lineNumber":164,"author":{"gitId":"Austintjh19"},"content":" System.out.printf(\" Now you have %d tasks in the list.%n\", this.taskManager.getTotalTaskCount());","lastModifiedDate":"2024-01-29"},{"lineNumber":165,"author":{"gitId":"Austintjh19"},"content":" this.printSeparator();","lastModifiedDate":"2024-01-24"},{"lineNumber":166,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":167,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":168,"author":{"gitId":"Austintjh19"},"content":" private void addDeadlineTask(String taskName, String deadline) {","lastModifiedDate":"2024-01-24"},{"lineNumber":169,"author":{"gitId":"Austintjh19"},"content":" this.taskManager.addDeadlineTask(taskName,deadline, false);","lastModifiedDate":"2024-01-29"},{"lineNumber":170,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":171,"author":{"gitId":"Austintjh19"},"content":" this.printSeparator();","lastModifiedDate":"2024-01-24"},{"lineNumber":172,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\" Got it. I\u0027ve added this task:\");","lastModifiedDate":"2024-01-24"},{"lineNumber":173,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\" \" + this.taskManager.getTask(this.taskManager.getTotalTaskCount() - 1).toString());","lastModifiedDate":"2024-01-29"},{"lineNumber":174,"author":{"gitId":"Austintjh19"},"content":" System.out.printf(\" Now you have %d tasks in the list.%n\", this.taskManager.getTotalTaskCount());","lastModifiedDate":"2024-01-29"},{"lineNumber":175,"author":{"gitId":"Austintjh19"},"content":" this.printSeparator();","lastModifiedDate":"2024-01-24"},{"lineNumber":176,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":177,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":178,"author":{"gitId":"Austintjh19"},"content":" private void addEventTask(String taskName, String startDateTime, String endDateTime) {","lastModifiedDate":"2024-01-24"},{"lineNumber":179,"author":{"gitId":"Austintjh19"},"content":" this.taskManager.addEventTask(taskName, startDateTime, endDateTime, false);","lastModifiedDate":"2024-01-29"},{"lineNumber":180,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":181,"author":{"gitId":"Austintjh19"},"content":" this.printSeparator();","lastModifiedDate":"2024-01-24"},{"lineNumber":182,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\" Got it. I\u0027ve added this task:\");","lastModifiedDate":"2024-01-24"},{"lineNumber":183,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\" \" + this.taskManager.getTask(this.taskManager.getTotalTaskCount() - 1).toString());","lastModifiedDate":"2024-01-29"},{"lineNumber":184,"author":{"gitId":"Austintjh19"},"content":" System.out.printf(\" Now you have %d tasks in the list.%n\", this.taskManager.getTotalTaskCount());","lastModifiedDate":"2024-01-29"},{"lineNumber":185,"author":{"gitId":"Austintjh19"},"content":" this.printSeparator();","lastModifiedDate":"2024-01-24"},{"lineNumber":186,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":187,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":188,"author":{"gitId":"Austintjh19"},"content":" private void markTaskCompleted(int index){","lastModifiedDate":"2024-01-23"},{"lineNumber":189,"author":{"gitId":"Austintjh19"},"content":" boolean successful \u003d this.taskManager.markTaskCompleted(index - 1);","lastModifiedDate":"2024-01-24"},{"lineNumber":190,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":191,"author":{"gitId":"Austintjh19"},"content":" if (successful) {","lastModifiedDate":"2024-01-24"},{"lineNumber":192,"author":{"gitId":"Austintjh19"},"content":" this.printSeparator();","lastModifiedDate":"2024-01-23"},{"lineNumber":193,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\" Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2024-01-23"},{"lineNumber":194,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\" \" + this.taskManager.getTask(index - 1).toString());","lastModifiedDate":"2024-01-23"},{"lineNumber":195,"author":{"gitId":"Austintjh19"},"content":" this.printSeparator();","lastModifiedDate":"2024-01-23"},{"lineNumber":196,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":197,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":198,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":199,"author":{"gitId":"Austintjh19"},"content":" private void markTaskIncomplete(int index) {","lastModifiedDate":"2024-01-23"},{"lineNumber":200,"author":{"gitId":"Austintjh19"},"content":" boolean successful \u003d this.taskManager.markTaskIncomplete(index - 1);","lastModifiedDate":"2024-01-24"},{"lineNumber":201,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":202,"author":{"gitId":"Austintjh19"},"content":" if (successful) {","lastModifiedDate":"2024-01-24"},{"lineNumber":203,"author":{"gitId":"Austintjh19"},"content":" this.printSeparator();","lastModifiedDate":"2024-01-23"},{"lineNumber":204,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\" OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2024-01-23"},{"lineNumber":205,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\" \" + this.taskManager.getTask(index - 1).toString());","lastModifiedDate":"2024-01-23"},{"lineNumber":206,"author":{"gitId":"Austintjh19"},"content":" this.printSeparator();","lastModifiedDate":"2024-01-23"},{"lineNumber":207,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":208,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":209,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":210,"author":{"gitId":"Austintjh19"},"content":" private void removeTask(int index) {","lastModifiedDate":"2024-01-24"},{"lineNumber":211,"author":{"gitId":"Austintjh19"},"content":" Task removedTask \u003d this.taskManager.removeTask(index - 1);","lastModifiedDate":"2024-01-24"},{"lineNumber":212,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":213,"author":{"gitId":"Austintjh19"},"content":" if (removedTask !\u003d null) {","lastModifiedDate":"2024-01-24"},{"lineNumber":214,"author":{"gitId":"Austintjh19"},"content":" this.printSeparator();","lastModifiedDate":"2024-01-24"},{"lineNumber":215,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\" Noted. I\u0027ve removed this task:\");","lastModifiedDate":"2024-01-24"},{"lineNumber":216,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\" \" + removedTask.toString());","lastModifiedDate":"2024-01-24"},{"lineNumber":217,"author":{"gitId":"Austintjh19"},"content":" System.out.printf(\" Now you have %d tasks in the list.%n\", this.taskManager.getTotalTaskCount());","lastModifiedDate":"2024-01-29"},{"lineNumber":218,"author":{"gitId":"Austintjh19"},"content":" this.printSeparator();","lastModifiedDate":"2024-01-24"},{"lineNumber":219,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":220,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":221,"author":{"gitId":"Austintjh19"},"content":" private void printUserTasks(){","lastModifiedDate":"2024-01-23"},{"lineNumber":222,"author":{"gitId":"Austintjh19"},"content":" ArrayList\u003cTask\u003e toPrint \u003d this.taskManager.getUserTasks();","lastModifiedDate":"2024-01-23"},{"lineNumber":223,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":224,"author":{"gitId":"Austintjh19"},"content":" this.printSeparator();","lastModifiedDate":"2024-01-23"},{"lineNumber":225,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\" Here are the tasks in your list:\");","lastModifiedDate":"2024-01-24"},{"lineNumber":226,"author":{"gitId":"Austintjh19"},"content":" for (int i \u003d 0; i \u003c toPrint.size(); i++) {","lastModifiedDate":"2024-01-23"},{"lineNumber":227,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\" \" + (i + 1) + \". \" + toPrint.get(i).toString());","lastModifiedDate":"2024-01-23"},{"lineNumber":228,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":229,"author":{"gitId":"Austintjh19"},"content":" this.printSeparator();","lastModifiedDate":"2024-01-23"},{"lineNumber":230,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":231,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":232,"author":{"gitId":"Austintjh19"},"content":" private void printSeparator() {","lastModifiedDate":"2024-01-23"},{"lineNumber":233,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\"----------------------------------------\");","lastModifiedDate":"2024-01-23"},{"lineNumber":234,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":235,"author":{"gitId":"Austintjh19"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"Austintjh19":235}},{"path":"src/main/java/Storage/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Austintjh19"},"content":"package Storage;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"Austintjh19"},"content":"import java.io.File;","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"Austintjh19"},"content":"public class Storage {","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"Austintjh19"},"content":" private String filepath;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"Austintjh19"},"content":" public Storage(String filepath) {","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"Austintjh19"},"content":" this.filepath \u003d filepath;","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"Austintjh19"},"content":" public String getFilepath() {","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"Austintjh19"},"content":" return filepath;","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"Austintjh19"},"content":" public boolean storageFileExist() {","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"Austintjh19"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"Austintjh19"},"content":" File file \u003d new File(this.filepath);","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"Austintjh19"},"content":" return file.exists();","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"Austintjh19"},"content":" } catch (SecurityException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"Austintjh19"},"content":" System.err.println(\"SecurityException occurred.\" );","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"Austintjh19"},"content":" return false;","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"Austintjh19"},"content":" } catch (NullPointerException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"Austintjh19"},"content":" System.err.println(\"NullPointerException occurred.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"Austintjh19"},"content":" return false;","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"Austintjh19"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"Austintjh19"},"content":" System.err.println(\"An error occurred with Function storageFileExist().\");","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"Austintjh19"},"content":" return false;","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"Austintjh19"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"Austintjh19":31}},{"path":"src/main/java/Storage/data/task.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"Austintjh19"},"content":"T | N | Borrow Book","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"Austintjh19"},"content":"T | Y | Return Book","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"Austintjh19"},"content":"D | Y | CS2103 Quiz | Monday","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"Austintjh19"},"content":"E | N | MSL meeting | Monday 10am | 12pm","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"Austintjh19"},"content":"T | N | 100 push-ups","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"Austintjh19":5}},{"path":"src/main/java/Storage/txtFileStorage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Austintjh19"},"content":"package Storage;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"Austintjh19"},"content":"import java.io.File;","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"Austintjh19"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"Austintjh19"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"Austintjh19"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"Austintjh19"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"Austintjh19"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"Austintjh19"},"content":"public class txtFileStorage extends Storage{","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"Austintjh19"},"content":" public txtFileStorage(String filepath) {","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"Austintjh19"},"content":" super(filepath);","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"Austintjh19"},"content":" public void createTxtFileStorage() {","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"Austintjh19"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"Austintjh19"},"content":" File file \u003d new File(this.getFilepath());","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"Austintjh19"},"content":" if (super.storageFileExist()) {","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\"Task Storage File: \" + this.getFilepath());","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"Austintjh19"},"content":" } else {","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"Austintjh19"},"content":" if (file.createNewFile()) {","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\"Created Task Storage File: \" + this.getFilepath());","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"Austintjh19"},"content":" } else {","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\"Failed to create Task Storage file: \" + this.getFilepath());","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"Austintjh19"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\"Error: Unable to create new Txt file for Task storage.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"Austintjh19"},"content":" System.out.println(e.toString());","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":33,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":34,"author":{"gitId":"Austintjh19"},"content":" public ArrayList\u003cString\u003e readTxtFileStorage() {","lastModifiedDate":"2024-01-28"},{"lineNumber":35,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"Austintjh19"},"content":" ArrayList\u003cString\u003e readContents \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"Austintjh19"},"content":" Scanner scanner \u003d null;","lastModifiedDate":"2024-01-28"},{"lineNumber":38,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":39,"author":{"gitId":"Austintjh19"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":40,"author":{"gitId":"Austintjh19"},"content":" File file \u003d new File(this.getFilepath());","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":42,"author":{"gitId":"Austintjh19"},"content":" scanner \u003d new Scanner(file);","lastModifiedDate":"2024-01-28"},{"lineNumber":43,"author":{"gitId":"Austintjh19"},"content":" while (scanner.hasNext()) {","lastModifiedDate":"2024-01-28"},{"lineNumber":44,"author":{"gitId":"Austintjh19"},"content":" readContents.add(scanner.nextLine());","lastModifiedDate":"2024-01-28"},{"lineNumber":45,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":46,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":47,"author":{"gitId":"Austintjh19"},"content":" return readContents;","lastModifiedDate":"2024-01-28"},{"lineNumber":48,"author":{"gitId":"Austintjh19"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":49,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\"Error: Unable to locate filepath \" + this.getFilepath());","lastModifiedDate":"2024-01-29"},{"lineNumber":50,"author":{"gitId":"Austintjh19"},"content":" } finally {","lastModifiedDate":"2024-01-28"},{"lineNumber":51,"author":{"gitId":"Austintjh19"},"content":" if (scanner !\u003d null) {","lastModifiedDate":"2024-01-28"},{"lineNumber":52,"author":{"gitId":"Austintjh19"},"content":" scanner.close();","lastModifiedDate":"2024-01-28"},{"lineNumber":53,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":54,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":55,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":56,"author":{"gitId":"Austintjh19"},"content":" return readContents;","lastModifiedDate":"2024-01-28"},{"lineNumber":57,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":58,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":59,"author":{"gitId":"Austintjh19"},"content":" public void writeToTxtFileStorage(String content) {","lastModifiedDate":"2024-01-28"},{"lineNumber":60,"author":{"gitId":"Austintjh19"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":61,"author":{"gitId":"Austintjh19"},"content":" FileWriter fw \u003d new FileWriter(this.getFilepath());","lastModifiedDate":"2024-01-29"},{"lineNumber":62,"author":{"gitId":"Austintjh19"},"content":" fw.write(content);","lastModifiedDate":"2024-01-28"},{"lineNumber":63,"author":{"gitId":"Austintjh19"},"content":" fw.close();","lastModifiedDate":"2024-01-28"},{"lineNumber":64,"author":{"gitId":"Austintjh19"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":65,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\"Error: Unable to update Task Storage File.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":66,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":67,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":68,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":69,"author":{"gitId":"Austintjh19"},"content":" public void appendToTxtFileStorage(String content) {","lastModifiedDate":"2024-01-28"},{"lineNumber":70,"author":{"gitId":"Austintjh19"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":71,"author":{"gitId":"Austintjh19"},"content":" FileWriter fw \u003d new FileWriter(this.getFilepath(), true);","lastModifiedDate":"2024-01-29"},{"lineNumber":72,"author":{"gitId":"Austintjh19"},"content":" fw.write(content + \"\\n\");","lastModifiedDate":"2024-01-29"},{"lineNumber":73,"author":{"gitId":"Austintjh19"},"content":" fw.close();","lastModifiedDate":"2024-01-29"},{"lineNumber":74,"author":{"gitId":"Austintjh19"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":75,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\"Error: Unable to update Task Storage File. Trouble appending.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":76,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":77,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":78,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":79,"author":{"gitId":"Austintjh19"},"content":" public void clearTxtFileStorage() {","lastModifiedDate":"2024-01-29"},{"lineNumber":80,"author":{"gitId":"Austintjh19"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":81,"author":{"gitId":"Austintjh19"},"content":" FileWriter fw \u003d new FileWriter(getFilepath());","lastModifiedDate":"2024-01-29"},{"lineNumber":82,"author":{"gitId":"Austintjh19"},"content":" fw.close();","lastModifiedDate":"2024-01-28"},{"lineNumber":83,"author":{"gitId":"Austintjh19"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":84,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\"Error: Unable to update Task Storage File. Trouble clearing contents.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":85,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":86,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":87,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":88,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":89,"author":{"gitId":"Austintjh19"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"Austintjh19":89}},{"path":"src/main/java/Task/DeadlineTask.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Austintjh19"},"content":"package Task;","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"Austintjh19"},"content":"import Task.Task;","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"Austintjh19"},"content":"public class DeadlineTask extends Task {","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"Austintjh19"},"content":" private String deadline;","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"Austintjh19"},"content":" public DeadlineTask(String taskName, String deadline) {","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"Austintjh19"},"content":" super(taskName);","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"Austintjh19"},"content":" this.deadline \u003d deadline;","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"Austintjh19"},"content":" public DeadlineTask(String taskName, String deadline, boolean isCompleted) {","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"Austintjh19"},"content":" super(taskName, isCompleted);","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"Austintjh19"},"content":" this.deadline \u003d deadline;","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"Austintjh19"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"Austintjh19"},"content":" public String getStringStorageRepresentation() {","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"Austintjh19"},"content":" return String.format(\"D | %s | %s\", super.getStringStorageRepresentation(), this.deadline);","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"Austintjh19"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":25,"author":{"gitId":"Austintjh19"},"content":" public String toString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":26,"author":{"gitId":"Austintjh19"},"content":" return String.format(\"[D] %s (by: %s)\", super.toString(), this.deadline);","lastModifiedDate":"2024-01-23"},{"lineNumber":27,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":28,"author":{"gitId":"Austintjh19"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"Austintjh19":28}},{"path":"src/main/java/Task/EventTask.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Austintjh19"},"content":"package Task;","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"Austintjh19"},"content":"import Task.Task;","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"Austintjh19"},"content":"public class EventTask extends Task {","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"Austintjh19"},"content":" private String startDateTime;","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"Austintjh19"},"content":" private String endDateTime;","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"Austintjh19"},"content":" public EventTask(String taskName, String startDateTime, String endDateTime) {","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"Austintjh19"},"content":" super(taskName);","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"Austintjh19"},"content":" this.startDateTime \u003d startDateTime;","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"Austintjh19"},"content":" this.endDateTime \u003d endDateTime;","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":17,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":18,"author":{"gitId":"Austintjh19"},"content":" public EventTask(String taskName, String startDateTime, String endDateTime, boolean isCompleted) {","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"Austintjh19"},"content":" super(taskName, isCompleted);","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"Austintjh19"},"content":" this.startDateTime \u003d startDateTime;","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"Austintjh19"},"content":" this.endDateTime \u003d endDateTime;","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"Austintjh19"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"Austintjh19"},"content":" public String getStringStorageRepresentation() {","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"Austintjh19"},"content":" return String.format(\"E | %s | %s | %s\", super.getStringStorageRepresentation(), this.startDateTime, this.endDateTime);","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"Austintjh19"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":32,"author":{"gitId":"Austintjh19"},"content":" public String toString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":33,"author":{"gitId":"Austintjh19"},"content":" return String.format(\"[E] %s (from: %s to: %s)\", super.toString(), this.startDateTime, this.endDateTime);","lastModifiedDate":"2024-01-23"},{"lineNumber":34,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":35,"author":{"gitId":"Austintjh19"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"Austintjh19":35}},{"path":"src/main/java/Task/InvalidTaskException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Austintjh19"},"content":"package Task;","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"Austintjh19"},"content":"public class InvalidTaskException extends Exception{","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"Austintjh19"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"Austintjh19"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"Austintjh19"},"content":" return \"Invalid Task Name assigned.\";","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"Austintjh19"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"Austintjh19"},"content":" public String getMessage() {","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"Austintjh19"},"content":" return \"Invalid Task Name assigned.\";","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"Austintjh19"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"Austintjh19":16}},{"path":"src/main/java/Task/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Austintjh19"},"content":"package Task;","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"Austintjh19"},"content":"public abstract class Task {","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"Austintjh19"},"content":" private String taskName;","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"Austintjh19"},"content":" private boolean isCompleted \u003d false;","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"Austintjh19"},"content":" public Task(String taskName){","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"Austintjh19"},"content":" this.taskName \u003d taskName;","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"Austintjh19"},"content":" public Task(String taskName, boolean isCompleted) {","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"Austintjh19"},"content":" this.taskName \u003d taskName;","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"Austintjh19"},"content":" this.isCompleted \u003d isCompleted;","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"Austintjh19"},"content":" public void markCompleted() {","lastModifiedDate":"2024-01-23"},{"lineNumber":19,"author":{"gitId":"Austintjh19"},"content":" this.isCompleted \u003d true;","lastModifiedDate":"2024-01-23"},{"lineNumber":20,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":21,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":22,"author":{"gitId":"Austintjh19"},"content":" public void markIncomplete() {","lastModifiedDate":"2024-01-23"},{"lineNumber":23,"author":{"gitId":"Austintjh19"},"content":" this.isCompleted \u003d false;","lastModifiedDate":"2024-01-23"},{"lineNumber":24,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":25,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":26,"author":{"gitId":"Austintjh19"},"content":" public String getStringStorageRepresentation() {","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"Austintjh19"},"content":" String completionStatus \u003d isCompleted ? \"Y\" : \"N\";","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"Austintjh19"},"content":" return String.format(\"%s | %s\", completionStatus, taskName);","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"Austintjh19"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":32,"author":{"gitId":"Austintjh19"},"content":" public String toString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":33,"author":{"gitId":"Austintjh19"},"content":" String completionStatus \u003d isCompleted ? \"[X]\" : \"[ ]\";","lastModifiedDate":"2024-01-23"},{"lineNumber":34,"author":{"gitId":"Austintjh19"},"content":" return String.format(\"%s %s\", completionStatus, this.taskName);","lastModifiedDate":"2024-01-23"},{"lineNumber":35,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":36,"author":{"gitId":"Austintjh19"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"Austintjh19":36}},{"path":"src/main/java/Task/ToDoTask.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Austintjh19"},"content":"package Task;","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"Austintjh19"},"content":"import Task.Task;","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"Austintjh19"},"content":"public class ToDoTask extends Task {","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"Austintjh19"},"content":" public ToDoTask(String taskName) {","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"Austintjh19"},"content":" super(taskName);","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"Austintjh19"},"content":" public ToDoTask(String taskName, boolean isCompleted) {","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"Austintjh19"},"content":" super(taskName, isCompleted);","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"Austintjh19"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"Austintjh19"},"content":" public String getStringStorageRepresentation() {","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"Austintjh19"},"content":" return String.format(\"T | %s\", super.getStringStorageRepresentation());","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"Austintjh19"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":20,"author":{"gitId":"Austintjh19"},"content":" public String toString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":21,"author":{"gitId":"Austintjh19"},"content":" return String.format(\"[T] %s\", super.toString());","lastModifiedDate":"2024-01-23"},{"lineNumber":22,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":23,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":24,"author":{"gitId":"Austintjh19"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"Austintjh19":24}},{"path":"src/main/java/TaskManager.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Austintjh19"},"content":"import Storage.txtFileStorage;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"Austintjh19"},"content":"import Task.Task;","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"Austintjh19"},"content":"import Task.ToDoTask;","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"Austintjh19"},"content":"import Task.DeadlineTask;","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"Austintjh19"},"content":"import Task.EventTask;","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"Austintjh19"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"Austintjh19"},"content":"public class TaskManager {","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"Austintjh19"},"content":" private final String TASKSTORAGEFILEPATH \u003d \"src/main/java/Storage/data/task.txt\";","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"Austintjh19"},"content":" private ArrayList\u003cTask\u003e userTasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"Austintjh19"},"content":" private txtFileStorage taskStorage \u003d new txtFileStorage(TASKSTORAGEFILEPATH);","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"Austintjh19"},"content":" public boolean addToDoTask(String taskName, boolean isCompleted) {","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"Austintjh19"},"content":" ToDoTask newTask \u003d new ToDoTask(taskName, isCompleted);","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"Austintjh19"},"content":" this.userTasks.add(newTask);","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"Austintjh19"},"content":" return true;","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":23,"author":{"gitId":"Austintjh19"},"content":" public boolean addDeadlineTask(String taskName, String deadline, boolean isCompleted) {","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"Austintjh19"},"content":" DeadlineTask newTask \u003d new DeadlineTask(taskName, deadline, isCompleted);","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"Austintjh19"},"content":" this.userTasks.add(newTask);","lastModifiedDate":"2024-01-24"},{"lineNumber":26,"author":{"gitId":"Austintjh19"},"content":" return true;","lastModifiedDate":"2024-01-24"},{"lineNumber":27,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":28,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":29,"author":{"gitId":"Austintjh19"},"content":" public boolean addEventTask(String taskName, String startDateTime, String endDateTime, boolean isCompleted) {","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"Austintjh19"},"content":" EventTask newTask \u003d new EventTask(taskName, startDateTime, endDateTime, isCompleted);","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"Austintjh19"},"content":" this.userTasks.add(newTask);","lastModifiedDate":"2024-01-23"},{"lineNumber":32,"author":{"gitId":"Austintjh19"},"content":" return true;","lastModifiedDate":"2024-01-24"},{"lineNumber":33,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":34,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":35,"author":{"gitId":"Austintjh19"},"content":" public Task getTask(int index){","lastModifiedDate":"2024-01-23"},{"lineNumber":36,"author":{"gitId":"Austintjh19"},"content":" return this.userTasks.get(index);","lastModifiedDate":"2024-01-23"},{"lineNumber":37,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":38,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":39,"author":{"gitId":"Austintjh19"},"content":" public ArrayList\u003cTask\u003e getUserTasks(){","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"Austintjh19"},"content":" return userTasks;","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"Austintjh19"},"content":" public Task removeTask(int index) {","lastModifiedDate":"2024-01-24"},{"lineNumber":44,"author":{"gitId":"Austintjh19"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":45,"author":{"gitId":"Austintjh19"},"content":" Task removedTask \u003d this.userTasks.get(index);","lastModifiedDate":"2024-01-24"},{"lineNumber":46,"author":{"gitId":"Austintjh19"},"content":" this.userTasks.remove(index);","lastModifiedDate":"2024-01-24"},{"lineNumber":47,"author":{"gitId":"Austintjh19"},"content":" return removedTask;","lastModifiedDate":"2024-01-24"},{"lineNumber":48,"author":{"gitId":"Austintjh19"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":49,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\"No task with index \" + (index + 1) + \". Enter \u0027list\u0027 to view tasks.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":50,"author":{"gitId":"Austintjh19"},"content":" return null;","lastModifiedDate":"2024-01-24"},{"lineNumber":51,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":52,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":53,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":54,"author":{"gitId":"Austintjh19"},"content":" public int getTotalTaskCount(){","lastModifiedDate":"2024-01-24"},{"lineNumber":55,"author":{"gitId":"Austintjh19"},"content":" return this.userTasks.size();","lastModifiedDate":"2024-01-24"},{"lineNumber":56,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":57,"author":{"gitId":"Austintjh19"},"content":" public boolean markTaskCompleted(int index) {","lastModifiedDate":"2024-01-24"},{"lineNumber":58,"author":{"gitId":"Austintjh19"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":59,"author":{"gitId":"Austintjh19"},"content":" this.userTasks.get(index).markCompleted();","lastModifiedDate":"2024-01-23"},{"lineNumber":60,"author":{"gitId":"Austintjh19"},"content":" return true;","lastModifiedDate":"2024-01-24"},{"lineNumber":61,"author":{"gitId":"Austintjh19"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":62,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\"No task with index \" + (index + 1) + \". Enter \u0027list\u0027 to view tasks.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":63,"author":{"gitId":"Austintjh19"},"content":" return false;","lastModifiedDate":"2024-01-24"},{"lineNumber":64,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":65,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":66,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":67,"author":{"gitId":"Austintjh19"},"content":" public boolean markTaskIncomplete(int index) {","lastModifiedDate":"2024-01-24"},{"lineNumber":68,"author":{"gitId":"Austintjh19"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":69,"author":{"gitId":"Austintjh19"},"content":" this.userTasks.get(index).markIncomplete();","lastModifiedDate":"2024-01-23"},{"lineNumber":70,"author":{"gitId":"Austintjh19"},"content":" return true;","lastModifiedDate":"2024-01-24"},{"lineNumber":71,"author":{"gitId":"Austintjh19"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":72,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\"No task with index \" + (index + 1) + \". Enter \u0027list\u0027 to view tasks.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":73,"author":{"gitId":"Austintjh19"},"content":" return false;","lastModifiedDate":"2024-01-24"},{"lineNumber":74,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":75,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":76,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":77,"author":{"gitId":"Austintjh19"},"content":" private void storeUserTaskToFileStorage() {","lastModifiedDate":"2024-01-29"},{"lineNumber":78,"author":{"gitId":"Austintjh19"},"content":" for (Task task : this.userTasks) {","lastModifiedDate":"2024-01-29"},{"lineNumber":79,"author":{"gitId":"Austintjh19"},"content":" this.taskStorage.appendToTxtFileStorage(task.getStringStorageRepresentation());","lastModifiedDate":"2024-01-29"},{"lineNumber":80,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":81,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":82,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":83,"author":{"gitId":"Austintjh19"},"content":" private void loadUserTaskFromFileStorage(){","lastModifiedDate":"2024-01-29"},{"lineNumber":84,"author":{"gitId":"Austintjh19"},"content":" ArrayList\u003cString\u003e readContents \u003d this.taskStorage.readTxtFileStorage();","lastModifiedDate":"2024-01-29"},{"lineNumber":85,"author":{"gitId":"Austintjh19"},"content":" for (String readContentString : readContents) {","lastModifiedDate":"2024-01-29"},{"lineNumber":86,"author":{"gitId":"Austintjh19"},"content":" String[] readContentWord \u003d readContentString.split(\"\\\\|\");","lastModifiedDate":"2024-01-29"},{"lineNumber":87,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":88,"author":{"gitId":"Austintjh19"},"content":" if (readContentWord[0].trim().equals(\"T\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":89,"author":{"gitId":"Austintjh19"},"content":" this.addToDoTask(readContentWord[2].trim(), readContentWord[1].trim().equals(\"Y\"));","lastModifiedDate":"2024-01-29"},{"lineNumber":90,"author":{"gitId":"Austintjh19"},"content":" } else if (readContentWord[0].trim().equals(\"D\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":91,"author":{"gitId":"Austintjh19"},"content":" this.addDeadlineTask(readContentWord[2].trim(), readContentWord[3].trim(), readContentWord[1].trim().equals(\"Y\"));","lastModifiedDate":"2024-01-29"},{"lineNumber":92,"author":{"gitId":"Austintjh19"},"content":" } else if (readContentWord[0].trim().equals(\"E\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":93,"author":{"gitId":"Austintjh19"},"content":" this.addEventTask(readContentWord[2].trim(), readContentWord[3].trim(), readContentWord[4].trim(), readContentWord[1].trim().equals(\"Y\"));","lastModifiedDate":"2024-01-29"},{"lineNumber":94,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":95,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":96,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":97,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":98,"author":{"gitId":"Austintjh19"},"content":" public void initialise(){","lastModifiedDate":"2024-01-29"},{"lineNumber":99,"author":{"gitId":"Austintjh19"},"content":" if (!this.taskStorage.storageFileExist()) {","lastModifiedDate":"2024-01-29"},{"lineNumber":100,"author":{"gitId":"Austintjh19"},"content":" this.taskStorage.createTxtFileStorage();","lastModifiedDate":"2024-01-29"},{"lineNumber":101,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":102,"author":{"gitId":"Austintjh19"},"content":" this.loadUserTaskFromFileStorage();","lastModifiedDate":"2024-01-29"},{"lineNumber":103,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":104,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":105,"author":{"gitId":"Austintjh19"},"content":" public void termintate(){","lastModifiedDate":"2024-01-29"},{"lineNumber":106,"author":{"gitId":"Austintjh19"},"content":" this.taskStorage.clearTxtFileStorage();","lastModifiedDate":"2024-01-29"},{"lineNumber":107,"author":{"gitId":"Austintjh19"},"content":" this.storeUserTaskToFileStorage();","lastModifiedDate":"2024-01-29"},{"lineNumber":108,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":109,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":110,"author":{"gitId":"Austintjh19"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"Austintjh19":110}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"Austintjh19"},"content":"todo read book","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"Austintjh19"},"content":"todo borrow book","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"Austintjh19"},"content":"deadline return book /by Sunday","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"Austintjh19"},"content":"deadline do homework /by no idea :-p","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"Austintjh19"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"Austintjh19"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"Austintjh19"},"content":"mark 1","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"Austintjh19"},"content":"mark 3","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"Austintjh19"},"content":"mark 5","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"Austintjh19"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"Austintjh19"},"content":"unmark 1","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"Austintjh19"},"content":"unmark 3","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"Austintjh19"},"content":"unmark 5","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"Austintjh19"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"Austintjh19"},"content":"bye","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"Austintjh19":15}},{"path":"text-ui-test/runtest.sh","fileType":"sh","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"#!/usr/bin/env bash","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"# create bin directory if it doesn\u0027t exist","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"if [ ! -d \"../bin\" ]","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":" mkdir ../bin","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"# delete output from previous run","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"if [ -e \"./ACTUAL.TXT\" ]","lastModifiedDate":"2020-05-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":" rm ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"# compile the code into the bin folder, terminates if error occurred","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"if ! javac -cp ../src/main/java -Xlint:none -d ../bin ../src/main/java/*.java","lastModifiedDate":"2020-08-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" echo \"********** BUILD FAILURE **********\"","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" exit 1","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":"# run the program, feed commands from input.txt file and redirect the output to the ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"Austintjh19"},"content":"java -classpath ../bin Main \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":"# convert to UNIX format","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":"cp EXPECTED.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":"dos2unix ACTUAL.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"# compare the output to the expected output","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"diff ACTUAL.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":"if [ $? -eq 0 ]","lastModifiedDate":"2020-05-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":" echo \"Test result: PASSED\"","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":" exit 0","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":"else","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" echo \"Test result: FAILED\"","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" exit 1","lastModifiedDate":"2020-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"Austintjh19":1,"-":37}}] +[{"path":"src/main/java/Osiris/Commands/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Austintjh19"},"content":"package Osiris.Commands;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"Austintjh19"},"content":"import Osiris.Task.TaskManager;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"Austintjh19"},"content":"import Osiris.UI.Ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"Austintjh19"},"content":"public abstract class Command {","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"Austintjh19"},"content":" private boolean isTerminateChat \u003d false;","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"Austintjh19"},"content":" public boolean isTerminateChat() {","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"Austintjh19"},"content":" return isTerminateChat;","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"Austintjh19"},"content":" public abstract boolean execute(TaskManager taskManager, Ui userInterface);","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"Austintjh19"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"Austintjh19":15}},{"path":"src/main/java/Osiris/Commands/NoCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Austintjh19"},"content":"package Osiris.Commands;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"Austintjh19"},"content":"import Osiris.Task.TaskManager;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"Austintjh19"},"content":"import Osiris.UI.Ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"Austintjh19"},"content":"public class NoCommand extends Command{","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"Austintjh19"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"Austintjh19"},"content":" public boolean execute(TaskManager taskManager, Ui userInterface) {","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"Austintjh19"},"content":" return true;","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"Austintjh19"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"Austintjh19":11}},{"path":"src/main/java/Osiris/Commands/UnsupportedCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Austintjh19"},"content":"package Osiris.Commands;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"Austintjh19"},"content":"import Osiris.Task.TaskManager;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"Austintjh19"},"content":"import Osiris.UI.Ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"Austintjh19"},"content":"public class UnsupportedCommand extends Command{","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"Austintjh19"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"Austintjh19"},"content":" public boolean execute(TaskManager taskManager, Ui userInterface) {","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"Austintjh19"},"content":" userInterface.unsupportedCommandsOutput();","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"Austintjh19"},"content":" return true;","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"Austintjh19"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"Austintjh19":12}},{"path":"src/main/java/Osiris/Commands/addDeadlineTaskCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Austintjh19"},"content":"package Osiris.Commands;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"Austintjh19"},"content":"import Osiris.Task.TaskManager;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"Austintjh19"},"content":"import Osiris.UI.Ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"Austintjh19"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"Austintjh19"},"content":"public class addDeadlineTaskCommand extends Command{","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"Austintjh19"},"content":" public static final String COMMAND \u003d \"deadline\";","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"Austintjh19"},"content":" private String taskName;","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"Austintjh19"},"content":" private LocalDate deadline;","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"Austintjh19"},"content":" public addDeadlineTaskCommand(String taskName, LocalDate deadline){","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"Austintjh19"},"content":" this.taskName \u003d taskName;","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"Austintjh19"},"content":" this.deadline \u003d deadline;","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"Austintjh19"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"Austintjh19"},"content":" public boolean execute(TaskManager taskManager, Ui userInterface) {","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"Austintjh19"},"content":" boolean isSuccess \u003d taskManager.addDeadlineTask(this.taskName, this.deadline, false);","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"Austintjh19"},"content":" if (isSuccess) {","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"Austintjh19"},"content":" userInterface.addDeadlineTaskSuccessNotification(taskManager.getTask(","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"Austintjh19"},"content":" taskManager.getTotalTaskCount() - 1).toString(), taskManager.getTotalTaskCount());","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"Austintjh19"},"content":" return true;","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"Austintjh19"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"Austintjh19":30}},{"path":"src/main/java/Osiris/Commands/addEventTaskCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Austintjh19"},"content":"package Osiris.Commands;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"Austintjh19"},"content":"import Osiris.Task.TaskManager;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"Austintjh19"},"content":"import Osiris.UI.Ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"Austintjh19"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"Austintjh19"},"content":"public class addEventTaskCommand extends Command{","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"Austintjh19"},"content":" public static final String COMMAND \u003d \"event\";","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"Austintjh19"},"content":" private String taskName;","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"Austintjh19"},"content":" private LocalDateTime startDateTime;","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"Austintjh19"},"content":" private LocalDateTime endDateTime;","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"Austintjh19"},"content":" public addEventTaskCommand(String taskName, LocalDateTime startDateTime, LocalDateTime endDateTime) {","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"Austintjh19"},"content":" this.taskName \u003d taskName;","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"Austintjh19"},"content":" this.startDateTime \u003d startDateTime;","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"Austintjh19"},"content":" this.endDateTime \u003d endDateTime;","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"Austintjh19"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"Austintjh19"},"content":" public boolean execute(TaskManager taskManager, Ui userInterface) {","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"Austintjh19"},"content":" boolean isSuccess \u003d taskManager.addEventTask(this.taskName, this.startDateTime, this.endDateTime, false);","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"Austintjh19"},"content":" if (isSuccess) {","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"Austintjh19"},"content":" userInterface.addEventTaskSuccessNotification(taskManager.getTask(","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"Austintjh19"},"content":" taskManager.getTotalTaskCount() - 1).toString(), taskManager.getTotalTaskCount());","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"Austintjh19"},"content":" return true;","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"Austintjh19"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"Austintjh19":33}},{"path":"src/main/java/Osiris/Commands/addToDoTaskCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Austintjh19"},"content":"package Osiris.Commands;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"Austintjh19"},"content":"import Osiris.Task.TaskManager;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"Austintjh19"},"content":"import Osiris.UI.Ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"Austintjh19"},"content":"public class addToDoTaskCommand extends Command{","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"Austintjh19"},"content":" public static final String COMMAND \u003d \"todo\";","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"Austintjh19"},"content":" private String taskName;","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"Austintjh19"},"content":" public addToDoTaskCommand(String taskName){","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"Austintjh19"},"content":" this.taskName \u003d taskName;","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"Austintjh19"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"Austintjh19"},"content":" public boolean execute(TaskManager taskManager, Ui userInterface) {","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"Austintjh19"},"content":" boolean isSuccess \u003d taskManager.addToDoTask(this.taskName, false);","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"Austintjh19"},"content":" if (isSuccess) {","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"Austintjh19"},"content":" userInterface.addToDoTaskSuccessNotification(taskManager.getTask(","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"Austintjh19"},"content":" taskManager.getTotalTaskCount() - 1).toString(), taskManager.getTotalTaskCount());","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"Austintjh19"},"content":" return true;","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"Austintjh19"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"Austintjh19":24}},{"path":"src/main/java/Osiris/Commands/markTaskCompletedCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Austintjh19"},"content":"package Osiris.Commands;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"Austintjh19"},"content":"import Osiris.Task.TaskManager;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"Austintjh19"},"content":"import Osiris.UI.Ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"Austintjh19"},"content":"public class markTaskCompletedCommand extends Command{","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"Austintjh19"},"content":" public static final String COMMAND \u003d \"mark\";","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"Austintjh19"},"content":" private int taskIndex;","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"Austintjh19"},"content":" public markTaskCompletedCommand(int taskIndex){","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"Austintjh19"},"content":" this.taskIndex \u003d taskIndex;","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"Austintjh19"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"Austintjh19"},"content":" public boolean execute(TaskManager taskManager, Ui userInterface) {","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"Austintjh19"},"content":" boolean isSuccess \u003d taskManager.markTaskCompleted(this.taskIndex - 1);","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"Austintjh19"},"content":" if (isSuccess) {","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"Austintjh19"},"content":" userInterface.markTaskCompletedSuccessNotification(taskManager.getTask(this.taskIndex - 1).toString());","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"Austintjh19"},"content":" return true;","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"Austintjh19"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"Austintjh19":24}},{"path":"src/main/java/Osiris/Commands/markTaskIncompleteCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Austintjh19"},"content":"package Osiris.Commands;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"Austintjh19"},"content":"import Osiris.Task.TaskManager;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"Austintjh19"},"content":"import Osiris.UI.Ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"Austintjh19"},"content":"public class markTaskIncompleteCommand extends Command{","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"Austintjh19"},"content":" public static final String COMMAND \u003d \"unmark\";","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"Austintjh19"},"content":" private int taskIndex;","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"Austintjh19"},"content":" public markTaskIncompleteCommand(int taskIndex){","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"Austintjh19"},"content":" this.taskIndex \u003d taskIndex;","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"Austintjh19"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"Austintjh19"},"content":" public boolean execute(TaskManager taskManager, Ui userInterface) {","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"Austintjh19"},"content":" boolean isSuccess \u003d taskManager.markTaskIncomplete(this.taskIndex - 1);","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"Austintjh19"},"content":" if (isSuccess) {","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"Austintjh19"},"content":" userInterface.markTaskIncompleteSuccessNotification(taskManager.getTask(this.taskIndex - 1).toString());","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"Austintjh19"},"content":" return true;","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"Austintjh19"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"Austintjh19":24}},{"path":"src/main/java/Osiris/Commands/printUserTasksCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Austintjh19"},"content":"package Osiris.Commands;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"Austintjh19"},"content":"import Osiris.Task.Task;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"Austintjh19"},"content":"import Osiris.UI.Ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"Austintjh19"},"content":"import Osiris.Task.TaskManager;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"Austintjh19"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"Austintjh19"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"Austintjh19"},"content":"public class printUserTasksCommand extends Command{","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"Austintjh19"},"content":" public static final String COMMAND \u003d \"list\";","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"Austintjh19"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"Austintjh19"},"content":" public boolean execute(TaskManager taskManager, Ui userInterface) {","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"Austintjh19"},"content":" ArrayList\u003cTask\u003e taskList \u003d taskManager.getUserTasks();","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"Austintjh19"},"content":" ArrayList\u003cString\u003e taskDetailsArrayList \u003d taskList.stream().map(task -\u003e task.toString()).collect(Collectors.toCollection(ArrayList::new));","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"Austintjh19"},"content":" userInterface.printUserTasks(taskDetailsArrayList);","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"Austintjh19"},"content":" return true;","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"Austintjh19"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"Austintjh19":21}},{"path":"src/main/java/Osiris/Commands/removeTaskCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Austintjh19"},"content":"package Osiris.Commands;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"Austintjh19"},"content":"import Osiris.Task.Task;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"Austintjh19"},"content":"import Osiris.Task.TaskManager;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"Austintjh19"},"content":"import Osiris.UI.Ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"Austintjh19"},"content":"public class removeTaskCommand extends Command{","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"Austintjh19"},"content":" public static final String COMMAND \u003d \"delete\";","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"Austintjh19"},"content":" private int taskIndex;","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"Austintjh19"},"content":" public removeTaskCommand(int taskIndex){","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"Austintjh19"},"content":" this.taskIndex \u003d taskIndex;","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"Austintjh19"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"Austintjh19"},"content":" public boolean execute(TaskManager taskManager, Ui userInterface) {","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"Austintjh19"},"content":" Task removedTask \u003d taskManager.removeTask(this.taskIndex - 1);","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"Austintjh19"},"content":" if (removedTask !\u003d null) {","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"Austintjh19"},"content":" userInterface.removeTaskSuccessNotification(removedTask.toString(), taskManager.getTotalTaskCount());","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"Austintjh19"},"content":" return true;","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"Austintjh19"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"Austintjh19":25}},{"path":"src/main/java/Osiris/Commands/terminateChatCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Austintjh19"},"content":"package Osiris.Commands;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"Austintjh19"},"content":"import Osiris.Task.TaskManager;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"Austintjh19"},"content":"import Osiris.UI.Ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"Austintjh19"},"content":"public class terminateChatCommand extends Command{","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"Austintjh19"},"content":" public static final String COMMAND \u003d \"bye\";","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"Austintjh19"},"content":" public boolean isTerminateChat() {","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"Austintjh19"},"content":" return true;","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"Austintjh19"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"Austintjh19"},"content":" public boolean execute(TaskManager taskManager, Ui userInterface) {","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"Austintjh19"},"content":" taskManager.termintate();","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"Austintjh19"},"content":" return true;","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"Austintjh19"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"Austintjh19":19}},{"path":"src/main/java/Osiris/Formatters/DateTimeFormatters.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Austintjh19"},"content":"package Osiris.Formatters;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"Austintjh19"},"content":"import Osiris.Validation.InputsValidator;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"Austintjh19"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"Austintjh19"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"Austintjh19"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"Austintjh19"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"Austintjh19"},"content":"public class DateTimeFormatters {","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"Austintjh19"},"content":" private static DateTimeFormatters instance;","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"Austintjh19"},"content":" private DateTimeFormatters() {}","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"Austintjh19"},"content":" public static DateTimeFormatters getInstance() {","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"Austintjh19"},"content":" if (instance \u003d\u003d null) {","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"Austintjh19"},"content":" instance \u003d new DateTimeFormatters();","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"Austintjh19"},"content":" return instance;","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"Austintjh19"},"content":" public LocalDate userInputDateFormatter(String dateStr) {","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"Austintjh19"},"content":" DateTimeFormatter dateTimeFormatter \u003d DateTimeFormatter.ofPattern(\"dd-MM-yyyy\");","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"Austintjh19"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"Austintjh19"},"content":" LocalDate date \u003d LocalDate.parse(dateStr, dateTimeFormatter);","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"Austintjh19"},"content":" return date;","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"Austintjh19"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\"Failed to parse the date-time string: \" + dateStr);","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\"Please try /by dd-mm-yyyy for a deadline tasks.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"Austintjh19"},"content":" return null;","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"Austintjh19"},"content":" public LocalDateTime userInputDateTimeFormatter(String dateTimeStr) {","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"Austintjh19"},"content":" DateTimeFormatter dateTimeFormatter \u003d DateTimeFormatter.ofPattern(\"dd-MM-yyyy HHmm\");","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"Austintjh19"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"Austintjh19"},"content":" LocalDateTime dateTime \u003d LocalDateTime.parse(dateTimeStr, dateTimeFormatter);","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"Austintjh19"},"content":" return dateTime;","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"Austintjh19"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\"Failed to parse the date-time string: \" + dateTimeStr);","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\"Please provide date time range \u0027dd-MM-yyyy HHmm\u0027 format.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"Austintjh19"},"content":" return null;","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"Austintjh19"},"content":" public LocalDateTime[] userInputDateTimeRangeFormatter(String fromDateTimeStr, String toTimeStr) {","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"Austintjh19"},"content":" DateTimeFormatter startDateTimeFormatter \u003d DateTimeFormatter.ofPattern(\"dd-MM-yyyy HHmm\");","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"Austintjh19"},"content":" DateTimeFormatter endDateTimeFormatter \u003d DateTimeFormatter.ofPattern(\"dd-MM-yyyy HHmm\");","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"Austintjh19"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"Austintjh19"},"content":" LocalDateTime startDateTime \u003d LocalDateTime.parse(fromDateTimeStr, startDateTimeFormatter);","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"Austintjh19"},"content":" LocalDateTime endDateTime \u003d LocalDateTime.parse(toTimeStr, endDateTimeFormatter);","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"Austintjh19"},"content":" return new LocalDateTime[]{startDateTime, endDateTime};","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"Austintjh19"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\"Failed to parse the date time range.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":59,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\"Please provide date time range in \u0027dd-MM-yyyy HHmm\u0027 format.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":60,"author":{"gitId":"Austintjh19"},"content":" return null;","lastModifiedDate":"2024-01-30"},{"lineNumber":61,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":62,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":63,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":64,"author":{"gitId":"Austintjh19"},"content":" public LocalDate storedDataDateFormatter(String dateStr) {","lastModifiedDate":"2024-01-30"},{"lineNumber":65,"author":{"gitId":"Austintjh19"},"content":" DateTimeFormatter dateTimeFormatter \u003d DateTimeFormatter.ofPattern(\"MMM d yyyy\");","lastModifiedDate":"2024-01-30"},{"lineNumber":66,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":67,"author":{"gitId":"Austintjh19"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":68,"author":{"gitId":"Austintjh19"},"content":" LocalDate date \u003d LocalDate.parse(dateStr, dateTimeFormatter);","lastModifiedDate":"2024-01-30"},{"lineNumber":69,"author":{"gitId":"Austintjh19"},"content":" return date;","lastModifiedDate":"2024-01-30"},{"lineNumber":70,"author":{"gitId":"Austintjh19"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":71,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\"Failed to parse the date-time string: \u0027\" + dateStr);","lastModifiedDate":"2024-01-30"},{"lineNumber":72,"author":{"gitId":"Austintjh19"},"content":" return null;","lastModifiedDate":"2024-01-30"},{"lineNumber":73,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":74,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":75,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":76,"author":{"gitId":"Austintjh19"},"content":" public LocalDateTime storedDataDateTimeFormatter(String dateTimeStr) {","lastModifiedDate":"2024-01-30"},{"lineNumber":77,"author":{"gitId":"Austintjh19"},"content":" DateTimeFormatter dateTimeFormatter \u003d DateTimeFormatter.ofPattern(\"MMM d yyyy HHmm\");","lastModifiedDate":"2024-01-30"},{"lineNumber":78,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":79,"author":{"gitId":"Austintjh19"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":80,"author":{"gitId":"Austintjh19"},"content":" LocalDateTime dateTime \u003d LocalDateTime.parse(dateTimeStr, dateTimeFormatter);","lastModifiedDate":"2024-01-30"},{"lineNumber":81,"author":{"gitId":"Austintjh19"},"content":" return dateTime;","lastModifiedDate":"2024-01-30"},{"lineNumber":82,"author":{"gitId":"Austintjh19"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":83,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\"Failed to parse the date-time string: \u0027\" + dateTimeStr);","lastModifiedDate":"2024-01-30"},{"lineNumber":84,"author":{"gitId":"Austintjh19"},"content":" return null;","lastModifiedDate":"2024-01-30"},{"lineNumber":85,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":86,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":87,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":88,"author":{"gitId":"Austintjh19"},"content":" public LocalDateTime[] storedDataDateTimeRangeFormatter(String fromDateTimeStr, String toTimeStr) {","lastModifiedDate":"2024-01-30"},{"lineNumber":89,"author":{"gitId":"Austintjh19"},"content":" DateTimeFormatter startDateTimeFormatter \u003d DateTimeFormatter.ofPattern(\"MMM d yyyy h:mm a\");","lastModifiedDate":"2024-01-30"},{"lineNumber":90,"author":{"gitId":"Austintjh19"},"content":" DateTimeFormatter endDateTimeFormatter \u003d DateTimeFormatter.ofPattern(\"MMM d yyyy h:mm a\");","lastModifiedDate":"2024-01-30"},{"lineNumber":91,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":92,"author":{"gitId":"Austintjh19"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":93,"author":{"gitId":"Austintjh19"},"content":" LocalDateTime startDateTime \u003d LocalDateTime.parse(fromDateTimeStr, startDateTimeFormatter);","lastModifiedDate":"2024-01-30"},{"lineNumber":94,"author":{"gitId":"Austintjh19"},"content":" LocalDateTime endDateTime \u003d LocalDateTime.parse(toTimeStr, endDateTimeFormatter);","lastModifiedDate":"2024-01-30"},{"lineNumber":95,"author":{"gitId":"Austintjh19"},"content":" return new LocalDateTime[]{startDateTime, endDateTime};","lastModifiedDate":"2024-01-30"},{"lineNumber":96,"author":{"gitId":"Austintjh19"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":97,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\"Failed to parse the date time range: \" + fromDateTimeStr + \" OR \" + toTimeStr);","lastModifiedDate":"2024-01-30"},{"lineNumber":98,"author":{"gitId":"Austintjh19"},"content":" return null;","lastModifiedDate":"2024-01-30"},{"lineNumber":99,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":100,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":101,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":102,"author":{"gitId":"Austintjh19"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"Austintjh19":102}},{"path":"src/main/java/Osiris/Interpreters/UserInputInterpreter.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Austintjh19"},"content":"package Osiris.Interpreters;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"Austintjh19"},"content":"import Osiris.Commands.*;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"Austintjh19"},"content":"import Osiris.Formatters.DateTimeFormatters;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"Austintjh19"},"content":"import Osiris.Validation.InputsValidator;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"Austintjh19"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"Austintjh19"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"Austintjh19"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"Austintjh19"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"Austintjh19"},"content":"public class UserInputInterpreter {","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"Austintjh19"},"content":" private static UserInputInterpreter instance;","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"Austintjh19"},"content":" private UserInputInterpreter() {}","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"Austintjh19"},"content":" public static UserInputInterpreter getInstance() {","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"Austintjh19"},"content":" if (instance \u003d\u003d null) {","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"Austintjh19"},"content":" instance \u003d new UserInputInterpreter();","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"Austintjh19"},"content":" return instance;","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"Austintjh19"},"content":" public Command interpretUserInput(String userInput) {","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"Austintjh19"},"content":" String[] inputtedWords \u003d userInput.split(\" \");","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"Austintjh19"},"content":" String taskName;","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"Austintjh19"},"content":" boolean isValid;","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"Austintjh19"},"content":" switch (inputtedWords[0]) {","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"Austintjh19"},"content":" case terminateChatCommand.COMMAND:","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"Austintjh19"},"content":" return new terminateChatCommand();","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"Austintjh19"},"content":" case printUserTasksCommand.COMMAND:","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"Austintjh19"},"content":" return new printUserTasksCommand();","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"Austintjh19"},"content":" case markTaskCompletedCommand.COMMAND:","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"Austintjh19"},"content":" isValid \u003d InputsValidator.getInstance().validateMarkTaskCompletedInput(userInput);","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"Austintjh19"},"content":" if (isValid) {","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"Austintjh19"},"content":" String taskIndexString \u003d inputtedWords[1];","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"Austintjh19"},"content":" int taskIndex \u003d Integer.parseInt(taskIndexString);","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"Austintjh19"},"content":" return new markTaskCompletedCommand(taskIndex);","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"Austintjh19"},"content":" break;","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"Austintjh19"},"content":" case markTaskIncompleteCommand.COMMAND:","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"Austintjh19"},"content":" isValid \u003d InputsValidator.getInstance().validateMarkTaskIncompleteInput(userInput);","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"Austintjh19"},"content":" if (isValid) {","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"Austintjh19"},"content":" String taskIndexString \u003d inputtedWords[1];","lastModifiedDate":"2024-01-29"},{"lineNumber":51,"author":{"gitId":"Austintjh19"},"content":" int taskIndex \u003d Integer.parseInt(taskIndexString);","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"Austintjh19"},"content":" return new markTaskIncompleteCommand(taskIndex);","lastModifiedDate":"2024-01-29"},{"lineNumber":53,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":54,"author":{"gitId":"Austintjh19"},"content":" break;","lastModifiedDate":"2024-01-29"},{"lineNumber":55,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"Austintjh19"},"content":" case removeTaskCommand.COMMAND:","lastModifiedDate":"2024-01-29"},{"lineNumber":57,"author":{"gitId":"Austintjh19"},"content":" isValid \u003d InputsValidator.getInstance().validateRemoveTaskInput(userInput);","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"Austintjh19"},"content":" if (isValid) {","lastModifiedDate":"2024-01-30"},{"lineNumber":59,"author":{"gitId":"Austintjh19"},"content":" String taskIndexString \u003d inputtedWords[1];","lastModifiedDate":"2024-01-29"},{"lineNumber":60,"author":{"gitId":"Austintjh19"},"content":" int taskIndex \u003d Integer.parseInt(taskIndexString);","lastModifiedDate":"2024-01-29"},{"lineNumber":61,"author":{"gitId":"Austintjh19"},"content":" return new removeTaskCommand(taskIndex);","lastModifiedDate":"2024-01-29"},{"lineNumber":62,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":63,"author":{"gitId":"Austintjh19"},"content":" break;","lastModifiedDate":"2024-01-29"},{"lineNumber":64,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":65,"author":{"gitId":"Austintjh19"},"content":" case addToDoTaskCommand.COMMAND:","lastModifiedDate":"2024-01-30"},{"lineNumber":66,"author":{"gitId":"Austintjh19"},"content":" isValid \u003d InputsValidator.getInstance().validateAddToDoTaskInput(userInput);","lastModifiedDate":"2024-01-30"},{"lineNumber":67,"author":{"gitId":"Austintjh19"},"content":" if (isValid) {","lastModifiedDate":"2024-01-30"},{"lineNumber":68,"author":{"gitId":"Austintjh19"},"content":" taskName \u003d userInput.substring(addToDoTaskCommand.COMMAND.length()).trim();","lastModifiedDate":"2024-01-30"},{"lineNumber":69,"author":{"gitId":"Austintjh19"},"content":" return new addToDoTaskCommand(taskName);","lastModifiedDate":"2024-01-29"},{"lineNumber":70,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":71,"author":{"gitId":"Austintjh19"},"content":" break;","lastModifiedDate":"2024-01-29"},{"lineNumber":72,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":73,"author":{"gitId":"Austintjh19"},"content":" case addDeadlineTaskCommand.COMMAND:","lastModifiedDate":"2024-01-29"},{"lineNumber":74,"author":{"gitId":"Austintjh19"},"content":" isValid \u003d InputsValidator.getInstance().validateAddDeadlineTaskInput(userInput);","lastModifiedDate":"2024-01-30"},{"lineNumber":75,"author":{"gitId":"Austintjh19"},"content":" if (isValid) {","lastModifiedDate":"2024-01-30"},{"lineNumber":76,"author":{"gitId":"Austintjh19"},"content":" int byIndex \u003d userInput.indexOf(\"/by\");","lastModifiedDate":"2024-01-29"},{"lineNumber":77,"author":{"gitId":"Austintjh19"},"content":" taskName \u003d userInput.substring(addDeadlineTaskCommand.COMMAND.length(), byIndex - 1).trim();","lastModifiedDate":"2024-01-30"},{"lineNumber":78,"author":{"gitId":"Austintjh19"},"content":" String deadlineStr \u003d userInput.substring(byIndex + \"/by\".length()).trim();","lastModifiedDate":"2024-01-30"},{"lineNumber":79,"author":{"gitId":"Austintjh19"},"content":" LocalDate deadline \u003d DateTimeFormatters.getInstance().userInputDateFormatter(deadlineStr);","lastModifiedDate":"2024-01-30"},{"lineNumber":80,"author":{"gitId":"Austintjh19"},"content":" if (deadline !\u003d null) {","lastModifiedDate":"2024-01-30"},{"lineNumber":81,"author":{"gitId":"Austintjh19"},"content":" return new addDeadlineTaskCommand(taskName, deadline);","lastModifiedDate":"2024-01-30"},{"lineNumber":82,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":83,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":84,"author":{"gitId":"Austintjh19"},"content":" break;","lastModifiedDate":"2024-01-29"},{"lineNumber":85,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":86,"author":{"gitId":"Austintjh19"},"content":" case addEventTaskCommand.COMMAND:","lastModifiedDate":"2024-01-29"},{"lineNumber":87,"author":{"gitId":"Austintjh19"},"content":" isValid \u003d InputsValidator.getInstance().validateAddEventTaskInput(userInput);","lastModifiedDate":"2024-01-30"},{"lineNumber":88,"author":{"gitId":"Austintjh19"},"content":" if (isValid) {","lastModifiedDate":"2024-01-30"},{"lineNumber":89,"author":{"gitId":"Austintjh19"},"content":" int fromIndex \u003d userInput.indexOf(\"/from\");","lastModifiedDate":"2024-01-29"},{"lineNumber":90,"author":{"gitId":"Austintjh19"},"content":" int toIndex \u003d userInput.indexOf(\"/to\");","lastModifiedDate":"2024-01-29"},{"lineNumber":91,"author":{"gitId":"Austintjh19"},"content":" taskName \u003d userInput.substring(addEventTaskCommand.COMMAND.length(), fromIndex - 1).trim();","lastModifiedDate":"2024-01-30"},{"lineNumber":92,"author":{"gitId":"Austintjh19"},"content":" String startDateTimeStr \u003d userInput.substring(fromIndex + \"/from\".length(), toIndex - 1).trim();","lastModifiedDate":"2024-01-30"},{"lineNumber":93,"author":{"gitId":"Austintjh19"},"content":" String endDateTimeStr \u003d userInput.substring(toIndex + \"/to\".length()).trim();","lastModifiedDate":"2024-01-30"},{"lineNumber":94,"author":{"gitId":"Austintjh19"},"content":" LocalDateTime[] dateTimeRange \u003d DateTimeFormatters.getInstance().userInputDateTimeRangeFormatter(startDateTimeStr, endDateTimeStr);","lastModifiedDate":"2024-01-30"},{"lineNumber":95,"author":{"gitId":"Austintjh19"},"content":" if (dateTimeRange !\u003d null) {","lastModifiedDate":"2024-01-30"},{"lineNumber":96,"author":{"gitId":"Austintjh19"},"content":" return new addEventTaskCommand(taskName, dateTimeRange[0], dateTimeRange[1]);","lastModifiedDate":"2024-01-30"},{"lineNumber":97,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":98,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":99,"author":{"gitId":"Austintjh19"},"content":" break;","lastModifiedDate":"2024-01-29"},{"lineNumber":100,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":101,"author":{"gitId":"Austintjh19"},"content":" default:","lastModifiedDate":"2024-01-29"},{"lineNumber":102,"author":{"gitId":"Austintjh19"},"content":" return new UnsupportedCommand();","lastModifiedDate":"2024-01-29"},{"lineNumber":103,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":104,"author":{"gitId":"Austintjh19"},"content":" return new NoCommand();","lastModifiedDate":"2024-01-30"},{"lineNumber":105,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":106,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":107,"author":{"gitId":"Austintjh19"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"Austintjh19":107}},{"path":"src/main/java/Osiris/Main.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Austintjh19"},"content":"package Osiris;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"Austintjh19"},"content":"public class Main {","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"Austintjh19"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"Austintjh19"},"content":" // Level 8 Branch","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"Austintjh19"},"content":" final Osiris chatBot \u003d new Osiris();","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"Austintjh19"},"content":" chatBot.startChat();","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"Austintjh19"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"Austintjh19":12}},{"path":"src/main/java/Osiris/Osiris.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Austintjh19"},"content":"package Osiris;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"Austintjh19"},"content":"import Osiris.Commands.Command;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"Austintjh19"},"content":"import Osiris.Interpreters.UserInputInterpreter;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"Austintjh19"},"content":"import Osiris.Task.Task;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"Austintjh19"},"content":"import Osiris.Task.TaskManager;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"Austintjh19"},"content":"import Osiris.UI.Ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"Austintjh19"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"Austintjh19"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"Austintjh19"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"Austintjh19"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"Austintjh19"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"Austintjh19"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"Austintjh19"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":17,"author":{"gitId":"Austintjh19"},"content":"public class Osiris {","lastModifiedDate":"2024-01-23"},{"lineNumber":18,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":19,"author":{"gitId":"Austintjh19"},"content":" private final TaskManager taskManager \u003d new TaskManager();","lastModifiedDate":"2024-01-23"},{"lineNumber":20,"author":{"gitId":"Austintjh19"},"content":" private final Ui userInterface \u003d new Ui();","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"Austintjh19"},"content":" public void startChat(){","lastModifiedDate":"2024-01-23"},{"lineNumber":23,"author":{"gitId":"Austintjh19"},"content":" Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-23"},{"lineNumber":24,"author":{"gitId":"Austintjh19"},"content":" this.taskManager.initialise();","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":26,"author":{"gitId":"Austintjh19"},"content":" this.userInterface.outputIntroductions();","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"Austintjh19"},"content":" boolean terminateChat \u003d false;","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":30,"author":{"gitId":"Austintjh19"},"content":" while (!terminateChat){","lastModifiedDate":"2024-01-23"},{"lineNumber":31,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":32,"author":{"gitId":"Austintjh19"},"content":" this.userInterface.messageOsirisPrompt();","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"Austintjh19"},"content":" String userInput \u003d scanner.nextLine();","lastModifiedDate":"2024-01-23"},{"lineNumber":34,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":35,"author":{"gitId":"Austintjh19"},"content":" Command userCommand \u003d UserInputInterpreter.getInstance().interpretUserInput(userInput);","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"Austintjh19"},"content":" userCommand.execute(this.taskManager, this.userInterface);","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"Austintjh19"},"content":" terminateChat \u003d userCommand.isTerminateChat();","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":39,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":40,"author":{"gitId":"Austintjh19"},"content":" this.userInterface.outputGoodbyes();","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":42,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":43,"author":{"gitId":"Austintjh19"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"Austintjh19":43}},{"path":"src/main/java/Osiris/Storage/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Austintjh19"},"content":"package Osiris.Storage;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Austintjh19"},"content":"import java.io.File;","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"Austintjh19"},"content":"public class Storage {","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"Austintjh19"},"content":" private String filepath;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"Austintjh19"},"content":" public Storage(String filepath) {","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"Austintjh19"},"content":" this.filepath \u003d filepath;","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"Austintjh19"},"content":" public String getFilepath() {","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"Austintjh19"},"content":" return filepath;","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"Austintjh19"},"content":" public boolean storageFileExist() {","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"Austintjh19"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"Austintjh19"},"content":" File file \u003d new File(this.filepath);","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"Austintjh19"},"content":" return file.exists();","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"Austintjh19"},"content":" } catch (SecurityException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"Austintjh19"},"content":" System.err.println(\"SecurityException occurred.\" );","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"Austintjh19"},"content":" return false;","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"Austintjh19"},"content":" } catch (NullPointerException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"Austintjh19"},"content":" System.err.println(\"NullPointerException occurred.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"Austintjh19"},"content":" return false;","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"Austintjh19"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"Austintjh19"},"content":" System.err.println(\"An error occurred with Function storageFileExist().\");","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"Austintjh19"},"content":" return false;","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"Austintjh19"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"Austintjh19":31}},{"path":"src/main/java/Osiris/Storage/data/task.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"Austintjh19"},"content":"T | N | Borrow Book","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"Austintjh19"},"content":"T | N | Read Book","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"Austintjh19"},"content":"D | Y | 1231 Tut Sheet | Dec 1 2023","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"Austintjh19"},"content":"E | N | MSL Meeting | Dec 22 2023 6:00 PM | Dec 22 2023 8:00 PM","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"Austintjh19"},"content":"E | N | Orientation Camp | Jan 15 2024 8:00 AM | Jan 18 2024 10:00 PM","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"Austintjh19"},"content":"D | Y | Return Book | Dec 22 2023","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"Austintjh19"},"content":"T | N | 100 sit-ups","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"Austintjh19"},"content":"T | N | 100 push-ups","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"Austintjh19"},"content":"E | N | Year | Jan 1 2023 12:00 AM | Dec 31 2023 11:59 PM","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"Austintjh19":9}},{"path":"src/main/java/Osiris/Storage/txtFileStorage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Austintjh19"},"content":"package Osiris.Storage;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Austintjh19"},"content":"import java.io.File;","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"Austintjh19"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"Austintjh19"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"Austintjh19"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"Austintjh19"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"Austintjh19"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"Austintjh19"},"content":"public class txtFileStorage extends Storage{","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"Austintjh19"},"content":" public txtFileStorage(String filepath) {","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"Austintjh19"},"content":" super(filepath);","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"Austintjh19"},"content":" public void initialiseTxtFileStorage() {","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"Austintjh19"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"Austintjh19"},"content":" File file \u003d new File(this.getFilepath());","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"Austintjh19"},"content":" if (super.storageFileExist()) {","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\"Task Storage File: \" + this.getFilepath());","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"Austintjh19"},"content":" } else {","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"Austintjh19"},"content":" if (file.createNewFile()) {","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\"Created Task Storage File: \" + this.getFilepath());","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"Austintjh19"},"content":" } else {","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\"Failed to create Task Storage file: \" + this.getFilepath());","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"Austintjh19"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\"Error: Unable to create new Txt file for Task storage.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"Austintjh19"},"content":" System.out.println(e.toString());","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":33,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":34,"author":{"gitId":"Austintjh19"},"content":" public ArrayList\u003cString\u003e readTxtFileStorage() {","lastModifiedDate":"2024-01-28"},{"lineNumber":35,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"Austintjh19"},"content":" ArrayList\u003cString\u003e readContents \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"Austintjh19"},"content":" Scanner scanner \u003d null;","lastModifiedDate":"2024-01-28"},{"lineNumber":38,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":39,"author":{"gitId":"Austintjh19"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":40,"author":{"gitId":"Austintjh19"},"content":" File file \u003d new File(this.getFilepath());","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":42,"author":{"gitId":"Austintjh19"},"content":" scanner \u003d new Scanner(file);","lastModifiedDate":"2024-01-28"},{"lineNumber":43,"author":{"gitId":"Austintjh19"},"content":" while (scanner.hasNext()) {","lastModifiedDate":"2024-01-28"},{"lineNumber":44,"author":{"gitId":"Austintjh19"},"content":" readContents.add(scanner.nextLine());","lastModifiedDate":"2024-01-28"},{"lineNumber":45,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":46,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":47,"author":{"gitId":"Austintjh19"},"content":" return readContents;","lastModifiedDate":"2024-01-28"},{"lineNumber":48,"author":{"gitId":"Austintjh19"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":49,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\"Error: Unable to locate filepath \" + this.getFilepath());","lastModifiedDate":"2024-01-29"},{"lineNumber":50,"author":{"gitId":"Austintjh19"},"content":" } finally {","lastModifiedDate":"2024-01-28"},{"lineNumber":51,"author":{"gitId":"Austintjh19"},"content":" if (scanner !\u003d null) {","lastModifiedDate":"2024-01-28"},{"lineNumber":52,"author":{"gitId":"Austintjh19"},"content":" scanner.close();","lastModifiedDate":"2024-01-28"},{"lineNumber":53,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":54,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":55,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":56,"author":{"gitId":"Austintjh19"},"content":" return readContents;","lastModifiedDate":"2024-01-28"},{"lineNumber":57,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":58,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":59,"author":{"gitId":"Austintjh19"},"content":" public void writeToTxtFileStorage(String content) {","lastModifiedDate":"2024-01-28"},{"lineNumber":60,"author":{"gitId":"Austintjh19"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":61,"author":{"gitId":"Austintjh19"},"content":" FileWriter fw \u003d new FileWriter(this.getFilepath());","lastModifiedDate":"2024-01-29"},{"lineNumber":62,"author":{"gitId":"Austintjh19"},"content":" fw.write(content);","lastModifiedDate":"2024-01-28"},{"lineNumber":63,"author":{"gitId":"Austintjh19"},"content":" fw.close();","lastModifiedDate":"2024-01-28"},{"lineNumber":64,"author":{"gitId":"Austintjh19"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":65,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\"Error: Unable to update Task Storage File.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":66,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":67,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":68,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":69,"author":{"gitId":"Austintjh19"},"content":" public void appendToTxtFileStorage(String content) {","lastModifiedDate":"2024-01-28"},{"lineNumber":70,"author":{"gitId":"Austintjh19"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":71,"author":{"gitId":"Austintjh19"},"content":" FileWriter fw \u003d new FileWriter(this.getFilepath(), true);","lastModifiedDate":"2024-01-29"},{"lineNumber":72,"author":{"gitId":"Austintjh19"},"content":" fw.write(content + \"\\n\");","lastModifiedDate":"2024-01-29"},{"lineNumber":73,"author":{"gitId":"Austintjh19"},"content":" fw.close();","lastModifiedDate":"2024-01-29"},{"lineNumber":74,"author":{"gitId":"Austintjh19"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":75,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\"Error: Unable to update Task Storage File. Trouble appending.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":76,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":77,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":78,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":79,"author":{"gitId":"Austintjh19"},"content":" public void clearTxtFileStorage() {","lastModifiedDate":"2024-01-29"},{"lineNumber":80,"author":{"gitId":"Austintjh19"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":81,"author":{"gitId":"Austintjh19"},"content":" FileWriter fw \u003d new FileWriter(getFilepath());","lastModifiedDate":"2024-01-29"},{"lineNumber":82,"author":{"gitId":"Austintjh19"},"content":" fw.close();","lastModifiedDate":"2024-01-28"},{"lineNumber":83,"author":{"gitId":"Austintjh19"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":84,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\"Error: Unable to update Task Storage File. Trouble clearing contents.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":85,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":86,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":87,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":88,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":89,"author":{"gitId":"Austintjh19"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"Austintjh19":89}},{"path":"src/main/java/Osiris/Task/DeadlineTask.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Austintjh19"},"content":"package Osiris.Task;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"Austintjh19"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"Austintjh19"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"Austintjh19"},"content":"public class DeadlineTask extends Task {","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"Austintjh19"},"content":" private LocalDate deadline;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"Austintjh19"},"content":" public DeadlineTask(String taskName, LocalDate deadline) {","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"Austintjh19"},"content":" super(taskName);","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"Austintjh19"},"content":" this.deadline \u003d deadline;","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"Austintjh19"},"content":" public DeadlineTask(String taskName, boolean isCompleted, LocalDate deadline) {","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"Austintjh19"},"content":" super(taskName, isCompleted);","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"Austintjh19"},"content":" this.deadline \u003d deadline;","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"Austintjh19"},"content":" public String getDeadlineStr() {","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"Austintjh19"},"content":" return this.deadline.format(DateTimeFormatter.ofPattern(\"MMM d yyyy\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"Austintjh19"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"Austintjh19"},"content":" public String getStringStorageRepresentation() {","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"Austintjh19"},"content":" return String.format(\"D | %s | %s\", super.getStringStorageRepresentation(), this.getDeadlineStr());","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"Austintjh19"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":30,"author":{"gitId":"Austintjh19"},"content":" public String toString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":31,"author":{"gitId":"Austintjh19"},"content":" return String.format(\"[D] %s (by: %s)\", super.toString(), this.getDeadlineStr());","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":33,"author":{"gitId":"Austintjh19"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"Austintjh19":33}},{"path":"src/main/java/Osiris/Task/EventTask.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Austintjh19"},"content":"package Osiris.Task;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"Austintjh19"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"Austintjh19"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"Austintjh19"},"content":"public class EventTask extends Task {","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"Austintjh19"},"content":" private LocalDateTime startDateTime;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"Austintjh19"},"content":" private LocalDateTime endDateTime;","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"Austintjh19"},"content":" public EventTask(String taskName, LocalDateTime startDateTime, LocalDateTime endDateTime) {","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"Austintjh19"},"content":" super(taskName);","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"Austintjh19"},"content":" this.startDateTime \u003d startDateTime;","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"Austintjh19"},"content":" this.endDateTime \u003d endDateTime;","lastModifiedDate":"2024-01-23"},{"lineNumber":17,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":18,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":19,"author":{"gitId":"Austintjh19"},"content":" public EventTask(String taskName, boolean isCompleted, LocalDateTime startDateTime, LocalDateTime endDateTime) {","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"Austintjh19"},"content":" super(taskName, isCompleted);","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"Austintjh19"},"content":" this.startDateTime \u003d startDateTime;","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"Austintjh19"},"content":" this.endDateTime \u003d endDateTime;","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"Austintjh19"},"content":" public String getStartDateTimeStr() {","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"Austintjh19"},"content":" return this.startDateTime.format(DateTimeFormatter.ofPattern(\"MMM d yyyy h:mm a\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"Austintjh19"},"content":" public String getEndDateTimeStr() {","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"Austintjh19"},"content":" return this.endDateTime.format(DateTimeFormatter.ofPattern(\"MMM d yyyy h:mm a\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"Austintjh19"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"Austintjh19"},"content":" public String getStringStorageRepresentation() {","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"Austintjh19"},"content":" return String.format(\"E | %s | %s | %s\", super.getStringStorageRepresentation(), this.getStartDateTimeStr(), this.getEndDateTimeStr());","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"Austintjh19"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":40,"author":{"gitId":"Austintjh19"},"content":" public String toString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":41,"author":{"gitId":"Austintjh19"},"content":" return String.format(\"[E] %s (from: %s to: %s)\", super.toString(), this.getStartDateTimeStr(), this.getEndDateTimeStr());","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":43,"author":{"gitId":"Austintjh19"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"Austintjh19":43}},{"path":"src/main/java/Osiris/Task/InvalidTaskException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Austintjh19"},"content":"package Osiris.Task;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"Austintjh19"},"content":"public class InvalidTaskException extends Exception{","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"Austintjh19"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"Austintjh19"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"Austintjh19"},"content":" return \"Invalid Task Name assigned.\";","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"Austintjh19"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"Austintjh19"},"content":" public String getMessage() {","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"Austintjh19"},"content":" return \"Invalid Task Name assigned.\";","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"Austintjh19"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"Austintjh19":16}},{"path":"src/main/java/Osiris/Task/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Austintjh19"},"content":"package Osiris.Task;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"Austintjh19"},"content":"public abstract class Task {","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"Austintjh19"},"content":" private String taskName;","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"Austintjh19"},"content":" private boolean isCompleted \u003d false;","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"Austintjh19"},"content":" public Task(String taskName){","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"Austintjh19"},"content":" this.taskName \u003d taskName;","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"Austintjh19"},"content":" public Task(String taskName, boolean isCompleted) {","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"Austintjh19"},"content":" this.taskName \u003d taskName;","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"Austintjh19"},"content":" this.isCompleted \u003d isCompleted;","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"Austintjh19"},"content":" public void markCompleted() {","lastModifiedDate":"2024-01-23"},{"lineNumber":19,"author":{"gitId":"Austintjh19"},"content":" this.isCompleted \u003d true;","lastModifiedDate":"2024-01-23"},{"lineNumber":20,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":21,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":22,"author":{"gitId":"Austintjh19"},"content":" public void markIncomplete() {","lastModifiedDate":"2024-01-23"},{"lineNumber":23,"author":{"gitId":"Austintjh19"},"content":" this.isCompleted \u003d false;","lastModifiedDate":"2024-01-23"},{"lineNumber":24,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":25,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":26,"author":{"gitId":"Austintjh19"},"content":" public String getStringStorageRepresentation() {","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"Austintjh19"},"content":" String completionStatus \u003d isCompleted ? \"Y\" : \"N\";","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"Austintjh19"},"content":" return String.format(\"%s | %s\", completionStatus, taskName);","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"Austintjh19"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":32,"author":{"gitId":"Austintjh19"},"content":" public String toString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":33,"author":{"gitId":"Austintjh19"},"content":" String completionStatus \u003d isCompleted ? \"[X]\" : \"[ ]\";","lastModifiedDate":"2024-01-23"},{"lineNumber":34,"author":{"gitId":"Austintjh19"},"content":" return String.format(\"%s %s\", completionStatus, this.taskName);","lastModifiedDate":"2024-01-23"},{"lineNumber":35,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":36,"author":{"gitId":"Austintjh19"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"Austintjh19":36}},{"path":"src/main/java/Osiris/Task/TaskManager.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Austintjh19"},"content":"package Osiris.Task;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"Austintjh19"},"content":"import Osiris.Formatters.DateTimeFormatters;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"Austintjh19"},"content":"import Osiris.Storage.txtFileStorage;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"Austintjh19"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"Austintjh19"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"Austintjh19"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"Austintjh19"},"content":"public class TaskManager {","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"Austintjh19"},"content":" private final String TASKSTORAGEFILEPATH \u003d \"src/main/java/Osiris/Storage/data/task.txt\";","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"Austintjh19"},"content":" private ArrayList\u003cTask\u003e userTasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"Austintjh19"},"content":" private txtFileStorage taskStorage \u003d new txtFileStorage(TASKSTORAGEFILEPATH);","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"Austintjh19"},"content":" public boolean addToDoTask(String taskName, boolean isCompleted) {","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"Austintjh19"},"content":" ToDoTask newTask \u003d new ToDoTask(taskName, isCompleted);","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"Austintjh19"},"content":" this.userTasks.add(newTask);","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"Austintjh19"},"content":" return true;","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":23,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"Austintjh19"},"content":" public boolean addDeadlineTask(String taskName, LocalDate deadline, boolean isCompleted) {","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"Austintjh19"},"content":" DeadlineTask newTask \u003d new DeadlineTask(taskName, isCompleted, deadline);","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"Austintjh19"},"content":" this.userTasks.add(newTask);","lastModifiedDate":"2024-01-24"},{"lineNumber":27,"author":{"gitId":"Austintjh19"},"content":" return true;","lastModifiedDate":"2024-01-24"},{"lineNumber":28,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":29,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":30,"author":{"gitId":"Austintjh19"},"content":" public boolean addEventTask(String taskName, LocalDateTime startDateTime, LocalDateTime endDateTime, boolean isCompleted) {","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"Austintjh19"},"content":" EventTask newTask \u003d new EventTask(taskName, isCompleted, startDateTime, endDateTime);","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"Austintjh19"},"content":" this.userTasks.add(newTask);","lastModifiedDate":"2024-01-23"},{"lineNumber":33,"author":{"gitId":"Austintjh19"},"content":" return true;","lastModifiedDate":"2024-01-24"},{"lineNumber":34,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":35,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":36,"author":{"gitId":"Austintjh19"},"content":" public Task getTask(int index){","lastModifiedDate":"2024-01-23"},{"lineNumber":37,"author":{"gitId":"Austintjh19"},"content":" return this.userTasks.get(index);","lastModifiedDate":"2024-01-23"},{"lineNumber":38,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":39,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":40,"author":{"gitId":"Austintjh19"},"content":" public ArrayList\u003cTask\u003e getUserTasks(){","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"Austintjh19"},"content":" return userTasks;","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"Austintjh19"},"content":" public Task removeTask(int index) {","lastModifiedDate":"2024-01-24"},{"lineNumber":45,"author":{"gitId":"Austintjh19"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":46,"author":{"gitId":"Austintjh19"},"content":" Task removedTask \u003d this.userTasks.get(index);","lastModifiedDate":"2024-01-24"},{"lineNumber":47,"author":{"gitId":"Austintjh19"},"content":" this.userTasks.remove(index);","lastModifiedDate":"2024-01-24"},{"lineNumber":48,"author":{"gitId":"Austintjh19"},"content":" return removedTask;","lastModifiedDate":"2024-01-24"},{"lineNumber":49,"author":{"gitId":"Austintjh19"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":50,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\"No task with index \" + (index + 1) + \". Enter \u0027list\u0027 to view tasks.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":51,"author":{"gitId":"Austintjh19"},"content":" return null;","lastModifiedDate":"2024-01-24"},{"lineNumber":52,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":53,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":54,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":55,"author":{"gitId":"Austintjh19"},"content":" public int getTotalTaskCount(){","lastModifiedDate":"2024-01-24"},{"lineNumber":56,"author":{"gitId":"Austintjh19"},"content":" return this.userTasks.size();","lastModifiedDate":"2024-01-24"},{"lineNumber":57,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":58,"author":{"gitId":"Austintjh19"},"content":" public boolean markTaskCompleted(int index) {","lastModifiedDate":"2024-01-24"},{"lineNumber":59,"author":{"gitId":"Austintjh19"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":60,"author":{"gitId":"Austintjh19"},"content":" this.userTasks.get(index).markCompleted();","lastModifiedDate":"2024-01-23"},{"lineNumber":61,"author":{"gitId":"Austintjh19"},"content":" return true;","lastModifiedDate":"2024-01-24"},{"lineNumber":62,"author":{"gitId":"Austintjh19"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":63,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\"No task with index \" + (index + 1) + \". Enter \u0027list\u0027 to view tasks.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":64,"author":{"gitId":"Austintjh19"},"content":" return false;","lastModifiedDate":"2024-01-24"},{"lineNumber":65,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":66,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":67,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":68,"author":{"gitId":"Austintjh19"},"content":" public boolean markTaskIncomplete(int index) {","lastModifiedDate":"2024-01-24"},{"lineNumber":69,"author":{"gitId":"Austintjh19"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":70,"author":{"gitId":"Austintjh19"},"content":" this.userTasks.get(index).markIncomplete();","lastModifiedDate":"2024-01-23"},{"lineNumber":71,"author":{"gitId":"Austintjh19"},"content":" return true;","lastModifiedDate":"2024-01-24"},{"lineNumber":72,"author":{"gitId":"Austintjh19"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":73,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\"No task with index \" + (index + 1) + \". Enter \u0027list\u0027 to view tasks.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":74,"author":{"gitId":"Austintjh19"},"content":" return false;","lastModifiedDate":"2024-01-24"},{"lineNumber":75,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":76,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":77,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":78,"author":{"gitId":"Austintjh19"},"content":" private void storeUserTaskToFileStorage() {","lastModifiedDate":"2024-01-29"},{"lineNumber":79,"author":{"gitId":"Austintjh19"},"content":" for (Task task : this.userTasks) {","lastModifiedDate":"2024-01-29"},{"lineNumber":80,"author":{"gitId":"Austintjh19"},"content":" this.taskStorage.appendToTxtFileStorage(task.getStringStorageRepresentation());","lastModifiedDate":"2024-01-29"},{"lineNumber":81,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":82,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":83,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":84,"author":{"gitId":"Austintjh19"},"content":" private void loadUserTaskFromFileStorage(){","lastModifiedDate":"2024-01-29"},{"lineNumber":85,"author":{"gitId":"Austintjh19"},"content":" ArrayList\u003cString\u003e readContents \u003d this.taskStorage.readTxtFileStorage();","lastModifiedDate":"2024-01-29"},{"lineNumber":86,"author":{"gitId":"Austintjh19"},"content":" for (String readContentString : readContents) {","lastModifiedDate":"2024-01-29"},{"lineNumber":87,"author":{"gitId":"Austintjh19"},"content":" String[] readContentWord \u003d readContentString.split(\"\\\\|\");","lastModifiedDate":"2024-01-29"},{"lineNumber":88,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":89,"author":{"gitId":"Austintjh19"},"content":" if (readContentWord[0].trim().equals(\"T\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":90,"author":{"gitId":"Austintjh19"},"content":" this.addToDoTask(readContentWord[2].trim(), readContentWord[1].trim().equals(\"Y\"));","lastModifiedDate":"2024-01-29"},{"lineNumber":91,"author":{"gitId":"Austintjh19"},"content":" } else if (readContentWord[0].trim().equals(\"D\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":92,"author":{"gitId":"Austintjh19"},"content":" LocalDate deadline \u003d DateTimeFormatters.getInstance().storedDataDateFormatter(readContentWord[3].trim());","lastModifiedDate":"2024-01-30"},{"lineNumber":93,"author":{"gitId":"Austintjh19"},"content":" this.addDeadlineTask(readContentWord[2].trim(), deadline, readContentWord[1].trim().equals(\"Y\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":94,"author":{"gitId":"Austintjh19"},"content":" } else if (readContentWord[0].trim().equals(\"E\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":95,"author":{"gitId":"Austintjh19"},"content":" LocalDateTime[] dateTimeRange \u003d DateTimeFormatters.getInstance().storedDataDateTimeRangeFormatter(readContentWord[3].trim(), readContentWord[4].trim());","lastModifiedDate":"2024-01-30"},{"lineNumber":96,"author":{"gitId":"Austintjh19"},"content":" this.addEventTask(readContentWord[2].trim(), dateTimeRange[0], dateTimeRange[1], readContentWord[1].trim().equals(\"Y\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":97,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":98,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":99,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":100,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":101,"author":{"gitId":"Austintjh19"},"content":" public void initialise(){","lastModifiedDate":"2024-01-29"},{"lineNumber":102,"author":{"gitId":"Austintjh19"},"content":" this.taskStorage.initialiseTxtFileStorage();","lastModifiedDate":"2024-01-30"},{"lineNumber":103,"author":{"gitId":"Austintjh19"},"content":" this.loadUserTaskFromFileStorage();","lastModifiedDate":"2024-01-29"},{"lineNumber":104,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":105,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":106,"author":{"gitId":"Austintjh19"},"content":" public void termintate(){","lastModifiedDate":"2024-01-29"},{"lineNumber":107,"author":{"gitId":"Austintjh19"},"content":" this.taskStorage.clearTxtFileStorage();","lastModifiedDate":"2024-01-29"},{"lineNumber":108,"author":{"gitId":"Austintjh19"},"content":" this.storeUserTaskToFileStorage();","lastModifiedDate":"2024-01-29"},{"lineNumber":109,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":110,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":111,"author":{"gitId":"Austintjh19"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"Austintjh19":111}},{"path":"src/main/java/Osiris/Task/ToDoTask.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Austintjh19"},"content":"package Osiris.Task;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"Austintjh19"},"content":"import Osiris.Task.Task;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"Austintjh19"},"content":"public class ToDoTask extends Task {","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"Austintjh19"},"content":" public ToDoTask(String taskName) {","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"Austintjh19"},"content":" super(taskName);","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"Austintjh19"},"content":" public ToDoTask(String taskName, boolean isCompleted) {","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"Austintjh19"},"content":" super(taskName, isCompleted);","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"Austintjh19"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"Austintjh19"},"content":" public String getStringStorageRepresentation() {","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"Austintjh19"},"content":" return String.format(\"T | %s\", super.getStringStorageRepresentation());","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"Austintjh19"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":20,"author":{"gitId":"Austintjh19"},"content":" public String toString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":21,"author":{"gitId":"Austintjh19"},"content":" return String.format(\"[T] %s\", super.toString());","lastModifiedDate":"2024-01-23"},{"lineNumber":22,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":23,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":24,"author":{"gitId":"Austintjh19"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"Austintjh19":24}},{"path":"src/main/java/Osiris/UI/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Austintjh19"},"content":"package Osiris.UI;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"Austintjh19"},"content":"import Osiris.Task.Task;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"Austintjh19"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"Austintjh19"},"content":"public class Ui {","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"Austintjh19"},"content":" public void outputIntroductions() {","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"Austintjh19"},"content":" this.printSeparator();","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"Austintjh19"},"content":" for (String line : UiOutputs.NAMEASCIIArt) {","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"Austintjh19"},"content":" System.out.println(line);","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"Austintjh19"},"content":" this.printSeparator();","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"Austintjh19"},"content":" System.out.println(UiOutputs.INTRODUCTIONS);","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"Austintjh19"},"content":" this.printSeparator();","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"Austintjh19"},"content":" public void messageOsirisPrompt() {","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"Austintjh19"},"content":" System.out.print(UiOutputs.MESSAGEOSIRISPROMPT);","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"Austintjh19"},"content":" public void unsupportedCommandsOutput() {","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"Austintjh19"},"content":" System.out.println(UiOutputs.UNSUPPORTEDCOMMANDSOUTPUT);","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"Austintjh19"},"content":" public void outputGoodbyes() {","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"Austintjh19"},"content":" this.printSeparator();","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"Austintjh19"},"content":" System.out.println(UiOutputs.GOODBYES);","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"Austintjh19"},"content":" this.printSeparator();","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"Austintjh19"},"content":" public void addToDoTaskSuccessNotification(String taskDetails, int taskCount) {","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"Austintjh19"},"content":" this.printSeparator();","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\" Got it. I\u0027ve added this task:\");","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\" \" + taskDetails);","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"Austintjh19"},"content":" System.out.printf(\" Now you have %d tasks in the list.%n\", taskCount);","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"Austintjh19"},"content":" this.printSeparator();","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"Austintjh19"},"content":" public void addDeadlineTaskSuccessNotification(String taskDetails, int taskCount) {","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"Austintjh19"},"content":" this.printSeparator();","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\" Got it. I\u0027ve added this task:\");","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\" \" + taskDetails);","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"Austintjh19"},"content":" System.out.printf(\" Now you have %d tasks in the list.%n\", taskCount);","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"Austintjh19"},"content":" this.printSeparator();","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"Austintjh19"},"content":" public void addEventTaskSuccessNotification(String taskDetails, int taskCount) {","lastModifiedDate":"2024-01-29"},{"lineNumber":50,"author":{"gitId":"Austintjh19"},"content":" this.printSeparator();","lastModifiedDate":"2024-01-29"},{"lineNumber":51,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\" Got it. I\u0027ve added this task:\");","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\" \" + taskDetails);","lastModifiedDate":"2024-01-29"},{"lineNumber":53,"author":{"gitId":"Austintjh19"},"content":" System.out.printf(\" Now you have %d tasks in the list.%n\", taskCount);","lastModifiedDate":"2024-01-29"},{"lineNumber":54,"author":{"gitId":"Austintjh19"},"content":" this.printSeparator();","lastModifiedDate":"2024-01-29"},{"lineNumber":55,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":56,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":57,"author":{"gitId":"Austintjh19"},"content":" public void markTaskCompletedSuccessNotification(String taskDetails){","lastModifiedDate":"2024-01-29"},{"lineNumber":58,"author":{"gitId":"Austintjh19"},"content":" this.printSeparator();","lastModifiedDate":"2024-01-29"},{"lineNumber":59,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\" Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2024-01-29"},{"lineNumber":60,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\" \" + taskDetails);","lastModifiedDate":"2024-01-29"},{"lineNumber":61,"author":{"gitId":"Austintjh19"},"content":" this.printSeparator();","lastModifiedDate":"2024-01-29"},{"lineNumber":62,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":63,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":64,"author":{"gitId":"Austintjh19"},"content":" public void markTaskIncompleteSuccessNotification(String taskDetails){","lastModifiedDate":"2024-01-29"},{"lineNumber":65,"author":{"gitId":"Austintjh19"},"content":" this.printSeparator();","lastModifiedDate":"2024-01-29"},{"lineNumber":66,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\" OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2024-01-29"},{"lineNumber":67,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\" \" + taskDetails);","lastModifiedDate":"2024-01-29"},{"lineNumber":68,"author":{"gitId":"Austintjh19"},"content":" this.printSeparator();","lastModifiedDate":"2024-01-29"},{"lineNumber":69,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":70,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":71,"author":{"gitId":"Austintjh19"},"content":" public void removeTaskSuccessNotification(String taskDetails, int taskCount) {","lastModifiedDate":"2024-01-29"},{"lineNumber":72,"author":{"gitId":"Austintjh19"},"content":" this.printSeparator();","lastModifiedDate":"2024-01-29"},{"lineNumber":73,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\" Noted. I\u0027ve removed this task:\");","lastModifiedDate":"2024-01-29"},{"lineNumber":74,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\" \" + taskDetails);","lastModifiedDate":"2024-01-29"},{"lineNumber":75,"author":{"gitId":"Austintjh19"},"content":" System.out.printf(\" Now you have %d tasks in the list.%n\", taskCount);","lastModifiedDate":"2024-01-29"},{"lineNumber":76,"author":{"gitId":"Austintjh19"},"content":" this.printSeparator();","lastModifiedDate":"2024-01-29"},{"lineNumber":77,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":78,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":79,"author":{"gitId":"Austintjh19"},"content":" public void printUserTasks(ArrayList\u003cString\u003e taskDetailsList){","lastModifiedDate":"2024-01-29"},{"lineNumber":80,"author":{"gitId":"Austintjh19"},"content":" this.printSeparator();","lastModifiedDate":"2024-01-29"},{"lineNumber":81,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\" Here are the tasks in your list:\");","lastModifiedDate":"2024-01-29"},{"lineNumber":82,"author":{"gitId":"Austintjh19"},"content":" for (int i \u003d 0; i \u003c taskDetailsList.size(); i++) {","lastModifiedDate":"2024-01-29"},{"lineNumber":83,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\" \" + (i + 1) + \". \" + taskDetailsList.get(i));","lastModifiedDate":"2024-01-29"},{"lineNumber":84,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":85,"author":{"gitId":"Austintjh19"},"content":" this.printSeparator();","lastModifiedDate":"2024-01-29"},{"lineNumber":86,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":87,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":88,"author":{"gitId":"Austintjh19"},"content":" private void printSeparator() {","lastModifiedDate":"2024-01-29"},{"lineNumber":89,"author":{"gitId":"Austintjh19"},"content":" System.out.println(UiOutputs.SEPERATOR);","lastModifiedDate":"2024-01-29"},{"lineNumber":90,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":91,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":92,"author":{"gitId":"Austintjh19"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"Austintjh19":92}},{"path":"src/main/java/Osiris/UI/UiOutputs.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Austintjh19"},"content":"package Osiris.UI;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"Austintjh19"},"content":"import java.sql.Statement;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"Austintjh19"},"content":"public class UiOutputs {","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"Austintjh19"},"content":" public static final String NAME \u003d \"Osiris\";","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"Austintjh19"},"content":" public static final String SEPERATOR \u003d \"----------------------------------------\";","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"Austintjh19"},"content":" public static final String[] NAMEASCIIArt \u003d {","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"Austintjh19"},"content":" \" ,o888888o. d888888o. 8 8888 8 888888888o. 8 8888 d888888o. \",","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"Austintjh19"},"content":" \" . 8888 `88. .`8888:\u0027 `88. 8 8888 8 8888 `88. 8 8888 .`8888:\u0027 `88. \",","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"Austintjh19"},"content":" \",8 8888 `8b 8.`8888. Y8 8 8888 8 8888 `88 8 8888 8.`8888. Y8 \",","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"Austintjh19"},"content":" \"88 8888 `8b `8.`8888. 8 8888 8 8888 ,88 8 8888 `8.`8888. \",","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"Austintjh19"},"content":" \"88 8888 88 `8.`8888. 8 8888 8 8888. ,88\u0027 8 8888 `8.`8888. \",","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"Austintjh19"},"content":" \"88 8888 88 `8.`8888. 8 8888 8 888888888P\u0027 8 8888 `8.`8888. \",","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"Austintjh19"},"content":" \"88 8888 ,8P `8.`8888. 8 8888 8 8888`8b 8 8888 `8.`8888. \",","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"Austintjh19"},"content":" \"`8 8888 ,8P 8b `8.`8888. 8 8888 8 8888 `8b. 8 8888 8b `8.`8888. \",","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"Austintjh19"},"content":" \" ` 8888 ,88\u0027 `8b. ;8.`8888 8 8888 8 8888 `8b. 8 8888 `8b. ;8.`8888 \",","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"Austintjh19"},"content":" \" `8888888P\u0027 `Y8888P ,88P\u0027 8 8888 8 8888 `88. 8 8888 `Y8888P ,88P\u0027 \"","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"Austintjh19"},"content":" };","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"Austintjh19"},"content":" public static final String INTRODUCTIONS \u003d String.format(\"Hello! I\u0027m %s.\\nWhat can I do for you?\", UiOutputs.NAME);","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"Austintjh19"},"content":" public static final String MESSAGEOSIRISPROMPT \u003d \"Message Osiris ... \";","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"Austintjh19"},"content":" public static final String GOODBYES \u003d \"Bye. Hope to see you again soon!\";","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"Austintjh19"},"content":" public static final String UNSUPPORTEDCOMMANDSOUTPUT \u003d \"Sorry, but I am unable to comprehend the instruction at my current development stage. Please enter something else.\";","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"Austintjh19"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"Austintjh19":31}},{"path":"src/main/java/Osiris/Validation/InputsValidator.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Austintjh19"},"content":"package Osiris.Validation;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"Austintjh19"},"content":"import Osiris.Commands.addDeadlineTaskCommand;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"Austintjh19"},"content":"import Osiris.Commands.addEventTaskCommand;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"Austintjh19"},"content":"import Osiris.Commands.addToDoTaskCommand;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"Austintjh19"},"content":"import Osiris.Formatters.DateTimeFormatters;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"Austintjh19"},"content":"public class InputsValidator {","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"Austintjh19"},"content":" private static InputsValidator instance;","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"Austintjh19"},"content":" private InputsValidator() {}","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"Austintjh19"},"content":" public static InputsValidator getInstance() {","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"Austintjh19"},"content":" if (instance \u003d\u003d null) {","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"Austintjh19"},"content":" instance \u003d new InputsValidator();","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"Austintjh19"},"content":" return instance;","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"Austintjh19"},"content":" public boolean validateMarkTaskCompletedInput(String userInput) {","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"Austintjh19"},"content":" String[] inputtedWords \u003d userInput.split(\" \");","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"Austintjh19"},"content":" if (inputtedWords.length \u003d\u003d 2) {","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"Austintjh19"},"content":" String taskIndexString \u003d inputtedWords[1];","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"Austintjh19"},"content":" if (taskIndexString.matches(\"\\\\d+\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"Austintjh19"},"content":" return true;","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"Austintjh19"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\"Invalid task index: \" + taskIndexString + \". Please enter a valid integer.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"Austintjh19"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\"Invalid task index. Please Reenter\");","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"Austintjh19"},"content":" return false;","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"Austintjh19"},"content":" public boolean validateMarkTaskIncompleteInput(String userInput) {","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"Austintjh19"},"content":" String[] inputtedWords \u003d userInput.split(\" \");","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"Austintjh19"},"content":" if (inputtedWords.length \u003d\u003d 2) {","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"Austintjh19"},"content":" String taskIndexString \u003d inputtedWords[1];","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"Austintjh19"},"content":" if (taskIndexString.matches(\"\\\\d+\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"Austintjh19"},"content":" return true;","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"Austintjh19"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\"Invalid task index: \" + taskIndexString + \". Please enter a valid integer.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"Austintjh19"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\"Invalid task index. Please Reenter\");","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"Austintjh19"},"content":" return false;","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"Austintjh19"},"content":" public boolean validateRemoveTaskInput(String userInput) {","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"Austintjh19"},"content":" String[] inputtedWords \u003d userInput.split(\" \");","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"Austintjh19"},"content":" if (inputtedWords.length \u003d\u003d 2) {","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"Austintjh19"},"content":" String taskIndexString \u003d inputtedWords[1];","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"Austintjh19"},"content":" if (taskIndexString.matches(\"\\\\d+\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"Austintjh19"},"content":" return true;","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"Austintjh19"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\"Invalid task index: \" + taskIndexString + \". Please enter a valid integer.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":59,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":60,"author":{"gitId":"Austintjh19"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":61,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\"Invalid task index. Please Reenter\");","lastModifiedDate":"2024-01-30"},{"lineNumber":62,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":63,"author":{"gitId":"Austintjh19"},"content":" return false;","lastModifiedDate":"2024-01-30"},{"lineNumber":64,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":65,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":66,"author":{"gitId":"Austintjh19"},"content":" public boolean validateAddToDoTaskInput(String userInput){","lastModifiedDate":"2024-01-30"},{"lineNumber":67,"author":{"gitId":"Austintjh19"},"content":" String taskName \u003d userInput.substring(addToDoTaskCommand.COMMAND.length()).trim();","lastModifiedDate":"2024-01-30"},{"lineNumber":68,"author":{"gitId":"Austintjh19"},"content":" if (!taskName.isEmpty()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":69,"author":{"gitId":"Austintjh19"},"content":" return true;","lastModifiedDate":"2024-01-30"},{"lineNumber":70,"author":{"gitId":"Austintjh19"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":71,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\"Task name not provided. Please Reenter.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":72,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":73,"author":{"gitId":"Austintjh19"},"content":" return false;","lastModifiedDate":"2024-01-30"},{"lineNumber":74,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":75,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":76,"author":{"gitId":"Austintjh19"},"content":" public boolean validateAddDeadlineTaskInput(String userInput){","lastModifiedDate":"2024-01-30"},{"lineNumber":77,"author":{"gitId":"Austintjh19"},"content":" int byIndex \u003d userInput.indexOf(\"/by\");","lastModifiedDate":"2024-01-30"},{"lineNumber":78,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":79,"author":{"gitId":"Austintjh19"},"content":" if (byIndex !\u003d -1) {","lastModifiedDate":"2024-01-30"},{"lineNumber":80,"author":{"gitId":"Austintjh19"},"content":" String taskName \u003d userInput.substring(addDeadlineTaskCommand.COMMAND.length(), byIndex - 1).trim();","lastModifiedDate":"2024-01-30"},{"lineNumber":81,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":82,"author":{"gitId":"Austintjh19"},"content":" if (!taskName.isEmpty()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":83,"author":{"gitId":"Austintjh19"},"content":" String deadline \u003d userInput.substring(byIndex + \"/by\".length()).trim();","lastModifiedDate":"2024-01-30"},{"lineNumber":84,"author":{"gitId":"Austintjh19"},"content":" String[] deadlineParts \u003d deadline.split(\"-\");","lastModifiedDate":"2024-01-30"},{"lineNumber":85,"author":{"gitId":"Austintjh19"},"content":" if (deadlineParts.length \u003d\u003d 3) {","lastModifiedDate":"2024-01-30"},{"lineNumber":86,"author":{"gitId":"Austintjh19"},"content":" String dayStr \u003d deadlineParts[0];","lastModifiedDate":"2024-01-30"},{"lineNumber":87,"author":{"gitId":"Austintjh19"},"content":" String monthStr \u003d deadlineParts[1];","lastModifiedDate":"2024-01-30"},{"lineNumber":88,"author":{"gitId":"Austintjh19"},"content":" String yearStr \u003d deadlineParts[2];","lastModifiedDate":"2024-01-30"},{"lineNumber":89,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":90,"author":{"gitId":"Austintjh19"},"content":" if (isValidDay(dayStr) \u0026\u0026 isValidMonth(monthStr) \u0026\u0026 isValidYear(yearStr)) {","lastModifiedDate":"2024-01-30"},{"lineNumber":91,"author":{"gitId":"Austintjh19"},"content":" return true;","lastModifiedDate":"2024-01-30"},{"lineNumber":92,"author":{"gitId":"Austintjh19"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":93,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\"Invalid day, month, or year in deadline. Please use dd-MM-yyyy. \");","lastModifiedDate":"2024-01-30"},{"lineNumber":94,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":95,"author":{"gitId":"Austintjh19"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":96,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\"Invalid deadline format. Please use dd-MM-yyyy.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":97,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":98,"author":{"gitId":"Austintjh19"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":99,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\"Task name not provided. Please Reenter.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":100,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":101,"author":{"gitId":"Austintjh19"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":102,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\"Invalid input format. Please Reenter. Ensure \u0027/by\u0027 is specified for a Deadline Task. E.g. deadline Do Homework /by dd-MM-yyyy .\");","lastModifiedDate":"2024-01-30"},{"lineNumber":103,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":104,"author":{"gitId":"Austintjh19"},"content":" return false;","lastModifiedDate":"2024-01-30"},{"lineNumber":105,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":106,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":107,"author":{"gitId":"Austintjh19"},"content":" public boolean validateAddEventTaskInput(String userInput) {","lastModifiedDate":"2024-01-30"},{"lineNumber":108,"author":{"gitId":"Austintjh19"},"content":" int fromIndex \u003d userInput.indexOf(\"/from\");","lastModifiedDate":"2024-01-30"},{"lineNumber":109,"author":{"gitId":"Austintjh19"},"content":" int toIndex \u003d userInput.indexOf(\"/to\");","lastModifiedDate":"2024-01-30"},{"lineNumber":110,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":111,"author":{"gitId":"Austintjh19"},"content":" if (fromIndex !\u003d -1 \u0026\u0026 toIndex !\u003d -1 \u0026\u0026 fromIndex \u003c toIndex) {","lastModifiedDate":"2024-01-30"},{"lineNumber":112,"author":{"gitId":"Austintjh19"},"content":" String taskName \u003d userInput.substring(addEventTaskCommand.COMMAND.length(), fromIndex - 1).trim();","lastModifiedDate":"2024-01-30"},{"lineNumber":113,"author":{"gitId":"Austintjh19"},"content":" if (!taskName.isEmpty()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":114,"author":{"gitId":"Austintjh19"},"content":" String startDateTime \u003d userInput.substring(fromIndex + \"/from\".length(), toIndex - 1).trim();","lastModifiedDate":"2024-01-30"},{"lineNumber":115,"author":{"gitId":"Austintjh19"},"content":" String endDateTime \u003d userInput.substring(toIndex + \"/to\".length()).trim();","lastModifiedDate":"2024-01-30"},{"lineNumber":116,"author":{"gitId":"Austintjh19"},"content":" if (isValidDateTime(startDateTime) \u0026\u0026 isValidDateTime(endDateTime)) {","lastModifiedDate":"2024-01-30"},{"lineNumber":117,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":118,"author":{"gitId":"Austintjh19"},"content":" if (DateTimeFormatters.getInstance().userInputDateTimeFormatter(startDateTime).","lastModifiedDate":"2024-01-30"},{"lineNumber":119,"author":{"gitId":"Austintjh19"},"content":" isBefore((DateTimeFormatters.getInstance().userInputDateTimeFormatter(endDateTime)))) {","lastModifiedDate":"2024-01-30"},{"lineNumber":120,"author":{"gitId":"Austintjh19"},"content":" return true;","lastModifiedDate":"2024-01-30"},{"lineNumber":121,"author":{"gitId":"Austintjh19"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":122,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\"Invalid date-time order. Start date/time should be before end date/time.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":123,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":124,"author":{"gitId":"Austintjh19"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":125,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\"Invalid date-time format. Please use dd-MM-yyyy HHmm.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":126,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":127,"author":{"gitId":"Austintjh19"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":128,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\"Task name not provided. Please Reenter.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":129,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":130,"author":{"gitId":"Austintjh19"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":131,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\"Invalid input format. Please Reenter. Ensure \u0027/from\u0027 \u0026 \u0027/to\u0027 is specified for a Event Task. E.g. event School Meeting /from dd-MM-yyyy HHmm /to dd-MM-yyyy HHmm. Please Reenter.\" );","lastModifiedDate":"2024-01-30"},{"lineNumber":132,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":133,"author":{"gitId":"Austintjh19"},"content":" return false;","lastModifiedDate":"2024-01-30"},{"lineNumber":134,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":135,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":136,"author":{"gitId":"Austintjh19"},"content":" private boolean isValidDay(String dayStr) {","lastModifiedDate":"2024-01-30"},{"lineNumber":137,"author":{"gitId":"Austintjh19"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":138,"author":{"gitId":"Austintjh19"},"content":" int day \u003d Integer.parseInt(dayStr);","lastModifiedDate":"2024-01-30"},{"lineNumber":139,"author":{"gitId":"Austintjh19"},"content":" return day \u003e\u003d 1 \u0026\u0026 day \u003c\u003d 31 \u0026\u0026 dayStr.length() \u003d\u003d 2;","lastModifiedDate":"2024-01-30"},{"lineNumber":140,"author":{"gitId":"Austintjh19"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":141,"author":{"gitId":"Austintjh19"},"content":" return false;","lastModifiedDate":"2024-01-30"},{"lineNumber":142,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":143,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":144,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":145,"author":{"gitId":"Austintjh19"},"content":" private boolean isValidMonth(String monthStr) {","lastModifiedDate":"2024-01-30"},{"lineNumber":146,"author":{"gitId":"Austintjh19"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":147,"author":{"gitId":"Austintjh19"},"content":" int month \u003d Integer.parseInt(monthStr);","lastModifiedDate":"2024-01-30"},{"lineNumber":148,"author":{"gitId":"Austintjh19"},"content":" return month \u003e\u003d 1 \u0026\u0026 month \u003c\u003d 12 \u0026\u0026 monthStr.length() \u003d\u003d 2;","lastModifiedDate":"2024-01-30"},{"lineNumber":149,"author":{"gitId":"Austintjh19"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":150,"author":{"gitId":"Austintjh19"},"content":" return false;","lastModifiedDate":"2024-01-30"},{"lineNumber":151,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":152,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":153,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":154,"author":{"gitId":"Austintjh19"},"content":" private boolean isValidYear(String yearStr) {","lastModifiedDate":"2024-01-30"},{"lineNumber":155,"author":{"gitId":"Austintjh19"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":156,"author":{"gitId":"Austintjh19"},"content":" int year \u003d Integer.parseInt(yearStr);","lastModifiedDate":"2024-01-30"},{"lineNumber":157,"author":{"gitId":"Austintjh19"},"content":" return year \u003e 0 \u0026\u0026 yearStr.length() \u003d\u003d 4;","lastModifiedDate":"2024-01-30"},{"lineNumber":158,"author":{"gitId":"Austintjh19"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":159,"author":{"gitId":"Austintjh19"},"content":" return false;","lastModifiedDate":"2024-01-30"},{"lineNumber":160,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":161,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":162,"author":{"gitId":"Austintjh19"},"content":" private boolean isValidDateTime(String dateTime) {","lastModifiedDate":"2024-01-30"},{"lineNumber":163,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":164,"author":{"gitId":"Austintjh19"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":165,"author":{"gitId":"Austintjh19"},"content":" String[] dateTimeParts \u003d dateTime.split(\" \");","lastModifiedDate":"2024-01-30"},{"lineNumber":166,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":167,"author":{"gitId":"Austintjh19"},"content":" if (dateTimeParts.length !\u003d 2) {","lastModifiedDate":"2024-01-30"},{"lineNumber":168,"author":{"gitId":"Austintjh19"},"content":" return false;","lastModifiedDate":"2024-01-30"},{"lineNumber":169,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":170,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":171,"author":{"gitId":"Austintjh19"},"content":" String[] dateParts \u003d dateTimeParts[0].split(\"-\");","lastModifiedDate":"2024-01-30"},{"lineNumber":172,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":173,"author":{"gitId":"Austintjh19"},"content":" if (dateParts.length !\u003d 3) {","lastModifiedDate":"2024-01-30"},{"lineNumber":174,"author":{"gitId":"Austintjh19"},"content":" return false;","lastModifiedDate":"2024-01-30"},{"lineNumber":175,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":176,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":177,"author":{"gitId":"Austintjh19"},"content":" int hour \u003d Integer.parseInt(dateTimeParts[1].substring(0, 2));","lastModifiedDate":"2024-01-30"},{"lineNumber":178,"author":{"gitId":"Austintjh19"},"content":" int minute \u003d Integer.parseInt(dateTimeParts[1].substring(2));","lastModifiedDate":"2024-01-30"},{"lineNumber":179,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":180,"author":{"gitId":"Austintjh19"},"content":" return isValidDay(dateParts[0]) \u0026\u0026 isValidMonth(dateParts[1]) \u0026\u0026 isValidYear(dateParts[2]) \u0026\u0026","lastModifiedDate":"2024-01-30"},{"lineNumber":181,"author":{"gitId":"Austintjh19"},"content":" hour \u003e\u003d 0 \u0026\u0026 hour \u003c\u003d 23 \u0026\u0026 minute \u003e\u003d 0 \u0026\u0026 minute \u003c\u003d 59 \u0026\u0026 dateTimeParts[1].length() \u003d\u003d 4;","lastModifiedDate":"2024-01-30"},{"lineNumber":182,"author":{"gitId":"Austintjh19"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":183,"author":{"gitId":"Austintjh19"},"content":" return false;","lastModifiedDate":"2024-01-30"},{"lineNumber":184,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":185,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":186,"author":{"gitId":"Austintjh19"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"Austintjh19":186}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"Austintjh19"},"content":"todo read book","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"Austintjh19"},"content":"todo borrow book","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"Austintjh19"},"content":"deadline return book /by Sunday","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"Austintjh19"},"content":"deadline do homework /by no idea :-p","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"Austintjh19"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"Austintjh19"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"Austintjh19"},"content":"mark 1","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"Austintjh19"},"content":"mark 3","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"Austintjh19"},"content":"mark 5","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"Austintjh19"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"Austintjh19"},"content":"unmark 1","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"Austintjh19"},"content":"unmark 3","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"Austintjh19"},"content":"unmark 5","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"Austintjh19"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"Austintjh19"},"content":"bye","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"Austintjh19":15}},{"path":"text-ui-test/runtest.sh","fileType":"sh","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"#!/usr/bin/env bash","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"# create bin directory if it doesn\u0027t exist","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"if [ ! -d \"../bin\" ]","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":" mkdir ../bin","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"# delete output from previous run","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"if [ -e \"./ACTUAL.TXT\" ]","lastModifiedDate":"2020-05-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":" rm ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"# compile the code into the bin folder, terminates if error occurred","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"if ! javac -cp ../src/main/java -Xlint:none -d ../bin ../src/main/java/*.java","lastModifiedDate":"2020-08-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" echo \"********** BUILD FAILURE **********\"","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" exit 1","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":"# run the program, feed commands from input.txt file and redirect the output to the ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"Austintjh19"},"content":"java -classpath ../bin Main \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":"# convert to UNIX format","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":"cp EXPECTED.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":"dos2unix ACTUAL.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"# compare the output to the expected output","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"diff ACTUAL.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":"if [ $? -eq 0 ]","lastModifiedDate":"2020-05-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":" echo \"Test result: PASSED\"","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":" exit 0","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":"else","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" echo \"Test result: FAILED\"","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" exit 1","lastModifiedDate":"2020-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"Austintjh19":1,"-":37}}] diff --git a/Austintjh19_ip_master/commits.json b/Austintjh19_ip_master/commits.json index 79411a03..83170b99 100644 --- a/Austintjh19_ip_master/commits.json +++ b/Austintjh19_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"Austintjh19":[{"date":"2024-01-23","commitResults":[{"hash":"e76a88b897270a0ee9c5e63a25a0ac76047a3209","isMergeCommit":false,"messageTitle":"Commit Level 0. Rename, Greet, Exit.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":30,"deletions":10}}},{"hash":"4c494bc5289e41bce4755c4c5a0c829da6459305","isMergeCommit":false,"messageTitle":"Adding Level-0 Tag.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":0}}},{"hash":"b8d62d546ed5af28df3c4126acdf9e5664f92a58","isMergeCommit":false,"messageTitle":"Commit Level 0. Rename, Greet, Exit.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":1}}},{"hash":"5b502386b3778f1fdac680d8141ed9a244b79634","isMergeCommit":false,"messageTitle":"Commit Level 0. Rename, Greet, Exit.","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":0}}},{"hash":"b71ed3dbc6649b2c79478f96b5c351e5125afdf2","isMergeCommit":false,"messageTitle":"Level 1. Echo. { Added New Class ChatInterface. }","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":41,"deletions":12}}},{"hash":"ea8589a13ff75fdb96e6dec8962f036b5303ed0f","isMergeCommit":false,"messageTitle":"Level 1. Echo. { Removed chat interface class }","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":40,"deletions":41}}},{"hash":"b6ca1ae9469b2f0252ec1ee148260c4699f537fd","isMergeCommit":false,"messageTitle":"Commit Level 0. Rename, Greet, Exit.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":0}}},{"hash":"2976462740c3a4b0968307cbd77713cab99b743f","isMergeCommit":false,"messageTitle":"Commit Level 0. Rename, Greet, Exit.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":1}}},{"hash":"2fd924605ab7bbf0f0c710d858c2c69abb23034b","isMergeCommit":false,"messageTitle":"Commit Level 0. Rename, Greet, Exit.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":0}}},{"hash":"f564c76903a7879e1eb17d46ce40be306d4a15e5","isMergeCommit":false,"messageTitle":"Level 1. Echo. { Added New Class ChatInterface. }","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":41,"deletions":12}}},{"hash":"ace8087275b7fc5f25fa7c063826ed4fdb81da9a","isMergeCommit":false,"messageTitle":"Level 1. Echo. { Removed chat interface class }","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":40,"deletions":41}}},{"hash":"026fb1d72aab62d0bbda73897b3ea9735e89eab6","isMergeCommit":false,"messageTitle":"Level 1. Echo. { Removed chat interface class }","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":0}}},{"hash":"7796dd888bcf2ba2411dcf3f8e2743964c33d66b","isMergeCommit":false,"messageTitle":"Level 2. Add, List. { UserInputs Class added. }","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":38,"deletions":3}}},{"hash":"bc66663b1ddb2a8cbfefda86e6a2cb56a0ef6f00","isMergeCommit":false,"messageTitle":"Level 3. Mark as Done. { Refractor UserInputs class to TaskManager }","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":21,"deletions":21}}},{"hash":"6f87771f1210c5640cbedc9f229e99e9d2d4e637","isMergeCommit":false,"messageTitle":"Level 3. Mark as Done. { Create new class Task }","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":26,"deletions":6}}},{"hash":"2b67132833f272da8ad15435de52525eb66c2d41","isMergeCommit":false,"messageTitle":"Level 3. Mark as Done. { Completed }","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":38,"deletions":1}}},{"hash":"9d25cefd30a90b74cc612227e0a81220844bb01d","isMergeCommit":false,"messageTitle":"Level 4. ToDos, Events, Deadlines. { Added DeadlineTask, ToDoTask \u0026 Event Task class. Modified Osiris to use case statements. Modified Osiris to handle String to Integer Exceptions }","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":80,"deletions":17}}}]},{"date":"2024-01-24","commitResults":[{"hash":"a2c8a7e1aa55c71d874a3f17601fa6b0a437031c","isMergeCommit":false,"messageTitle":"Level 4. ToDos, Events, Deadlines. { Completed }","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":81,"deletions":4}}},{"hash":"ca89d57073a36f420a5a593ffd06636f590067d7","isMergeCommit":false,"messageTitle":"A-TextUiTesting. Level-4. { Passed }","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":15,"deletions":0},"java":{"insertions":1,"deletions":1},"sh":{"insertions":1,"deletions":1}}},{"hash":"15b79e479ac2fbf77ef16fc9aaf993d472f4e976","isMergeCommit":false,"messageTitle":"Level 5. Handle Errors. { Validation Check and Exception Handling for Mark \u0026 Unmark Task }","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":80,"deletions":33}}},{"hash":"57d54fa54432bfbc04712651dc136305ff5e2556","isMergeCommit":false,"messageTitle":"Level 5. Handle Errors. { Completed. Incorporated validation checks for user inputs. Felt that it was more appropriate than Exceptions. However, did create a InvalidTaskException for future modifications. }","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":49,"deletions":20}}},{"hash":"b18c82f10cb0c6e641977f29505cfb19e63ac89f","isMergeCommit":false,"messageTitle":"Level 6. Delete. { Completed. Validation checks and Exception Handling were incorporated. }","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":45,"deletions":4}}}]},{"date":"2024-01-28","commitResults":[{"hash":"bfcdab6101b36fa9a0984ea85cbb6c024f018e47","isMergeCommit":false,"messageTitle":"Chatbot Introductions Modification.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":19,"deletions":0}}},{"hash":"1d54461876c7456a28395382a77e7f1a7ece6c60","isMergeCommit":false,"messageTitle":"Level 7. Save. { Check Branch }","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":0}}},{"hash":"431ed2e214f4bd783e5c09d9530fa9792d0c1ced","isMergeCommit":false,"messageTitle":"Level 7. Save. { Branch Testing }","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"8ac5ae6ac5481bed7d6f29a5414f88466a9e326b","isMergeCommit":false,"messageTitle":"Level 7. Save. { Branch Check }","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":0}}},{"hash":"d42e571d235f23f303ed269d6e4c967d933da254","isMergeCommit":false,"messageTitle":"Level 7. Save. { Branch Testing Done. }","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"2e10ab221a37b6ab7e427579e31dd1ba78b18ecf","isMergeCommit":false,"messageTitle":"Level 7. Save. { New Storage \u0026 TxtFileStorage Classes }.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":106,"deletions":0}}}]},{"date":"2024-01-29","commitResults":[{"hash":"c4dc3be605ddf382b1f67e18988fa6f86f19cb82","isMergeCommit":false,"messageTitle":"Level 7. Save. { Completed File Storing of Task }","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":0},"java":{"insertions":97,"deletions":45}}},{"hash":"51639e00c0cb8955acf28baef84c8d11d79c2630","isMergeCommit":false,"messageTitle":"Level 7. Save. { Complete }","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":5,"deletions":4},"java":{"insertions":66,"deletions":41}}},{"hash":"f3e6ac55929e71e587f74588fe550d716cba1bc8","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}},{"hash":"e37b382f8e3859bc9e8b6ee7901bacc5dc322bc9","isMergeCommit":false,"messageTitle":"Level 8. Dates and Times. { Branch Test }","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}}]}]},"authorFileTypeContributionMap":{"Austintjh19":{"java":612,"md":0,"fxml":0,"sh":1,"bat":0,"gradle":0,"txt":20}},"authorContributionVariance":{"Austintjh19":33340.51},"authorDisplayNameMap":{"Austintjh19":"CS2103T-T16-1 TAN ..HENG"}} +{"authorDailyContributionsMap":{"Austintjh19":[{"date":"2024-01-23","commitResults":[{"hash":"e76a88b897270a0ee9c5e63a25a0ac76047a3209","isMergeCommit":false,"messageTitle":"Commit Level 0. Rename, Greet, Exit.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":30,"deletions":10}}},{"hash":"4c494bc5289e41bce4755c4c5a0c829da6459305","isMergeCommit":false,"messageTitle":"Adding Level-0 Tag.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":0}}},{"hash":"b8d62d546ed5af28df3c4126acdf9e5664f92a58","isMergeCommit":false,"messageTitle":"Commit Level 0. Rename, Greet, Exit.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":1}}},{"hash":"5b502386b3778f1fdac680d8141ed9a244b79634","isMergeCommit":false,"messageTitle":"Commit Level 0. Rename, Greet, Exit.","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":0}}},{"hash":"b71ed3dbc6649b2c79478f96b5c351e5125afdf2","isMergeCommit":false,"messageTitle":"Level 1. Echo. { Added New Class ChatInterface. }","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":41,"deletions":12}}},{"hash":"ea8589a13ff75fdb96e6dec8962f036b5303ed0f","isMergeCommit":false,"messageTitle":"Level 1. Echo. { Removed chat interface class }","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":40,"deletions":41}}},{"hash":"b6ca1ae9469b2f0252ec1ee148260c4699f537fd","isMergeCommit":false,"messageTitle":"Commit Level 0. Rename, Greet, Exit.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":0}}},{"hash":"2976462740c3a4b0968307cbd77713cab99b743f","isMergeCommit":false,"messageTitle":"Commit Level 0. Rename, Greet, Exit.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":1}}},{"hash":"2fd924605ab7bbf0f0c710d858c2c69abb23034b","isMergeCommit":false,"messageTitle":"Commit Level 0. Rename, Greet, Exit.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":0}}},{"hash":"f564c76903a7879e1eb17d46ce40be306d4a15e5","isMergeCommit":false,"messageTitle":"Level 1. Echo. { Added New Class ChatInterface. }","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":41,"deletions":12}}},{"hash":"ace8087275b7fc5f25fa7c063826ed4fdb81da9a","isMergeCommit":false,"messageTitle":"Level 1. Echo. { Removed chat interface class }","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":40,"deletions":41}}},{"hash":"026fb1d72aab62d0bbda73897b3ea9735e89eab6","isMergeCommit":false,"messageTitle":"Level 1. Echo. { Removed chat interface class }","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":0}}},{"hash":"7796dd888bcf2ba2411dcf3f8e2743964c33d66b","isMergeCommit":false,"messageTitle":"Level 2. Add, List. { UserInputs Class added. }","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":38,"deletions":3}}},{"hash":"bc66663b1ddb2a8cbfefda86e6a2cb56a0ef6f00","isMergeCommit":false,"messageTitle":"Level 3. Mark as Done. { Refractor UserInputs class to TaskManager }","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":21,"deletions":21}}},{"hash":"6f87771f1210c5640cbedc9f229e99e9d2d4e637","isMergeCommit":false,"messageTitle":"Level 3. Mark as Done. { Create new class Task }","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":26,"deletions":6}}},{"hash":"2b67132833f272da8ad15435de52525eb66c2d41","isMergeCommit":false,"messageTitle":"Level 3. Mark as Done. { Completed }","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":38,"deletions":1}}},{"hash":"9d25cefd30a90b74cc612227e0a81220844bb01d","isMergeCommit":false,"messageTitle":"Level 4. ToDos, Events, Deadlines. { Added DeadlineTask, ToDoTask \u0026 Event Task class. Modified Osiris to use case statements. Modified Osiris to handle String to Integer Exceptions }","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":80,"deletions":17}}}]},{"date":"2024-01-24","commitResults":[{"hash":"a2c8a7e1aa55c71d874a3f17601fa6b0a437031c","isMergeCommit":false,"messageTitle":"Level 4. ToDos, Events, Deadlines. { Completed }","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":81,"deletions":4}}},{"hash":"ca89d57073a36f420a5a593ffd06636f590067d7","isMergeCommit":false,"messageTitle":"A-TextUiTesting. Level-4. { Passed }","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":15,"deletions":0},"java":{"insertions":1,"deletions":1},"sh":{"insertions":1,"deletions":1}}},{"hash":"15b79e479ac2fbf77ef16fc9aaf993d472f4e976","isMergeCommit":false,"messageTitle":"Level 5. Handle Errors. { Validation Check and Exception Handling for Mark \u0026 Unmark Task }","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":80,"deletions":33}}},{"hash":"57d54fa54432bfbc04712651dc136305ff5e2556","isMergeCommit":false,"messageTitle":"Level 5. Handle Errors. { Completed. Incorporated validation checks for user inputs. Felt that it was more appropriate than Exceptions. However, did create a InvalidTaskException for future modifications. }","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":49,"deletions":20}}},{"hash":"b18c82f10cb0c6e641977f29505cfb19e63ac89f","isMergeCommit":false,"messageTitle":"Level 6. Delete. { Completed. Validation checks and Exception Handling were incorporated. }","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":45,"deletions":4}}}]},{"date":"2024-01-28","commitResults":[{"hash":"bfcdab6101b36fa9a0984ea85cbb6c024f018e47","isMergeCommit":false,"messageTitle":"Chatbot Introductions Modification.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":19,"deletions":0}}},{"hash":"1d54461876c7456a28395382a77e7f1a7ece6c60","isMergeCommit":false,"messageTitle":"Level 7. Save. { Check Branch }","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":0}}},{"hash":"431ed2e214f4bd783e5c09d9530fa9792d0c1ced","isMergeCommit":false,"messageTitle":"Level 7. Save. { Branch Testing }","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"8ac5ae6ac5481bed7d6f29a5414f88466a9e326b","isMergeCommit":false,"messageTitle":"Level 7. Save. { Branch Check }","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":0}}},{"hash":"d42e571d235f23f303ed269d6e4c967d933da254","isMergeCommit":false,"messageTitle":"Level 7. Save. { Branch Testing Done. }","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"2e10ab221a37b6ab7e427579e31dd1ba78b18ecf","isMergeCommit":false,"messageTitle":"Level 7. Save. { New Storage \u0026 TxtFileStorage Classes }.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":106,"deletions":0}}}]},{"date":"2024-01-29","commitResults":[{"hash":"c4dc3be605ddf382b1f67e18988fa6f86f19cb82","isMergeCommit":false,"messageTitle":"Level 7. Save. { Completed File Storing of Task }","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":0},"java":{"insertions":97,"deletions":45}}},{"hash":"51639e00c0cb8955acf28baef84c8d11d79c2630","isMergeCommit":false,"messageTitle":"Level 7. Save. { Complete }","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":5,"deletions":4},"java":{"insertions":66,"deletions":41}}},{"hash":"f3e6ac55929e71e587f74588fe550d716cba1bc8","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}},{"hash":"e37b382f8e3859bc9e8b6ee7901bacc5dc322bc9","isMergeCommit":false,"messageTitle":"Level 8. Dates and Times. { Branch Test }","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"82373516dc19a54b84ee0ff355dcc522f256fc8b","isMergeCommit":false,"messageTitle":"Level 8. Dates and Times. { Branch Test }","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"ed156855017cfddd1da440b88c44ca15a205b2bf","isMergeCommit":false,"messageTitle":"Level 8. Dates \u0026 Times. { Created Ui Class }","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":169,"deletions":1}}},{"hash":"d998bf4d6e775cd327d3f69f5cafdd7d79974b76","isMergeCommit":false,"messageTitle":"Level 8. Dates \u0026 Times { Ui class Integrated. }","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":2},"java":{"insertions":45,"deletions":87}}},{"hash":"4dca25d484ebb32da9ab8aefb34dd3392f880b75","isMergeCommit":false,"messageTitle":"Level 8. Dates and Times. { Refractor classes, created new classes InputInterpreter and Command. }","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":2},"java":{"insertions":343,"deletions":6}}}]},{"date":"2024-01-30","commitResults":[{"hash":"5f2fcec7c80cbaaa22ffcd263f4368b12b3ebcc9","isMergeCommit":false,"messageTitle":"Level 8. Dates and Times. { Added InputsValidator Class }","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":198,"deletions":64}}},{"hash":"1aaa6f2005d1a115716d240f530b4e2c8e506c0e","isMergeCommit":false,"messageTitle":"Level 8. Dates and Times. { Integration of InputInterpreter, Command, \u0026 Validation Class }","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":5,"deletions":1},"java":{"insertions":27,"deletions":216}}},{"hash":"983779a20b5371ab2ba6f51f8faa265ebca3974c","isMergeCommit":false,"messageTitle":"Level 8. Date and Times. { Task now stores LocalDate and LocalDateTime. Integrated it with TaskManager and UI. }","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":7,"deletions":8},"java":{"insertions":171,"deletions":75}}},{"hash":"a15166d16850ea0e7a5d184edf62f16049ab37b0","isMergeCommit":false,"messageTitle":"Level 8. Dates and Times. { Added Validation for Date Time inputs. }","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"java":{"insertions":79,"deletions":5}}},{"hash":"18d4ca8fe533ee13e5b11adbed6b85c413fc4999","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8","A-MoreOOP"],"fileTypesAndContributionMap":{}},{"hash":"c1b14d3f2a48494502cda5f9b2f3e26b824a8db1","isMergeCommit":false,"messageTitle":"A-Packages. { Completed }","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":0},"java":{"insertions":70,"deletions":66}}}]}]},"authorFileTypeContributionMap":{"Austintjh19":{"java":1194,"md":0,"fxml":0,"sh":1,"bat":0,"gradle":0,"txt":24}},"authorContributionVariance":{"Austintjh19":130517.305},"authorDisplayNameMap":{"Austintjh19":"CS2103T-T16-1 TAN ..HENG"}} diff --git a/Cedricaca_ip_master/authorship.json b/Cedricaca_ip_master/authorship.json index b9e29e30..058ea58f 100644 --- a/Cedricaca_ip_master/authorship.json +++ b/Cedricaca_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Cedricaca"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"Cedricaca"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"Cedricaca"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"Cedricaca"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":6,"author":{"gitId":"Cedricaca"},"content":" public static class Task {","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"Cedricaca"},"content":" String action;","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"Cedricaca"},"content":" Boolean isDone;","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"Cedricaca"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"Cedricaca"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"Cedricaca"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"Cedricaca"},"content":" public Task(String action, Boolean isDone) {","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"Cedricaca"},"content":" this.action \u003d action;","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"Cedricaca"},"content":" this.isDone \u003d isDone;","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"Cedricaca"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"Cedricaca"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":17,"author":{"gitId":"Cedricaca"},"content":" public String toString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":18,"author":{"gitId":"Cedricaca"},"content":" if (isDone) {","lastModifiedDate":"2024-01-23"},{"lineNumber":19,"author":{"gitId":"Cedricaca"},"content":" return \" [X] \" + action;","lastModifiedDate":"2024-01-23"},{"lineNumber":20,"author":{"gitId":"Cedricaca"},"content":" } else {","lastModifiedDate":"2024-01-23"},{"lineNumber":21,"author":{"gitId":"Cedricaca"},"content":" return \" [ ] \" + action;","lastModifiedDate":"2024-01-23"},{"lineNumber":22,"author":{"gitId":"Cedricaca"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":23,"author":{"gitId":"Cedricaca"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":24,"author":{"gitId":"Cedricaca"},"content":" public void mark() {","lastModifiedDate":"2024-01-23"},{"lineNumber":25,"author":{"gitId":"Cedricaca"},"content":" isDone \u003d true;","lastModifiedDate":"2024-01-23"},{"lineNumber":26,"author":{"gitId":"Cedricaca"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":27,"author":{"gitId":"Cedricaca"},"content":" public void unmark() {","lastModifiedDate":"2024-01-23"},{"lineNumber":28,"author":{"gitId":"Cedricaca"},"content":" isDone \u003d false;","lastModifiedDate":"2024-01-23"},{"lineNumber":29,"author":{"gitId":"Cedricaca"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":30,"author":{"gitId":"Cedricaca"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":31,"author":{"gitId":"Cedricaca"},"content":" public static class Event extends Task {","lastModifiedDate":"2024-01-23"},{"lineNumber":32,"author":{"gitId":"Cedricaca"},"content":" String from;","lastModifiedDate":"2024-01-23"},{"lineNumber":33,"author":{"gitId":"Cedricaca"},"content":" String to;","lastModifiedDate":"2024-01-23"},{"lineNumber":34,"author":{"gitId":"Cedricaca"},"content":" public Event(String input, boolean isDone, String from, String to) {","lastModifiedDate":"2024-01-23"},{"lineNumber":35,"author":{"gitId":"Cedricaca"},"content":" super(input, isDone);","lastModifiedDate":"2024-01-23"},{"lineNumber":36,"author":{"gitId":"Cedricaca"},"content":" this.from \u003d from;","lastModifiedDate":"2024-01-23"},{"lineNumber":37,"author":{"gitId":"Cedricaca"},"content":" this.to \u003d to;","lastModifiedDate":"2024-01-23"},{"lineNumber":38,"author":{"gitId":"Cedricaca"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":39,"author":{"gitId":"Cedricaca"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":40,"author":{"gitId":"Cedricaca"},"content":" public String toString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":41,"author":{"gitId":"Cedricaca"},"content":" String s \u003d super.toString();","lastModifiedDate":"2024-01-23"},{"lineNumber":42,"author":{"gitId":"Cedricaca"},"content":" return \"[E]\" + s + \"(from \" + from + \" to \" + to + \" ).\";","lastModifiedDate":"2024-01-23"},{"lineNumber":43,"author":{"gitId":"Cedricaca"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":44,"author":{"gitId":"Cedricaca"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":45,"author":{"gitId":"Cedricaca"},"content":" public static class Todo extends Task {","lastModifiedDate":"2024-01-23"},{"lineNumber":46,"author":{"gitId":"Cedricaca"},"content":" public Todo(String input, boolean isDone) {","lastModifiedDate":"2024-01-23"},{"lineNumber":47,"author":{"gitId":"Cedricaca"},"content":" super(input, isDone);","lastModifiedDate":"2024-01-23"},{"lineNumber":48,"author":{"gitId":"Cedricaca"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":49,"author":{"gitId":"Cedricaca"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":50,"author":{"gitId":"Cedricaca"},"content":" public String toString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":51,"author":{"gitId":"Cedricaca"},"content":" String s \u003d super.toString();","lastModifiedDate":"2024-01-23"},{"lineNumber":52,"author":{"gitId":"Cedricaca"},"content":" return \"[T]\" + s;","lastModifiedDate":"2024-01-23"},{"lineNumber":53,"author":{"gitId":"Cedricaca"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":54,"author":{"gitId":"Cedricaca"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":55,"author":{"gitId":"Cedricaca"},"content":" public static class Deadline extends Task {","lastModifiedDate":"2024-01-23"},{"lineNumber":56,"author":{"gitId":"Cedricaca"},"content":" String by;","lastModifiedDate":"2024-01-23"},{"lineNumber":57,"author":{"gitId":"Cedricaca"},"content":" public Deadline(String input, boolean isDone, String by) {","lastModifiedDate":"2024-01-23"},{"lineNumber":58,"author":{"gitId":"Cedricaca"},"content":" super(input, isDone);","lastModifiedDate":"2024-01-23"},{"lineNumber":59,"author":{"gitId":"Cedricaca"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-23"},{"lineNumber":60,"author":{"gitId":"Cedricaca"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":61,"author":{"gitId":"Cedricaca"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":62,"author":{"gitId":"Cedricaca"},"content":" public String toString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":63,"author":{"gitId":"Cedricaca"},"content":" String s \u003d super.toString();","lastModifiedDate":"2024-01-23"},{"lineNumber":64,"author":{"gitId":"Cedricaca"},"content":" return \"[D]\" + s + \" (by: \" + by + \")\";","lastModifiedDate":"2024-01-23"},{"lineNumber":65,"author":{"gitId":"Cedricaca"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":66,"author":{"gitId":"Cedricaca"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":67,"author":{"gitId":"Cedricaca"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2019-07-29"},{"lineNumber":69,"author":{"gitId":"Cedricaca"},"content":" Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-23"},{"lineNumber":70,"author":{"gitId":"Cedricaca"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":71,"author":{"gitId":"Cedricaca"},"content":" ArrayList\u003cTask\u003e List \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-23"},{"lineNumber":72,"author":{"gitId":"Cedricaca"},"content":" int length \u003d 0;","lastModifiedDate":"2024-01-23"},{"lineNumber":73,"author":{"gitId":"Cedricaca"},"content":" System.out.println(\"Hello! I\u0027m Dukey.\");","lastModifiedDate":"2024-01-23"},{"lineNumber":74,"author":{"gitId":"Cedricaca"},"content":"\t System.out.println(\"What can I do for you?\");","lastModifiedDate":"2024-01-23"},{"lineNumber":75,"author":{"gitId":"Cedricaca"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":76,"author":{"gitId":"Cedricaca"},"content":" String input ;","lastModifiedDate":"2024-01-23"},{"lineNumber":77,"author":{"gitId":"Cedricaca"},"content":" String mark \u003d \"mark (\\\\d+)\";","lastModifiedDate":"2024-01-23"},{"lineNumber":78,"author":{"gitId":"Cedricaca"},"content":" String unmark \u003d \"unmark (\\\\d+)\";","lastModifiedDate":"2024-01-23"},{"lineNumber":79,"author":{"gitId":"Cedricaca"},"content":" String delete \u003d \"delete (\\\\d+)\";","lastModifiedDate":"2024-01-23"},{"lineNumber":80,"author":{"gitId":"Cedricaca"},"content":" String todo \u003d \"todo\";","lastModifiedDate":"2024-01-23"},{"lineNumber":81,"author":{"gitId":"Cedricaca"},"content":" String deadline \u003d \"deadline\";","lastModifiedDate":"2024-01-23"},{"lineNumber":82,"author":{"gitId":"Cedricaca"},"content":" String event \u003d \"event\";","lastModifiedDate":"2024-01-23"},{"lineNumber":83,"author":{"gitId":"Cedricaca"},"content":" String by \u003d \"/by\";","lastModifiedDate":"2024-01-23"},{"lineNumber":84,"author":{"gitId":"Cedricaca"},"content":" String from \u003d \"/from\";","lastModifiedDate":"2024-01-23"},{"lineNumber":85,"author":{"gitId":"Cedricaca"},"content":" String to \u003d \"/to\";","lastModifiedDate":"2024-01-23"},{"lineNumber":86,"author":{"gitId":"Cedricaca"},"content":" Pattern pMark \u003d Pattern.compile(mark);","lastModifiedDate":"2024-01-23"},{"lineNumber":87,"author":{"gitId":"Cedricaca"},"content":" Pattern pUnmark \u003d Pattern.compile(unmark);","lastModifiedDate":"2024-01-23"},{"lineNumber":88,"author":{"gitId":"Cedricaca"},"content":" Pattern pTodo \u003d Pattern.compile(todo);","lastModifiedDate":"2024-01-23"},{"lineNumber":89,"author":{"gitId":"Cedricaca"},"content":" Pattern pDeadline \u003d Pattern.compile(deadline);","lastModifiedDate":"2024-01-23"},{"lineNumber":90,"author":{"gitId":"Cedricaca"},"content":" Pattern pEvent \u003d Pattern.compile(event);","lastModifiedDate":"2024-01-23"},{"lineNumber":91,"author":{"gitId":"Cedricaca"},"content":" Pattern pBy \u003d Pattern.compile(by);","lastModifiedDate":"2024-01-23"},{"lineNumber":92,"author":{"gitId":"Cedricaca"},"content":" Pattern pFrom \u003d Pattern.compile(from);","lastModifiedDate":"2024-01-23"},{"lineNumber":93,"author":{"gitId":"Cedricaca"},"content":" Pattern pTo \u003d Pattern.compile(to);","lastModifiedDate":"2024-01-23"},{"lineNumber":94,"author":{"gitId":"Cedricaca"},"content":" Pattern pDelete \u003d Pattern.compile(delete);","lastModifiedDate":"2024-01-23"},{"lineNumber":95,"author":{"gitId":"Cedricaca"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":96,"author":{"gitId":"Cedricaca"},"content":" while (true) {","lastModifiedDate":"2024-01-23"},{"lineNumber":97,"author":{"gitId":"Cedricaca"},"content":" input \u003d scanner.nextLine();","lastModifiedDate":"2024-01-23"},{"lineNumber":98,"author":{"gitId":"Cedricaca"},"content":" Matcher mMark \u003d pMark.matcher(input);","lastModifiedDate":"2024-01-23"},{"lineNumber":99,"author":{"gitId":"Cedricaca"},"content":" Matcher mUnmark \u003d pUnmark.matcher(input);","lastModifiedDate":"2024-01-23"},{"lineNumber":100,"author":{"gitId":"Cedricaca"},"content":" Matcher mTodo \u003d pTodo.matcher(input);","lastModifiedDate":"2024-01-23"},{"lineNumber":101,"author":{"gitId":"Cedricaca"},"content":" Matcher mDeadline \u003d pDeadline.matcher(input);","lastModifiedDate":"2024-01-23"},{"lineNumber":102,"author":{"gitId":"Cedricaca"},"content":" Matcher mEvent \u003d pEvent.matcher(input);","lastModifiedDate":"2024-01-23"},{"lineNumber":103,"author":{"gitId":"Cedricaca"},"content":" Matcher mBy \u003d pBy.matcher(input);","lastModifiedDate":"2024-01-23"},{"lineNumber":104,"author":{"gitId":"Cedricaca"},"content":" Matcher mFrom \u003d pFrom.matcher(input);","lastModifiedDate":"2024-01-23"},{"lineNumber":105,"author":{"gitId":"Cedricaca"},"content":" Matcher mTo \u003d pTo.matcher(input);","lastModifiedDate":"2024-01-23"},{"lineNumber":106,"author":{"gitId":"Cedricaca"},"content":" Matcher mDelete \u003d pDelete.matcher(input);","lastModifiedDate":"2024-01-23"},{"lineNumber":107,"author":{"gitId":"Cedricaca"},"content":" if (input.equals(\"bye\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":108,"author":{"gitId":"Cedricaca"},"content":" System.out.println(\"Bye. Hope to see you again soon!\");","lastModifiedDate":"2024-01-23"},{"lineNumber":109,"author":{"gitId":"Cedricaca"},"content":" break;","lastModifiedDate":"2024-01-23"},{"lineNumber":110,"author":{"gitId":"Cedricaca"},"content":" } else if (input.equals(\"list\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":111,"author":{"gitId":"Cedricaca"},"content":" if (length \u003d\u003d 0) {","lastModifiedDate":"2024-01-23"},{"lineNumber":112,"author":{"gitId":"Cedricaca"},"content":" System.out.println(\"You have no tasks in your list!\");","lastModifiedDate":"2024-01-23"},{"lineNumber":113,"author":{"gitId":"Cedricaca"},"content":" } else {","lastModifiedDate":"2024-01-23"},{"lineNumber":114,"author":{"gitId":"Cedricaca"},"content":" System.out.println(\"Here are your tasks in your list:\");","lastModifiedDate":"2024-01-23"},{"lineNumber":115,"author":{"gitId":"Cedricaca"},"content":" for (int x \u003d 0; x \u003c length; x++) {","lastModifiedDate":"2024-01-23"},{"lineNumber":116,"author":{"gitId":"Cedricaca"},"content":" Task item \u003d List.get(x);","lastModifiedDate":"2024-01-23"},{"lineNumber":117,"author":{"gitId":"Cedricaca"},"content":" int numeric \u003d x + 1;","lastModifiedDate":"2024-01-23"},{"lineNumber":118,"author":{"gitId":"Cedricaca"},"content":" System.out.println(numeric + \".\" + item.toString());","lastModifiedDate":"2024-01-23"},{"lineNumber":119,"author":{"gitId":"Cedricaca"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":120,"author":{"gitId":"Cedricaca"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":121,"author":{"gitId":"Cedricaca"},"content":" } else if (mDelete.find()) {","lastModifiedDate":"2024-01-23"},{"lineNumber":122,"author":{"gitId":"Cedricaca"},"content":" String captured \u003d mDelete.group(1);","lastModifiedDate":"2024-01-23"},{"lineNumber":123,"author":{"gitId":"Cedricaca"},"content":" int number \u003d Integer.parseInt(captured);","lastModifiedDate":"2024-01-23"},{"lineNumber":124,"author":{"gitId":"Cedricaca"},"content":" if (number \u003e 0 \u0026\u0026 number \u003c length + 1 ) {","lastModifiedDate":"2024-01-23"},{"lineNumber":125,"author":{"gitId":"Cedricaca"},"content":" Task t \u003d List.get(number - 1);","lastModifiedDate":"2024-01-23"},{"lineNumber":126,"author":{"gitId":"Cedricaca"},"content":" List.remove(t);","lastModifiedDate":"2024-01-23"},{"lineNumber":127,"author":{"gitId":"Cedricaca"},"content":" length \u003d length - 1;","lastModifiedDate":"2024-01-23"},{"lineNumber":128,"author":{"gitId":"Cedricaca"},"content":" System.out.println(\"OK! I have deleted this task:\");","lastModifiedDate":"2024-01-23"},{"lineNumber":129,"author":{"gitId":"Cedricaca"},"content":" System.out.println(t);","lastModifiedDate":"2024-01-23"},{"lineNumber":130,"author":{"gitId":"Cedricaca"},"content":" } else {","lastModifiedDate":"2024-01-23"},{"lineNumber":131,"author":{"gitId":"Cedricaca"},"content":" System.out.println(\"Please input a valid number.\");","lastModifiedDate":"2024-01-23"},{"lineNumber":132,"author":{"gitId":"Cedricaca"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":133,"author":{"gitId":"Cedricaca"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":134,"author":{"gitId":"Cedricaca"},"content":" } else if (mUnmark.find()) {","lastModifiedDate":"2024-01-23"},{"lineNumber":135,"author":{"gitId":"Cedricaca"},"content":" String captured \u003d mUnmark.group(1);","lastModifiedDate":"2024-01-23"},{"lineNumber":136,"author":{"gitId":"Cedricaca"},"content":" int number \u003d Integer.parseInt(captured);","lastModifiedDate":"2024-01-23"},{"lineNumber":137,"author":{"gitId":"Cedricaca"},"content":" Task t;","lastModifiedDate":"2024-01-23"},{"lineNumber":138,"author":{"gitId":"Cedricaca"},"content":" if (number \u003e 0 \u0026\u0026 number \u003c length + 1) {","lastModifiedDate":"2024-01-23"},{"lineNumber":139,"author":{"gitId":"Cedricaca"},"content":" t \u003d List.get(number - 1);","lastModifiedDate":"2024-01-23"},{"lineNumber":140,"author":{"gitId":"Cedricaca"},"content":" t.unmark();","lastModifiedDate":"2024-01-23"},{"lineNumber":141,"author":{"gitId":"Cedricaca"},"content":" System.out.println(\"Oh no! I have marked this as not done:\");","lastModifiedDate":"2024-01-23"},{"lineNumber":142,"author":{"gitId":"Cedricaca"},"content":" System.out.println(t);","lastModifiedDate":"2024-01-23"},{"lineNumber":143,"author":{"gitId":"Cedricaca"},"content":" } else {","lastModifiedDate":"2024-01-23"},{"lineNumber":144,"author":{"gitId":"Cedricaca"},"content":" System.out.println(\"Please input a valid number.\");","lastModifiedDate":"2024-01-23"},{"lineNumber":145,"author":{"gitId":"Cedricaca"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":146,"author":{"gitId":"Cedricaca"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":147,"author":{"gitId":"Cedricaca"},"content":" } else if (mMark.find()) {","lastModifiedDate":"2024-01-23"},{"lineNumber":148,"author":{"gitId":"Cedricaca"},"content":" String captured \u003d mMark.group(1);","lastModifiedDate":"2024-01-23"},{"lineNumber":149,"author":{"gitId":"Cedricaca"},"content":" int number \u003d Integer.parseInt(captured);","lastModifiedDate":"2024-01-23"},{"lineNumber":150,"author":{"gitId":"Cedricaca"},"content":" Task t;","lastModifiedDate":"2024-01-23"},{"lineNumber":151,"author":{"gitId":"Cedricaca"},"content":" if (number \u003e 0 \u0026\u0026 number \u003c length + 1) {","lastModifiedDate":"2024-01-23"},{"lineNumber":152,"author":{"gitId":"Cedricaca"},"content":" t \u003d List.get(number -1);","lastModifiedDate":"2024-01-23"},{"lineNumber":153,"author":{"gitId":"Cedricaca"},"content":" t.mark();","lastModifiedDate":"2024-01-23"},{"lineNumber":154,"author":{"gitId":"Cedricaca"},"content":" System.out.println(\"Nice! I have marked this as done:\");","lastModifiedDate":"2024-01-23"},{"lineNumber":155,"author":{"gitId":"Cedricaca"},"content":" System.out.println(t);","lastModifiedDate":"2024-01-23"},{"lineNumber":156,"author":{"gitId":"Cedricaca"},"content":" } else {","lastModifiedDate":"2024-01-23"},{"lineNumber":157,"author":{"gitId":"Cedricaca"},"content":" System.out.println(\"Please input a valid number.\");","lastModifiedDate":"2024-01-23"},{"lineNumber":158,"author":{"gitId":"Cedricaca"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":159,"author":{"gitId":"Cedricaca"},"content":" } else if (mTodo.find()) {","lastModifiedDate":"2024-01-23"},{"lineNumber":160,"author":{"gitId":"Cedricaca"},"content":" String newInput \u003d input.replace(todo, \"\");","lastModifiedDate":"2024-01-23"},{"lineNumber":161,"author":{"gitId":"Cedricaca"},"content":" Todo n \u003d new Todo(newInput, false);","lastModifiedDate":"2024-01-23"},{"lineNumber":162,"author":{"gitId":"Cedricaca"},"content":" if (newInput.trim().equals(\"\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":163,"author":{"gitId":"Cedricaca"},"content":" System.out.println(\"Task cannot be empty!\");","lastModifiedDate":"2024-01-23"},{"lineNumber":164,"author":{"gitId":"Cedricaca"},"content":" } else {","lastModifiedDate":"2024-01-23"},{"lineNumber":165,"author":{"gitId":"Cedricaca"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":166,"author":{"gitId":"Cedricaca"},"content":" List.add(n);","lastModifiedDate":"2024-01-23"},{"lineNumber":167,"author":{"gitId":"Cedricaca"},"content":" length \u003d length + 1;","lastModifiedDate":"2024-01-23"},{"lineNumber":168,"author":{"gitId":"Cedricaca"},"content":" System.out.println(\"OK, I have added this task :\");","lastModifiedDate":"2024-01-23"},{"lineNumber":169,"author":{"gitId":"Cedricaca"},"content":" System.out.println(n);","lastModifiedDate":"2024-01-23"},{"lineNumber":170,"author":{"gitId":"Cedricaca"},"content":" System.out.println(\"You now have \" + length + \" items in the list.\");","lastModifiedDate":"2024-01-23"},{"lineNumber":171,"author":{"gitId":"Cedricaca"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":172,"author":{"gitId":"Cedricaca"},"content":" } else if (mEvent.find()) {","lastModifiedDate":"2024-01-23"},{"lineNumber":173,"author":{"gitId":"Cedricaca"},"content":" if (mFrom.find() \u0026\u0026 mTo.find()) {","lastModifiedDate":"2024-01-23"},{"lineNumber":174,"author":{"gitId":"Cedricaca"},"content":" int startIndex \u003d input.indexOf(from);","lastModifiedDate":"2024-01-23"},{"lineNumber":175,"author":{"gitId":"Cedricaca"},"content":" int startIndexTo \u003d input.indexOf(to);","lastModifiedDate":"2024-01-23"},{"lineNumber":176,"author":{"gitId":"Cedricaca"},"content":" String subFrom \u003d input.substring(startIndex + from.length(), startIndexTo);","lastModifiedDate":"2024-01-23"},{"lineNumber":177,"author":{"gitId":"Cedricaca"},"content":" String subTo \u003d input.substring(startIndexTo + to.length());","lastModifiedDate":"2024-01-23"},{"lineNumber":178,"author":{"gitId":"Cedricaca"},"content":" String newInput \u003d input.substring(input.indexOf(event) + event.length(), startIndex);","lastModifiedDate":"2024-01-23"},{"lineNumber":179,"author":{"gitId":"Cedricaca"},"content":" if (newInput.trim().equals(\"\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":180,"author":{"gitId":"Cedricaca"},"content":" System.out.println(\"Task cannot be empty!\");","lastModifiedDate":"2024-01-23"},{"lineNumber":181,"author":{"gitId":"Cedricaca"},"content":" } else {","lastModifiedDate":"2024-01-23"},{"lineNumber":182,"author":{"gitId":"Cedricaca"},"content":" Event n \u003d new Event(newInput, false, subFrom, subTo);","lastModifiedDate":"2024-01-23"},{"lineNumber":183,"author":{"gitId":"Cedricaca"},"content":" List.add(n);","lastModifiedDate":"2024-01-23"},{"lineNumber":184,"author":{"gitId":"Cedricaca"},"content":" length \u003d length + 1;","lastModifiedDate":"2024-01-23"},{"lineNumber":185,"author":{"gitId":"Cedricaca"},"content":" System.out.println(\"OK, I have added this task :\");","lastModifiedDate":"2024-01-23"},{"lineNumber":186,"author":{"gitId":"Cedricaca"},"content":" System.out.println(n);","lastModifiedDate":"2024-01-23"},{"lineNumber":187,"author":{"gitId":"Cedricaca"},"content":" System.out.println(\"You now have \" + length + \" items in the list.\");","lastModifiedDate":"2024-01-23"},{"lineNumber":188,"author":{"gitId":"Cedricaca"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":189,"author":{"gitId":"Cedricaca"},"content":" } else {","lastModifiedDate":"2024-01-23"},{"lineNumber":190,"author":{"gitId":"Cedricaca"},"content":" System.out.println(\"pls input your start and end of the event.\");","lastModifiedDate":"2024-01-23"},{"lineNumber":191,"author":{"gitId":"Cedricaca"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":192,"author":{"gitId":"Cedricaca"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":193,"author":{"gitId":"Cedricaca"},"content":" } else if (mDeadline.find()) {","lastModifiedDate":"2024-01-23"},{"lineNumber":194,"author":{"gitId":"Cedricaca"},"content":" if (mBy.find()) {","lastModifiedDate":"2024-01-23"},{"lineNumber":195,"author":{"gitId":"Cedricaca"},"content":" int finalIndex \u003d input.indexOf(by) + by.length();","lastModifiedDate":"2024-01-23"},{"lineNumber":196,"author":{"gitId":"Cedricaca"},"content":" String dL \u003d input.substring(finalIndex);","lastModifiedDate":"2024-01-23"},{"lineNumber":197,"author":{"gitId":"Cedricaca"},"content":" String newInput \u003d input.substring(input.indexOf(deadline) + deadline.length(), input.indexOf(by));","lastModifiedDate":"2024-01-23"},{"lineNumber":198,"author":{"gitId":"Cedricaca"},"content":" if (newInput.trim().equals(\"\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":199,"author":{"gitId":"Cedricaca"},"content":" System.out.println(\"Task cannot be empty!\");","lastModifiedDate":"2024-01-23"},{"lineNumber":200,"author":{"gitId":"Cedricaca"},"content":" } else {","lastModifiedDate":"2024-01-23"},{"lineNumber":201,"author":{"gitId":"Cedricaca"},"content":" Deadline n \u003d new Deadline(newInput, false, dL);","lastModifiedDate":"2024-01-23"},{"lineNumber":202,"author":{"gitId":"Cedricaca"},"content":" List.add(n);","lastModifiedDate":"2024-01-23"},{"lineNumber":203,"author":{"gitId":"Cedricaca"},"content":" length \u003d length + 1;","lastModifiedDate":"2024-01-23"},{"lineNumber":204,"author":{"gitId":"Cedricaca"},"content":" System.out.println(\"OK, I have added this task :\");","lastModifiedDate":"2024-01-23"},{"lineNumber":205,"author":{"gitId":"Cedricaca"},"content":" System.out.println(n);","lastModifiedDate":"2024-01-23"},{"lineNumber":206,"author":{"gitId":"Cedricaca"},"content":" System.out.println(\"You now have \" + length + \" items in the list.\");","lastModifiedDate":"2024-01-23"},{"lineNumber":207,"author":{"gitId":"Cedricaca"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":208,"author":{"gitId":"Cedricaca"},"content":" } else {","lastModifiedDate":"2024-01-23"},{"lineNumber":209,"author":{"gitId":"Cedricaca"},"content":" System.out.println(\"please include a deadline\");","lastModifiedDate":"2024-01-23"},{"lineNumber":210,"author":{"gitId":"Cedricaca"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":211,"author":{"gitId":"Cedricaca"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":212,"author":{"gitId":"Cedricaca"},"content":" } else {","lastModifiedDate":"2024-01-23"},{"lineNumber":213,"author":{"gitId":"Cedricaca"},"content":" System.out.println(\"Sorry, no idea what u talking about lulz\");","lastModifiedDate":"2024-01-23"},{"lineNumber":214,"author":{"gitId":"Cedricaca"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":215,"author":{"gitId":"Cedricaca"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":216,"author":{"gitId":"Cedricaca"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":217,"author":{"gitId":"Cedricaca"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":218,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":219,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"-":4,"Cedricaca":215}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"Cedricaca"},"content":"allo","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"Cedricaca"},"content":"todo bruh","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"Cedricaca"},"content":"event nig /from asd /to lalala","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"Cedricaca"},"content":"deadline laugh /by tomorrow","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"Cedricaca"},"content":"mark 2","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"Cedricaca"},"content":"unmark 2","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"Cedricaca"},"content":"delete 3","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"Cedricaca"},"content":"list","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"Cedricaca"},"content":"bye","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"Cedricaca":9}},{"path":"text-ui-test/runtest.sh","fileType":"sh","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"#!/usr/bin/env bash","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"# create bin directory if it doesn\u0027t exist","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"Cedricaca"},"content":"if [ ! -d \"/Users/cedrictan/git/ip/bin\" ]","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"Cedricaca"},"content":" mkdir /Users/cedrictan/git/ip/bin","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"# delete output from previous run","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"Cedricaca"},"content":"if [ -e \"/Users/cedrictan/git/ip/text-ui-test/ACTUAL.TXT\" ]","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"Cedricaca"},"content":" rm /Users/cedrictan/git/ip/text-ui-test/ACTUAL.TXT","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"# compile the code into the bin folder, terminates if error occurred","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"Cedricaca"},"content":"if ! javac -cp /Users/cedrictan/git/ip/src/main/java -Xlint:none -d /Users/cedrictan/git/ip/bin /Users/cedrictan/git/ip/src/main/java/*.java","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" echo \"********** BUILD FAILURE **********\"","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" exit 1","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":"# run the program, feed commands from input.txt file and redirect the output to the ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"Cedricaca"},"content":"java -classpath /Users/cedrictan/git/ip/bin Duke \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":"# convert to UNIX format","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":"cp EXPECTED.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":"dos2unix ACTUAL.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"# compare the output to the expected output","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"diff ACTUAL.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":"if [ $? -eq 0 ]","lastModifiedDate":"2020-05-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":" echo \"Test result: PASSED\"","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":" exit 0","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":"else","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" echo \"Test result: FAILED\"","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" exit 1","lastModifiedDate":"2020-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"-":32,"Cedricaca":6}}] +[{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Cedricaca"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"Cedricaca"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"Cedricaca"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"Cedricaca"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"Cedricaca"},"content":"import java.io.*;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"Cedricaca"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"Cedricaca"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"Cedricaca"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":10,"author":{"gitId":"Cedricaca"},"content":" public static class Task {","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"Cedricaca"},"content":" String action;","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"Cedricaca"},"content":" Boolean isDone;","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"Cedricaca"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"Cedricaca"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"Cedricaca"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"Cedricaca"},"content":" public Task(String action, Boolean isDone) {","lastModifiedDate":"2024-01-23"},{"lineNumber":17,"author":{"gitId":"Cedricaca"},"content":" this.action \u003d action;","lastModifiedDate":"2024-01-23"},{"lineNumber":18,"author":{"gitId":"Cedricaca"},"content":" this.isDone \u003d isDone;","lastModifiedDate":"2024-01-23"},{"lineNumber":19,"author":{"gitId":"Cedricaca"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":20,"author":{"gitId":"Cedricaca"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":21,"author":{"gitId":"Cedricaca"},"content":" public String toString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":22,"author":{"gitId":"Cedricaca"},"content":" if (isDone) {","lastModifiedDate":"2024-01-23"},{"lineNumber":23,"author":{"gitId":"Cedricaca"},"content":" return \"[X]\" + action;","lastModifiedDate":"2024-01-23"},{"lineNumber":24,"author":{"gitId":"Cedricaca"},"content":" } else {","lastModifiedDate":"2024-01-23"},{"lineNumber":25,"author":{"gitId":"Cedricaca"},"content":" return \"[ ]\" + action;","lastModifiedDate":"2024-01-23"},{"lineNumber":26,"author":{"gitId":"Cedricaca"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":27,"author":{"gitId":"Cedricaca"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":28,"author":{"gitId":"Cedricaca"},"content":" public void mark() {","lastModifiedDate":"2024-01-23"},{"lineNumber":29,"author":{"gitId":"Cedricaca"},"content":" isDone \u003d true;","lastModifiedDate":"2024-01-23"},{"lineNumber":30,"author":{"gitId":"Cedricaca"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":31,"author":{"gitId":"Cedricaca"},"content":" public void unmark() {","lastModifiedDate":"2024-01-23"},{"lineNumber":32,"author":{"gitId":"Cedricaca"},"content":" isDone \u003d false;","lastModifiedDate":"2024-01-23"},{"lineNumber":33,"author":{"gitId":"Cedricaca"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":34,"author":{"gitId":"Cedricaca"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"Cedricaca"},"content":" public String","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"Cedricaca"},"content":" export() {","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"Cedricaca"},"content":" return toString();","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"Cedricaca"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"Cedricaca"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":40,"author":{"gitId":"Cedricaca"},"content":" public static class Event extends Task {","lastModifiedDate":"2024-01-23"},{"lineNumber":41,"author":{"gitId":"Cedricaca"},"content":" LocalDateTime from;","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"Cedricaca"},"content":" LocalDateTime to;","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"Cedricaca"},"content":" public Event(String input, boolean isDone, LocalDateTime from, LocalDateTime to) {","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"Cedricaca"},"content":" super(input, isDone);","lastModifiedDate":"2024-01-23"},{"lineNumber":45,"author":{"gitId":"Cedricaca"},"content":" this.from \u003d from;","lastModifiedDate":"2024-01-23"},{"lineNumber":46,"author":{"gitId":"Cedricaca"},"content":" this.to \u003d to;","lastModifiedDate":"2024-01-23"},{"lineNumber":47,"author":{"gitId":"Cedricaca"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":48,"author":{"gitId":"Cedricaca"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":49,"author":{"gitId":"Cedricaca"},"content":" public String toString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":50,"author":{"gitId":"Cedricaca"},"content":" String s \u003d super.toString();","lastModifiedDate":"2024-01-23"},{"lineNumber":51,"author":{"gitId":"Cedricaca"},"content":" return \"[E]\" + s + \"(from \" + from.format(DateTimeFormatter.ofPattern(\"MMM d yyyy HH:ss\")).toString().replace(\"T\", \" \") + \" to \" + to.format(DateTimeFormatter.ofPattern(\"MMM d yyyy HH:ss\")).toString().replace(\"T\", \" \") + \")\";","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"Cedricaca"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"Cedricaca"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"Cedricaca"},"content":" public String export() {","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"Cedricaca"},"content":" String s \u003d super.toString();","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"Cedricaca"},"content":" return \"[E]\" + s + \"/from\" + from.toString().replace(\"T\", \" \") + \"/to\" + to.toString().replace(\"T\" , \" \") ;","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"Cedricaca"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":58,"author":{"gitId":"Cedricaca"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":59,"author":{"gitId":"Cedricaca"},"content":" public static class Todo extends Task {","lastModifiedDate":"2024-01-23"},{"lineNumber":60,"author":{"gitId":"Cedricaca"},"content":" public Todo(String input, boolean isDone) {","lastModifiedDate":"2024-01-23"},{"lineNumber":61,"author":{"gitId":"Cedricaca"},"content":" super(input, isDone);","lastModifiedDate":"2024-01-23"},{"lineNumber":62,"author":{"gitId":"Cedricaca"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":63,"author":{"gitId":"Cedricaca"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":64,"author":{"gitId":"Cedricaca"},"content":" public String toString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":65,"author":{"gitId":"Cedricaca"},"content":" String s \u003d super.toString();","lastModifiedDate":"2024-01-23"},{"lineNumber":66,"author":{"gitId":"Cedricaca"},"content":" return \"[T]\" + s;","lastModifiedDate":"2024-01-23"},{"lineNumber":67,"author":{"gitId":"Cedricaca"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":68,"author":{"gitId":"Cedricaca"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":69,"author":{"gitId":"Cedricaca"},"content":" public String export() {","lastModifiedDate":"2024-01-30"},{"lineNumber":70,"author":{"gitId":"Cedricaca"},"content":" return toString();","lastModifiedDate":"2024-01-30"},{"lineNumber":71,"author":{"gitId":"Cedricaca"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":72,"author":{"gitId":"Cedricaca"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":73,"author":{"gitId":"Cedricaca"},"content":" public static class Deadline extends Task {","lastModifiedDate":"2024-01-23"},{"lineNumber":74,"author":{"gitId":"Cedricaca"},"content":" LocalDateTime by;","lastModifiedDate":"2024-01-30"},{"lineNumber":75,"author":{"gitId":"Cedricaca"},"content":" public Deadline(String input, boolean isDone, LocalDateTime by) {","lastModifiedDate":"2024-01-30"},{"lineNumber":76,"author":{"gitId":"Cedricaca"},"content":" super(input, isDone);","lastModifiedDate":"2024-01-23"},{"lineNumber":77,"author":{"gitId":"Cedricaca"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-23"},{"lineNumber":78,"author":{"gitId":"Cedricaca"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":79,"author":{"gitId":"Cedricaca"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":80,"author":{"gitId":"Cedricaca"},"content":" public String toString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":81,"author":{"gitId":"Cedricaca"},"content":" String s \u003d super.toString();","lastModifiedDate":"2024-01-23"},{"lineNumber":82,"author":{"gitId":"Cedricaca"},"content":" return \"[D]\" + s + \"(by:\" + by.format(DateTimeFormatter.ofPattern(\"MMM d yyyy HH:ss\")).toString().replace(\"T\", \" \") +\")\";","lastModifiedDate":"2024-01-30"},{"lineNumber":83,"author":{"gitId":"Cedricaca"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":84,"author":{"gitId":"Cedricaca"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":85,"author":{"gitId":"Cedricaca"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":86,"author":{"gitId":"Cedricaca"},"content":" public String export() {","lastModifiedDate":"2024-01-30"},{"lineNumber":87,"author":{"gitId":"Cedricaca"},"content":" String s \u003d super.toString();","lastModifiedDate":"2024-01-30"},{"lineNumber":88,"author":{"gitId":"Cedricaca"},"content":" return \"[D]\" + s + \"/by\" + by.toString().replace(\"T\", \" \") ;","lastModifiedDate":"2024-01-30"},{"lineNumber":89,"author":{"gitId":"Cedricaca"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":90,"author":{"gitId":"Cedricaca"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":91,"author":{"gitId":"Cedricaca"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":92,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2019-07-29"},{"lineNumber":93,"author":{"gitId":"Cedricaca"},"content":" Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-23"},{"lineNumber":94,"author":{"gitId":"Cedricaca"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":95,"author":{"gitId":"Cedricaca"},"content":" ArrayList\u003cTask\u003e List \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-23"},{"lineNumber":96,"author":{"gitId":"Cedricaca"},"content":" int length;","lastModifiedDate":"2024-01-30"},{"lineNumber":97,"author":{"gitId":"Cedricaca"},"content":" System.out.println(\"Hello! I\u0027m Dukey.\");","lastModifiedDate":"2024-01-23"},{"lineNumber":98,"author":{"gitId":"Cedricaca"},"content":"\t System.out.println(\"What can I do for you?\");","lastModifiedDate":"2024-01-23"},{"lineNumber":99,"author":{"gitId":"Cedricaca"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":100,"author":{"gitId":"Cedricaca"},"content":" String input ;","lastModifiedDate":"2024-01-23"},{"lineNumber":101,"author":{"gitId":"Cedricaca"},"content":" String mark \u003d \"mark (\\\\d+)\";","lastModifiedDate":"2024-01-23"},{"lineNumber":102,"author":{"gitId":"Cedricaca"},"content":" String unmark \u003d \"unmark (\\\\d+)\";","lastModifiedDate":"2024-01-23"},{"lineNumber":103,"author":{"gitId":"Cedricaca"},"content":" String delete \u003d \"delete (\\\\d+)\";","lastModifiedDate":"2024-01-23"},{"lineNumber":104,"author":{"gitId":"Cedricaca"},"content":" String todo \u003d \"todo\";","lastModifiedDate":"2024-01-23"},{"lineNumber":105,"author":{"gitId":"Cedricaca"},"content":" String deadline \u003d \"deadline\";","lastModifiedDate":"2024-01-23"},{"lineNumber":106,"author":{"gitId":"Cedricaca"},"content":" String event \u003d \"event\";","lastModifiedDate":"2024-01-23"},{"lineNumber":107,"author":{"gitId":"Cedricaca"},"content":" String by \u003d \"/by\";","lastModifiedDate":"2024-01-23"},{"lineNumber":108,"author":{"gitId":"Cedricaca"},"content":" String from \u003d \"/from\";","lastModifiedDate":"2024-01-23"},{"lineNumber":109,"author":{"gitId":"Cedricaca"},"content":" String to \u003d \"/to\";","lastModifiedDate":"2024-01-23"},{"lineNumber":110,"author":{"gitId":"Cedricaca"},"content":" String todo2 \u003d \"[T]\";","lastModifiedDate":"2024-01-30"},{"lineNumber":111,"author":{"gitId":"Cedricaca"},"content":" String deadline2 \u003d \"[D]\";","lastModifiedDate":"2024-01-30"},{"lineNumber":112,"author":{"gitId":"Cedricaca"},"content":" String event2 \u003d \"[E]\";","lastModifiedDate":"2024-01-30"},{"lineNumber":113,"author":{"gitId":"Cedricaca"},"content":" String unmarked \u003d \"[ ]\";","lastModifiedDate":"2024-01-30"},{"lineNumber":114,"author":{"gitId":"Cedricaca"},"content":" String marked \u003d \"[X]\";","lastModifiedDate":"2024-01-30"},{"lineNumber":115,"author":{"gitId":"Cedricaca"},"content":" Pattern pMark \u003d Pattern.compile(mark);","lastModifiedDate":"2024-01-23"},{"lineNumber":116,"author":{"gitId":"Cedricaca"},"content":" Pattern pUnmark \u003d Pattern.compile(unmark);","lastModifiedDate":"2024-01-23"},{"lineNumber":117,"author":{"gitId":"Cedricaca"},"content":" Pattern pTodo \u003d Pattern.compile(todo);","lastModifiedDate":"2024-01-23"},{"lineNumber":118,"author":{"gitId":"Cedricaca"},"content":" Pattern pDeadline \u003d Pattern.compile(deadline);","lastModifiedDate":"2024-01-23"},{"lineNumber":119,"author":{"gitId":"Cedricaca"},"content":" Pattern pEvent \u003d Pattern.compile(event);","lastModifiedDate":"2024-01-23"},{"lineNumber":120,"author":{"gitId":"Cedricaca"},"content":" Pattern pBy \u003d Pattern.compile(by);","lastModifiedDate":"2024-01-23"},{"lineNumber":121,"author":{"gitId":"Cedricaca"},"content":" Pattern pFrom \u003d Pattern.compile(from);","lastModifiedDate":"2024-01-23"},{"lineNumber":122,"author":{"gitId":"Cedricaca"},"content":" Pattern pTo \u003d Pattern.compile(to);","lastModifiedDate":"2024-01-23"},{"lineNumber":123,"author":{"gitId":"Cedricaca"},"content":" Pattern pDelete \u003d Pattern.compile(delete);","lastModifiedDate":"2024-01-23"},{"lineNumber":124,"author":{"gitId":"Cedricaca"},"content":" Pattern pTodo2 \u003d Pattern.compile(todo2);","lastModifiedDate":"2024-01-30"},{"lineNumber":125,"author":{"gitId":"Cedricaca"},"content":" Pattern pDeadline2 \u003d Pattern.compile(deadline2);","lastModifiedDate":"2024-01-30"},{"lineNumber":126,"author":{"gitId":"Cedricaca"},"content":" Pattern pEvent2 \u003d Pattern.compile(event2);","lastModifiedDate":"2024-01-30"},{"lineNumber":127,"author":{"gitId":"Cedricaca"},"content":" Pattern pUnmarked \u003d Pattern.compile(unmarked);","lastModifiedDate":"2024-01-30"},{"lineNumber":128,"author":{"gitId":"Cedricaca"},"content":" Pattern pMarked \u003d Pattern.compile(marked);","lastModifiedDate":"2024-01-30"},{"lineNumber":129,"author":{"gitId":"Cedricaca"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":130,"author":{"gitId":"Cedricaca"},"content":" String folderName \u003d \"data\";","lastModifiedDate":"2024-01-30"},{"lineNumber":131,"author":{"gitId":"Cedricaca"},"content":" String fileName \u003d \"data.txt\";","lastModifiedDate":"2024-01-30"},{"lineNumber":132,"author":{"gitId":"Cedricaca"},"content":" File folder \u003d new File(folderName);","lastModifiedDate":"2024-01-30"},{"lineNumber":133,"author":{"gitId":"Cedricaca"},"content":" if (!folder.exists()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":134,"author":{"gitId":"Cedricaca"},"content":" folder.mkdir();","lastModifiedDate":"2024-01-30"},{"lineNumber":135,"author":{"gitId":"Cedricaca"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":136,"author":{"gitId":"Cedricaca"},"content":" File file \u003d new File(folder, fileName);","lastModifiedDate":"2024-01-30"},{"lineNumber":137,"author":{"gitId":"Cedricaca"},"content":" if (file.exists()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":138,"author":{"gitId":"Cedricaca"},"content":" try (BufferedReader reader \u003d new BufferedReader(new FileReader(file))) {","lastModifiedDate":"2024-01-30"},{"lineNumber":139,"author":{"gitId":"Cedricaca"},"content":" String currentLine;","lastModifiedDate":"2024-01-30"},{"lineNumber":140,"author":{"gitId":"Cedricaca"},"content":" int currLine \u003d 0;","lastModifiedDate":"2024-01-30"},{"lineNumber":141,"author":{"gitId":"Cedricaca"},"content":" while ((currentLine \u003d reader.readLine()) !\u003d null) {","lastModifiedDate":"2024-01-30"},{"lineNumber":142,"author":{"gitId":"Cedricaca"},"content":" Matcher mTodo2 \u003d pTodo2.matcher(currentLine);","lastModifiedDate":"2024-01-30"},{"lineNumber":143,"author":{"gitId":"Cedricaca"},"content":" Matcher mEvent2 \u003d pEvent2.matcher(currentLine);","lastModifiedDate":"2024-01-30"},{"lineNumber":144,"author":{"gitId":"Cedricaca"},"content":" Matcher mDeadline2 \u003d pDeadline2.matcher(currentLine);","lastModifiedDate":"2024-01-30"},{"lineNumber":145,"author":{"gitId":"Cedricaca"},"content":" Matcher mUnmarked \u003d pUnmarked.matcher(currentLine);","lastModifiedDate":"2024-01-30"},{"lineNumber":146,"author":{"gitId":"Cedricaca"},"content":" Matcher mMarked \u003d pMarked.matcher(currentLine);","lastModifiedDate":"2024-01-30"},{"lineNumber":147,"author":{"gitId":"Cedricaca"},"content":" if (mTodo2.find()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":148,"author":{"gitId":"Cedricaca"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":149,"author":{"gitId":"Cedricaca"},"content":" if (mMarked.find()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":150,"author":{"gitId":"Cedricaca"},"content":" Todo n \u003d new Todo(currentLine.substring(6), true );","lastModifiedDate":"2024-01-30"},{"lineNumber":151,"author":{"gitId":"Cedricaca"},"content":" n.mark();","lastModifiedDate":"2024-01-30"},{"lineNumber":152,"author":{"gitId":"Cedricaca"},"content":" List.add(n);","lastModifiedDate":"2024-01-30"},{"lineNumber":153,"author":{"gitId":"Cedricaca"},"content":" } else if (mUnmarked.find()){","lastModifiedDate":"2024-01-30"},{"lineNumber":154,"author":{"gitId":"Cedricaca"},"content":" Todo n \u003d new Todo(currentLine.substring(6), false);","lastModifiedDate":"2024-01-30"},{"lineNumber":155,"author":{"gitId":"Cedricaca"},"content":" n.unmark();","lastModifiedDate":"2024-01-30"},{"lineNumber":156,"author":{"gitId":"Cedricaca"},"content":" List.add(n);","lastModifiedDate":"2024-01-30"},{"lineNumber":157,"author":{"gitId":"Cedricaca"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":158,"author":{"gitId":"Cedricaca"},"content":" } else if (mDeadline2.find()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":159,"author":{"gitId":"Cedricaca"},"content":" int finalIndex \u003d currentLine.indexOf(by) + by.length();","lastModifiedDate":"2024-01-30"},{"lineNumber":160,"author":{"gitId":"Cedricaca"},"content":" String dL \u003d currentLine.substring(finalIndex);","lastModifiedDate":"2024-01-30"},{"lineNumber":161,"author":{"gitId":"Cedricaca"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":162,"author":{"gitId":"Cedricaca"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":163,"author":{"gitId":"Cedricaca"},"content":" // Define the format of the input string","lastModifiedDate":"2024-01-30"},{"lineNumber":164,"author":{"gitId":"Cedricaca"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd HH:mm\");","lastModifiedDate":"2024-01-30"},{"lineNumber":165,"author":{"gitId":"Cedricaca"},"content":" LocalDateTime ldt \u003d null;","lastModifiedDate":"2024-01-30"},{"lineNumber":166,"author":{"gitId":"Cedricaca"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":167,"author":{"gitId":"Cedricaca"},"content":" // Parse the string into a LocalDate object","lastModifiedDate":"2024-01-30"},{"lineNumber":168,"author":{"gitId":"Cedricaca"},"content":" ldt \u003d LocalDateTime.parse(dL, formatter);","lastModifiedDate":"2024-01-30"},{"lineNumber":169,"author":{"gitId":"Cedricaca"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":170,"author":{"gitId":"Cedricaca"},"content":" // Output the LocalDate object","lastModifiedDate":"2024-01-30"},{"lineNumber":171,"author":{"gitId":"Cedricaca"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":172,"author":{"gitId":"Cedricaca"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":173,"author":{"gitId":"Cedricaca"},"content":" System.out.println(\"error in deadline\");","lastModifiedDate":"2024-01-30"},{"lineNumber":174,"author":{"gitId":"Cedricaca"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":175,"author":{"gitId":"Cedricaca"},"content":" String newInput \u003d currentLine.substring(currentLine.indexOf(deadline) + deadline.length()- 1, currentLine.indexOf(by));","lastModifiedDate":"2024-01-30"},{"lineNumber":176,"author":{"gitId":"Cedricaca"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":177,"author":{"gitId":"Cedricaca"},"content":" if (mMarked.find()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":178,"author":{"gitId":"Cedricaca"},"content":" Deadline n \u003d new Deadline(newInput, true, ldt);","lastModifiedDate":"2024-01-30"},{"lineNumber":179,"author":{"gitId":"Cedricaca"},"content":" n.mark();","lastModifiedDate":"2024-01-30"},{"lineNumber":180,"author":{"gitId":"Cedricaca"},"content":" List.add(n);","lastModifiedDate":"2024-01-30"},{"lineNumber":181,"author":{"gitId":"Cedricaca"},"content":" } else if (mUnmarked.find()){","lastModifiedDate":"2024-01-30"},{"lineNumber":182,"author":{"gitId":"Cedricaca"},"content":" Deadline n \u003d new Deadline(newInput, false, ldt);","lastModifiedDate":"2024-01-30"},{"lineNumber":183,"author":{"gitId":"Cedricaca"},"content":" n.unmark();","lastModifiedDate":"2024-01-30"},{"lineNumber":184,"author":{"gitId":"Cedricaca"},"content":" List.add(n);","lastModifiedDate":"2024-01-30"},{"lineNumber":185,"author":{"gitId":"Cedricaca"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":186,"author":{"gitId":"Cedricaca"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":187,"author":{"gitId":"Cedricaca"},"content":" } else if (mEvent2.find()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":188,"author":{"gitId":"Cedricaca"},"content":" int startIndex \u003d currentLine.indexOf(from);","lastModifiedDate":"2024-01-30"},{"lineNumber":189,"author":{"gitId":"Cedricaca"},"content":" int startIndexTo \u003d currentLine.indexOf(to);","lastModifiedDate":"2024-01-30"},{"lineNumber":190,"author":{"gitId":"Cedricaca"},"content":" String subFrom \u003d currentLine.substring(startIndex + from.length(), startIndexTo);","lastModifiedDate":"2024-01-30"},{"lineNumber":191,"author":{"gitId":"Cedricaca"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":192,"author":{"gitId":"Cedricaca"},"content":" String subTo \u003d currentLine.substring(startIndexTo + to.length());","lastModifiedDate":"2024-01-30"},{"lineNumber":193,"author":{"gitId":"Cedricaca"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":194,"author":{"gitId":"Cedricaca"},"content":" String newInput \u003d currentLine.substring(currentLine.indexOf(event) + event.length() + 2, startIndex);","lastModifiedDate":"2024-01-30"},{"lineNumber":195,"author":{"gitId":"Cedricaca"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd HH:mm\");","lastModifiedDate":"2024-01-30"},{"lineNumber":196,"author":{"gitId":"Cedricaca"},"content":" LocalDateTime ldt \u003d null;","lastModifiedDate":"2024-01-30"},{"lineNumber":197,"author":{"gitId":"Cedricaca"},"content":" LocalDateTime ldt2 \u003d null;","lastModifiedDate":"2024-01-30"},{"lineNumber":198,"author":{"gitId":"Cedricaca"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":199,"author":{"gitId":"Cedricaca"},"content":" // Parse the string into a LocalDate object","lastModifiedDate":"2024-01-30"},{"lineNumber":200,"author":{"gitId":"Cedricaca"},"content":" ldt \u003d LocalDateTime.parse(subFrom, formatter);","lastModifiedDate":"2024-01-30"},{"lineNumber":201,"author":{"gitId":"Cedricaca"},"content":" ldt2 \u003d LocalDateTime.parse(subTo, formatter);","lastModifiedDate":"2024-01-30"},{"lineNumber":202,"author":{"gitId":"Cedricaca"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":203,"author":{"gitId":"Cedricaca"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":204,"author":{"gitId":"Cedricaca"},"content":" System.out.println(\"error in event\");","lastModifiedDate":"2024-01-30"},{"lineNumber":205,"author":{"gitId":"Cedricaca"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":206,"author":{"gitId":"Cedricaca"},"content":" if (mMarked.find()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":207,"author":{"gitId":"Cedricaca"},"content":" Event n \u003d new Event(newInput, true, ldt, ldt2);","lastModifiedDate":"2024-01-30"},{"lineNumber":208,"author":{"gitId":"Cedricaca"},"content":" n.mark();","lastModifiedDate":"2024-01-30"},{"lineNumber":209,"author":{"gitId":"Cedricaca"},"content":" List.add(n);","lastModifiedDate":"2024-01-30"},{"lineNumber":210,"author":{"gitId":"Cedricaca"},"content":" } else if (mUnmarked.find()){","lastModifiedDate":"2024-01-30"},{"lineNumber":211,"author":{"gitId":"Cedricaca"},"content":" Event n \u003d new Event(newInput, false, ldt, ldt2);","lastModifiedDate":"2024-01-30"},{"lineNumber":212,"author":{"gitId":"Cedricaca"},"content":" n.unmark();","lastModifiedDate":"2024-01-30"},{"lineNumber":213,"author":{"gitId":"Cedricaca"},"content":" List.add(n);","lastModifiedDate":"2024-01-30"},{"lineNumber":214,"author":{"gitId":"Cedricaca"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":215,"author":{"gitId":"Cedricaca"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":216,"author":{"gitId":"Cedricaca"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":217,"author":{"gitId":"Cedricaca"},"content":" currLine \u003d currLine + 1;","lastModifiedDate":"2024-01-30"},{"lineNumber":218,"author":{"gitId":"Cedricaca"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":219,"author":{"gitId":"Cedricaca"},"content":" length \u003d currLine;","lastModifiedDate":"2024-01-30"},{"lineNumber":220,"author":{"gitId":"Cedricaca"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":221,"author":{"gitId":"Cedricaca"},"content":" System.err.println(\"Error reading file: \" + e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":222,"author":{"gitId":"Cedricaca"},"content":" return;","lastModifiedDate":"2024-01-30"},{"lineNumber":223,"author":{"gitId":"Cedricaca"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":224,"author":{"gitId":"Cedricaca"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":225,"author":{"gitId":"Cedricaca"},"content":" length \u003d 0;","lastModifiedDate":"2024-01-30"},{"lineNumber":226,"author":{"gitId":"Cedricaca"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":227,"author":{"gitId":"Cedricaca"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":228,"author":{"gitId":"Cedricaca"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":229,"author":{"gitId":"Cedricaca"},"content":" while (true) {","lastModifiedDate":"2024-01-23"},{"lineNumber":230,"author":{"gitId":"Cedricaca"},"content":" input \u003d scanner.nextLine();","lastModifiedDate":"2024-01-23"},{"lineNumber":231,"author":{"gitId":"Cedricaca"},"content":" Matcher mMark \u003d pMark.matcher(input);","lastModifiedDate":"2024-01-23"},{"lineNumber":232,"author":{"gitId":"Cedricaca"},"content":" Matcher mUnmark \u003d pUnmark.matcher(input);","lastModifiedDate":"2024-01-23"},{"lineNumber":233,"author":{"gitId":"Cedricaca"},"content":" Matcher mTodo \u003d pTodo.matcher(input);","lastModifiedDate":"2024-01-23"},{"lineNumber":234,"author":{"gitId":"Cedricaca"},"content":" Matcher mDeadline \u003d pDeadline.matcher(input);","lastModifiedDate":"2024-01-23"},{"lineNumber":235,"author":{"gitId":"Cedricaca"},"content":" Matcher mEvent \u003d pEvent.matcher(input);","lastModifiedDate":"2024-01-23"},{"lineNumber":236,"author":{"gitId":"Cedricaca"},"content":" Matcher mBy \u003d pBy.matcher(input);","lastModifiedDate":"2024-01-23"},{"lineNumber":237,"author":{"gitId":"Cedricaca"},"content":" Matcher mFrom \u003d pFrom.matcher(input);","lastModifiedDate":"2024-01-23"},{"lineNumber":238,"author":{"gitId":"Cedricaca"},"content":" Matcher mTo \u003d pTo.matcher(input);","lastModifiedDate":"2024-01-23"},{"lineNumber":239,"author":{"gitId":"Cedricaca"},"content":" Matcher mDelete \u003d pDelete.matcher(input);","lastModifiedDate":"2024-01-23"},{"lineNumber":240,"author":{"gitId":"Cedricaca"},"content":" if (input.equals(\"reset\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":241,"author":{"gitId":"Cedricaca"},"content":" List.clear();","lastModifiedDate":"2024-01-30"},{"lineNumber":242,"author":{"gitId":"Cedricaca"},"content":" length \u003d 0;","lastModifiedDate":"2024-01-30"},{"lineNumber":243,"author":{"gitId":"Cedricaca"},"content":" try (PrintWriter writer \u003d new PrintWriter(file)) {","lastModifiedDate":"2024-01-30"},{"lineNumber":244,"author":{"gitId":"Cedricaca"},"content":" writer.print(\"\"); // This clears all lines in the file","lastModifiedDate":"2024-01-30"},{"lineNumber":245,"author":{"gitId":"Cedricaca"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":246,"author":{"gitId":"Cedricaca"},"content":" e.printStackTrace();","lastModifiedDate":"2024-01-30"},{"lineNumber":247,"author":{"gitId":"Cedricaca"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":248,"author":{"gitId":"Cedricaca"},"content":" System.out.println(\"List cleared!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":249,"author":{"gitId":"Cedricaca"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":250,"author":{"gitId":"Cedricaca"},"content":" } else if (input.equals(\"bye\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":251,"author":{"gitId":"Cedricaca"},"content":" System.out.println(\"Bye. Hope to see you again soon!\");","lastModifiedDate":"2024-01-23"},{"lineNumber":252,"author":{"gitId":"Cedricaca"},"content":" break;","lastModifiedDate":"2024-01-23"},{"lineNumber":253,"author":{"gitId":"Cedricaca"},"content":" } else if (input.equals(\"list\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":254,"author":{"gitId":"Cedricaca"},"content":" if (length \u003d\u003d 0) {","lastModifiedDate":"2024-01-23"},{"lineNumber":255,"author":{"gitId":"Cedricaca"},"content":" System.out.println(\"You have no tasks in your list!\");","lastModifiedDate":"2024-01-23"},{"lineNumber":256,"author":{"gitId":"Cedricaca"},"content":" } else {","lastModifiedDate":"2024-01-23"},{"lineNumber":257,"author":{"gitId":"Cedricaca"},"content":" System.out.println(\"Here are your tasks in your list:\");","lastModifiedDate":"2024-01-23"},{"lineNumber":258,"author":{"gitId":"Cedricaca"},"content":" for (int x \u003d 0; x \u003c length; x++) {","lastModifiedDate":"2024-01-23"},{"lineNumber":259,"author":{"gitId":"Cedricaca"},"content":" Task item \u003d List.get(x);","lastModifiedDate":"2024-01-23"},{"lineNumber":260,"author":{"gitId":"Cedricaca"},"content":" int numeric \u003d x + 1;","lastModifiedDate":"2024-01-23"},{"lineNumber":261,"author":{"gitId":"Cedricaca"},"content":" System.out.println(numeric + \".\" + item.toString());","lastModifiedDate":"2024-01-23"},{"lineNumber":262,"author":{"gitId":"Cedricaca"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":263,"author":{"gitId":"Cedricaca"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":264,"author":{"gitId":"Cedricaca"},"content":" } else if (mDelete.find()) {","lastModifiedDate":"2024-01-23"},{"lineNumber":265,"author":{"gitId":"Cedricaca"},"content":" String captured \u003d mDelete.group(1);","lastModifiedDate":"2024-01-23"},{"lineNumber":266,"author":{"gitId":"Cedricaca"},"content":" int number \u003d Integer.parseInt(captured);","lastModifiedDate":"2024-01-23"},{"lineNumber":267,"author":{"gitId":"Cedricaca"},"content":" if (number \u003e 0 \u0026\u0026 number \u003c length + 1 ) {","lastModifiedDate":"2024-01-23"},{"lineNumber":268,"author":{"gitId":"Cedricaca"},"content":" Task t \u003d List.get(number - 1);","lastModifiedDate":"2024-01-23"},{"lineNumber":269,"author":{"gitId":"Cedricaca"},"content":" List.remove(t);","lastModifiedDate":"2024-01-23"},{"lineNumber":270,"author":{"gitId":"Cedricaca"},"content":" length \u003d length - 1;","lastModifiedDate":"2024-01-23"},{"lineNumber":271,"author":{"gitId":"Cedricaca"},"content":" System.out.println(\"OK! I have deleted this task:\");","lastModifiedDate":"2024-01-23"},{"lineNumber":272,"author":{"gitId":"Cedricaca"},"content":" System.out.println(t);","lastModifiedDate":"2024-01-23"},{"lineNumber":273,"author":{"gitId":"Cedricaca"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":274,"author":{"gitId":"Cedricaca"},"content":" int lineToDelete \u003d number - 1;","lastModifiedDate":"2024-01-30"},{"lineNumber":275,"author":{"gitId":"Cedricaca"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":276,"author":{"gitId":"Cedricaca"},"content":" // Read the content of the file","lastModifiedDate":"2024-01-30"},{"lineNumber":277,"author":{"gitId":"Cedricaca"},"content":" ArrayList\u003cString\u003e lines \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-30"},{"lineNumber":278,"author":{"gitId":"Cedricaca"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":279,"author":{"gitId":"Cedricaca"},"content":" try (BufferedReader reader \u003d new BufferedReader(new FileReader(file))) {","lastModifiedDate":"2024-01-30"},{"lineNumber":280,"author":{"gitId":"Cedricaca"},"content":" String currentLine;","lastModifiedDate":"2024-01-30"},{"lineNumber":281,"author":{"gitId":"Cedricaca"},"content":" int currLine \u003d 0;","lastModifiedDate":"2024-01-30"},{"lineNumber":282,"author":{"gitId":"Cedricaca"},"content":" while ((currentLine \u003d reader.readLine()) !\u003d null) {","lastModifiedDate":"2024-01-30"},{"lineNumber":283,"author":{"gitId":"Cedricaca"},"content":" // Check if the line should be deleted","lastModifiedDate":"2024-01-30"},{"lineNumber":284,"author":{"gitId":"Cedricaca"},"content":" if (currLine !\u003d lineToDelete) {","lastModifiedDate":"2024-01-30"},{"lineNumber":285,"author":{"gitId":"Cedricaca"},"content":" lines.add(currentLine);","lastModifiedDate":"2024-01-30"},{"lineNumber":286,"author":{"gitId":"Cedricaca"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":287,"author":{"gitId":"Cedricaca"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":288,"author":{"gitId":"Cedricaca"},"content":" currLine \u003d currLine + 1;","lastModifiedDate":"2024-01-30"},{"lineNumber":289,"author":{"gitId":"Cedricaca"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":290,"author":{"gitId":"Cedricaca"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":291,"author":{"gitId":"Cedricaca"},"content":" System.err.println(\"Error reading file: \" + e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":292,"author":{"gitId":"Cedricaca"},"content":" return;","lastModifiedDate":"2024-01-30"},{"lineNumber":293,"author":{"gitId":"Cedricaca"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":294,"author":{"gitId":"Cedricaca"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":295,"author":{"gitId":"Cedricaca"},"content":" // Write the modified content back to the file","lastModifiedDate":"2024-01-30"},{"lineNumber":296,"author":{"gitId":"Cedricaca"},"content":" try (BufferedWriter writer \u003d new BufferedWriter(new FileWriter(file))) {","lastModifiedDate":"2024-01-30"},{"lineNumber":297,"author":{"gitId":"Cedricaca"},"content":" for (String modifiedLine : lines) {","lastModifiedDate":"2024-01-30"},{"lineNumber":298,"author":{"gitId":"Cedricaca"},"content":" writer.write(modifiedLine);","lastModifiedDate":"2024-01-30"},{"lineNumber":299,"author":{"gitId":"Cedricaca"},"content":" writer.newLine(); // Add a newline character after each line","lastModifiedDate":"2024-01-30"},{"lineNumber":300,"author":{"gitId":"Cedricaca"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":301,"author":{"gitId":"Cedricaca"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":302,"author":{"gitId":"Cedricaca"},"content":" System.err.println(\"Error writing to file: \" + e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":303,"author":{"gitId":"Cedricaca"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":304,"author":{"gitId":"Cedricaca"},"content":" } else {","lastModifiedDate":"2024-01-23"},{"lineNumber":305,"author":{"gitId":"Cedricaca"},"content":" System.out.println(\"Please input a valid number.\");","lastModifiedDate":"2024-01-23"},{"lineNumber":306,"author":{"gitId":"Cedricaca"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":307,"author":{"gitId":"Cedricaca"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":308,"author":{"gitId":"Cedricaca"},"content":" } else if (mUnmark.find()) {","lastModifiedDate":"2024-01-23"},{"lineNumber":309,"author":{"gitId":"Cedricaca"},"content":" String captured \u003d mUnmark.group(1);","lastModifiedDate":"2024-01-23"},{"lineNumber":310,"author":{"gitId":"Cedricaca"},"content":" int number \u003d Integer.parseInt(captured);","lastModifiedDate":"2024-01-23"},{"lineNumber":311,"author":{"gitId":"Cedricaca"},"content":" Task t;","lastModifiedDate":"2024-01-23"},{"lineNumber":312,"author":{"gitId":"Cedricaca"},"content":" if (number \u003e 0 \u0026\u0026 number \u003c length + 1) {","lastModifiedDate":"2024-01-23"},{"lineNumber":313,"author":{"gitId":"Cedricaca"},"content":" t \u003d List.get(number - 1);","lastModifiedDate":"2024-01-23"},{"lineNumber":314,"author":{"gitId":"Cedricaca"},"content":" t.unmark();","lastModifiedDate":"2024-01-23"},{"lineNumber":315,"author":{"gitId":"Cedricaca"},"content":" System.out.println(\"Oh no! I have marked this as not done:\");","lastModifiedDate":"2024-01-23"},{"lineNumber":316,"author":{"gitId":"Cedricaca"},"content":" System.out.println(t);","lastModifiedDate":"2024-01-23"},{"lineNumber":317,"author":{"gitId":"Cedricaca"},"content":" int lineToUnmark \u003d number - 1;","lastModifiedDate":"2024-01-30"},{"lineNumber":318,"author":{"gitId":"Cedricaca"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":319,"author":{"gitId":"Cedricaca"},"content":" // Read the content of the file","lastModifiedDate":"2024-01-30"},{"lineNumber":320,"author":{"gitId":"Cedricaca"},"content":" ArrayList\u003cString\u003e lines \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-30"},{"lineNumber":321,"author":{"gitId":"Cedricaca"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":322,"author":{"gitId":"Cedricaca"},"content":" try (BufferedReader reader \u003d new BufferedReader(new FileReader(file))) {","lastModifiedDate":"2024-01-30"},{"lineNumber":323,"author":{"gitId":"Cedricaca"},"content":" String currentLine;","lastModifiedDate":"2024-01-30"},{"lineNumber":324,"author":{"gitId":"Cedricaca"},"content":" int currLine \u003d 0;","lastModifiedDate":"2024-01-30"},{"lineNumber":325,"author":{"gitId":"Cedricaca"},"content":" while ((currentLine \u003d reader.readLine()) !\u003d null) {","lastModifiedDate":"2024-01-30"},{"lineNumber":326,"author":{"gitId":"Cedricaca"},"content":" // Check if the line should be deleted","lastModifiedDate":"2024-01-30"},{"lineNumber":327,"author":{"gitId":"Cedricaca"},"content":" if (currLine \u003d\u003d lineToUnmark) {","lastModifiedDate":"2024-01-30"},{"lineNumber":328,"author":{"gitId":"Cedricaca"},"content":" currentLine\u003dt.export();","lastModifiedDate":"2024-01-30"},{"lineNumber":329,"author":{"gitId":"Cedricaca"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":330,"author":{"gitId":"Cedricaca"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":331,"author":{"gitId":"Cedricaca"},"content":" lines.add(currentLine);","lastModifiedDate":"2024-01-30"},{"lineNumber":332,"author":{"gitId":"Cedricaca"},"content":" currLine \u003d currLine + 1;","lastModifiedDate":"2024-01-30"},{"lineNumber":333,"author":{"gitId":"Cedricaca"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":334,"author":{"gitId":"Cedricaca"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":335,"author":{"gitId":"Cedricaca"},"content":" System.err.println(\"Error reading file: \" + e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":336,"author":{"gitId":"Cedricaca"},"content":" return;","lastModifiedDate":"2024-01-30"},{"lineNumber":337,"author":{"gitId":"Cedricaca"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":338,"author":{"gitId":"Cedricaca"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":339,"author":{"gitId":"Cedricaca"},"content":" // Write the modified content back to the file","lastModifiedDate":"2024-01-30"},{"lineNumber":340,"author":{"gitId":"Cedricaca"},"content":" try (BufferedWriter writer \u003d new BufferedWriter(new FileWriter(file))) {","lastModifiedDate":"2024-01-30"},{"lineNumber":341,"author":{"gitId":"Cedricaca"},"content":" for (String modifiedLine : lines) {","lastModifiedDate":"2024-01-30"},{"lineNumber":342,"author":{"gitId":"Cedricaca"},"content":" writer.write(modifiedLine);","lastModifiedDate":"2024-01-30"},{"lineNumber":343,"author":{"gitId":"Cedricaca"},"content":" writer.newLine(); // Add a newline character after each line","lastModifiedDate":"2024-01-30"},{"lineNumber":344,"author":{"gitId":"Cedricaca"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":345,"author":{"gitId":"Cedricaca"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":346,"author":{"gitId":"Cedricaca"},"content":" System.err.println(\"Error writing to file: \" + e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":347,"author":{"gitId":"Cedricaca"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":348,"author":{"gitId":"Cedricaca"},"content":" } else {","lastModifiedDate":"2024-01-23"},{"lineNumber":349,"author":{"gitId":"Cedricaca"},"content":" System.out.println(\"Please input a valid number.\");","lastModifiedDate":"2024-01-23"},{"lineNumber":350,"author":{"gitId":"Cedricaca"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":351,"author":{"gitId":"Cedricaca"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":352,"author":{"gitId":"Cedricaca"},"content":" } else if (mMark.find()) {","lastModifiedDate":"2024-01-23"},{"lineNumber":353,"author":{"gitId":"Cedricaca"},"content":" String captured \u003d mMark.group(1);","lastModifiedDate":"2024-01-23"},{"lineNumber":354,"author":{"gitId":"Cedricaca"},"content":" int number \u003d Integer.parseInt(captured);","lastModifiedDate":"2024-01-23"},{"lineNumber":355,"author":{"gitId":"Cedricaca"},"content":" Task t;","lastModifiedDate":"2024-01-23"},{"lineNumber":356,"author":{"gitId":"Cedricaca"},"content":" if (number \u003e 0 \u0026\u0026 number \u003c length + 1) {","lastModifiedDate":"2024-01-23"},{"lineNumber":357,"author":{"gitId":"Cedricaca"},"content":" t \u003d List.get(number -1);","lastModifiedDate":"2024-01-23"},{"lineNumber":358,"author":{"gitId":"Cedricaca"},"content":" t.mark();","lastModifiedDate":"2024-01-23"},{"lineNumber":359,"author":{"gitId":"Cedricaca"},"content":" System.out.println(\"Nice! I have marked this as done:\");","lastModifiedDate":"2024-01-23"},{"lineNumber":360,"author":{"gitId":"Cedricaca"},"content":" System.out.println(t);","lastModifiedDate":"2024-01-23"},{"lineNumber":361,"author":{"gitId":"Cedricaca"},"content":" int lineToMark \u003d number - 1;","lastModifiedDate":"2024-01-30"},{"lineNumber":362,"author":{"gitId":"Cedricaca"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":363,"author":{"gitId":"Cedricaca"},"content":" // Read the content of the file","lastModifiedDate":"2024-01-30"},{"lineNumber":364,"author":{"gitId":"Cedricaca"},"content":" ArrayList\u003cString\u003e lines \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-30"},{"lineNumber":365,"author":{"gitId":"Cedricaca"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":366,"author":{"gitId":"Cedricaca"},"content":" try (BufferedReader reader \u003d new BufferedReader(new FileReader(file))) {","lastModifiedDate":"2024-01-30"},{"lineNumber":367,"author":{"gitId":"Cedricaca"},"content":" String currentLine;","lastModifiedDate":"2024-01-30"},{"lineNumber":368,"author":{"gitId":"Cedricaca"},"content":" int currLine \u003d 0;","lastModifiedDate":"2024-01-30"},{"lineNumber":369,"author":{"gitId":"Cedricaca"},"content":" while ((currentLine \u003d reader.readLine()) !\u003d null) {","lastModifiedDate":"2024-01-30"},{"lineNumber":370,"author":{"gitId":"Cedricaca"},"content":" // Check if the line should be deleted","lastModifiedDate":"2024-01-30"},{"lineNumber":371,"author":{"gitId":"Cedricaca"},"content":" if (currLine \u003d\u003d lineToMark) {","lastModifiedDate":"2024-01-30"},{"lineNumber":372,"author":{"gitId":"Cedricaca"},"content":" currentLine \u003d t.export();","lastModifiedDate":"2024-01-30"},{"lineNumber":373,"author":{"gitId":"Cedricaca"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":374,"author":{"gitId":"Cedricaca"},"content":" lines.add(currentLine);","lastModifiedDate":"2024-01-30"},{"lineNumber":375,"author":{"gitId":"Cedricaca"},"content":" currLine \u003d currLine + 1;","lastModifiedDate":"2024-01-30"},{"lineNumber":376,"author":{"gitId":"Cedricaca"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":377,"author":{"gitId":"Cedricaca"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":378,"author":{"gitId":"Cedricaca"},"content":" System.err.println(\"Error reading file: \" + e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":379,"author":{"gitId":"Cedricaca"},"content":" return;","lastModifiedDate":"2024-01-30"},{"lineNumber":380,"author":{"gitId":"Cedricaca"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":381,"author":{"gitId":"Cedricaca"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":382,"author":{"gitId":"Cedricaca"},"content":" // Write the modified content back to the file","lastModifiedDate":"2024-01-30"},{"lineNumber":383,"author":{"gitId":"Cedricaca"},"content":" try (BufferedWriter writer \u003d new BufferedWriter(new FileWriter(file))) {","lastModifiedDate":"2024-01-30"},{"lineNumber":384,"author":{"gitId":"Cedricaca"},"content":" for (String modifiedLine : lines) {","lastModifiedDate":"2024-01-30"},{"lineNumber":385,"author":{"gitId":"Cedricaca"},"content":" writer.write(modifiedLine);","lastModifiedDate":"2024-01-30"},{"lineNumber":386,"author":{"gitId":"Cedricaca"},"content":" writer.newLine(); // Add a newline character after each line","lastModifiedDate":"2024-01-30"},{"lineNumber":387,"author":{"gitId":"Cedricaca"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":388,"author":{"gitId":"Cedricaca"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":389,"author":{"gitId":"Cedricaca"},"content":" System.err.println(\"Error writing to file: \" + e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":390,"author":{"gitId":"Cedricaca"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":391,"author":{"gitId":"Cedricaca"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":392,"author":{"gitId":"Cedricaca"},"content":" } else {","lastModifiedDate":"2024-01-23"},{"lineNumber":393,"author":{"gitId":"Cedricaca"},"content":" System.out.println(\"Please input a valid number.\");","lastModifiedDate":"2024-01-23"},{"lineNumber":394,"author":{"gitId":"Cedricaca"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":395,"author":{"gitId":"Cedricaca"},"content":" } else if (mTodo.find()) {","lastModifiedDate":"2024-01-23"},{"lineNumber":396,"author":{"gitId":"Cedricaca"},"content":" String newInput \u003d input.replace(todo, \"\");","lastModifiedDate":"2024-01-23"},{"lineNumber":397,"author":{"gitId":"Cedricaca"},"content":" Todo n \u003d new Todo(newInput, false);","lastModifiedDate":"2024-01-23"},{"lineNumber":398,"author":{"gitId":"Cedricaca"},"content":" if (newInput.trim().equals(\"\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":399,"author":{"gitId":"Cedricaca"},"content":" System.out.println(\"Task cannot be empty!\");","lastModifiedDate":"2024-01-23"},{"lineNumber":400,"author":{"gitId":"Cedricaca"},"content":" } else {","lastModifiedDate":"2024-01-23"},{"lineNumber":401,"author":{"gitId":"Cedricaca"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":402,"author":{"gitId":"Cedricaca"},"content":" List.add(n);","lastModifiedDate":"2024-01-23"},{"lineNumber":403,"author":{"gitId":"Cedricaca"},"content":" length \u003d length + 1;","lastModifiedDate":"2024-01-23"},{"lineNumber":404,"author":{"gitId":"Cedricaca"},"content":" System.out.println(\"OK, I have added this task :\");","lastModifiedDate":"2024-01-23"},{"lineNumber":405,"author":{"gitId":"Cedricaca"},"content":" System.out.println(n);","lastModifiedDate":"2024-01-23"},{"lineNumber":406,"author":{"gitId":"Cedricaca"},"content":" System.out.println(\"You now have \" + length + \" items in the list.\");","lastModifiedDate":"2024-01-23"},{"lineNumber":407,"author":{"gitId":"Cedricaca"},"content":" try (BufferedWriter writer \u003d new BufferedWriter(new FileWriter(file, true))) {","lastModifiedDate":"2024-01-30"},{"lineNumber":408,"author":{"gitId":"Cedricaca"},"content":" writer.write(n.export());","lastModifiedDate":"2024-01-30"},{"lineNumber":409,"author":{"gitId":"Cedricaca"},"content":" writer.newLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":410,"author":{"gitId":"Cedricaca"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":411,"author":{"gitId":"Cedricaca"},"content":" System.err.println(\"Error writing to file: \" + e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":412,"author":{"gitId":"Cedricaca"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":413,"author":{"gitId":"Cedricaca"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":414,"author":{"gitId":"Cedricaca"},"content":" } else if (mEvent.find()) {","lastModifiedDate":"2024-01-23"},{"lineNumber":415,"author":{"gitId":"Cedricaca"},"content":" if (mFrom.find() \u0026\u0026 mTo.find()) {","lastModifiedDate":"2024-01-23"},{"lineNumber":416,"author":{"gitId":"Cedricaca"},"content":" int startIndex \u003d input.indexOf(from);","lastModifiedDate":"2024-01-23"},{"lineNumber":417,"author":{"gitId":"Cedricaca"},"content":" int startIndexTo \u003d input.indexOf(to);","lastModifiedDate":"2024-01-23"},{"lineNumber":418,"author":{"gitId":"Cedricaca"},"content":" String subFrom \u003d input.substring(startIndex + from.length(), startIndexTo-1);","lastModifiedDate":"2024-01-30"},{"lineNumber":419,"author":{"gitId":"Cedricaca"},"content":" String subTo \u003d input.substring(startIndexTo + to.length());","lastModifiedDate":"2024-01-23"},{"lineNumber":420,"author":{"gitId":"Cedricaca"},"content":" String newInput \u003d input.substring(input.indexOf(event) + event.length(), startIndex);","lastModifiedDate":"2024-01-23"},{"lineNumber":421,"author":{"gitId":"Cedricaca"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\" yyyy-MM-dd HH:mm\");","lastModifiedDate":"2024-01-30"},{"lineNumber":422,"author":{"gitId":"Cedricaca"},"content":" LocalDateTime ldt \u003d null;","lastModifiedDate":"2024-01-30"},{"lineNumber":423,"author":{"gitId":"Cedricaca"},"content":" LocalDateTime ldt2 \u003d null;","lastModifiedDate":"2024-01-30"},{"lineNumber":424,"author":{"gitId":"Cedricaca"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":425,"author":{"gitId":"Cedricaca"},"content":" // Parse the string into a LocalDate object","lastModifiedDate":"2024-01-30"},{"lineNumber":426,"author":{"gitId":"Cedricaca"},"content":" ldt \u003d LocalDateTime.parse(subFrom, formatter);","lastModifiedDate":"2024-01-30"},{"lineNumber":427,"author":{"gitId":"Cedricaca"},"content":" ldt2 \u003d LocalDateTime.parse(subTo, formatter);","lastModifiedDate":"2024-01-30"},{"lineNumber":428,"author":{"gitId":"Cedricaca"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":429,"author":{"gitId":"Cedricaca"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":430,"author":{"gitId":"Cedricaca"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":431,"author":{"gitId":"Cedricaca"},"content":" // Handle parsing exceptions","lastModifiedDate":"2024-01-30"},{"lineNumber":432,"author":{"gitId":"Cedricaca"},"content":" System.out.println(\"Please enter a valid date/time\");","lastModifiedDate":"2024-01-30"},{"lineNumber":433,"author":{"gitId":"Cedricaca"},"content":" continue;","lastModifiedDate":"2024-01-30"},{"lineNumber":434,"author":{"gitId":"Cedricaca"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":435,"author":{"gitId":"Cedricaca"},"content":" if (newInput.trim().equals(\"\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":436,"author":{"gitId":"Cedricaca"},"content":" System.out.println(\"Task cannot be empty!\");","lastModifiedDate":"2024-01-23"},{"lineNumber":437,"author":{"gitId":"Cedricaca"},"content":" } else {","lastModifiedDate":"2024-01-23"},{"lineNumber":438,"author":{"gitId":"Cedricaca"},"content":" Event n \u003d new Event(newInput, false, ldt, ldt2);","lastModifiedDate":"2024-01-30"},{"lineNumber":439,"author":{"gitId":"Cedricaca"},"content":" List.add(n);","lastModifiedDate":"2024-01-23"},{"lineNumber":440,"author":{"gitId":"Cedricaca"},"content":" length \u003d length + 1;","lastModifiedDate":"2024-01-23"},{"lineNumber":441,"author":{"gitId":"Cedricaca"},"content":" System.out.println(\"OK, I have added this task :\");","lastModifiedDate":"2024-01-23"},{"lineNumber":442,"author":{"gitId":"Cedricaca"},"content":" System.out.println(n);","lastModifiedDate":"2024-01-23"},{"lineNumber":443,"author":{"gitId":"Cedricaca"},"content":" System.out.println(\"You now have \" + length + \" items in the list.\");","lastModifiedDate":"2024-01-23"},{"lineNumber":444,"author":{"gitId":"Cedricaca"},"content":" try (BufferedWriter writer \u003d new BufferedWriter(new FileWriter(file, true))) {","lastModifiedDate":"2024-01-30"},{"lineNumber":445,"author":{"gitId":"Cedricaca"},"content":" writer.write(n.export());","lastModifiedDate":"2024-01-30"},{"lineNumber":446,"author":{"gitId":"Cedricaca"},"content":" writer.newLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":447,"author":{"gitId":"Cedricaca"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":448,"author":{"gitId":"Cedricaca"},"content":" System.err.println(\"Error writing to file: \" + e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":449,"author":{"gitId":"Cedricaca"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":450,"author":{"gitId":"Cedricaca"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":451,"author":{"gitId":"Cedricaca"},"content":" } else {","lastModifiedDate":"2024-01-23"},{"lineNumber":452,"author":{"gitId":"Cedricaca"},"content":" System.out.println(\"pls input your start and end of the event.\");","lastModifiedDate":"2024-01-23"},{"lineNumber":453,"author":{"gitId":"Cedricaca"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":454,"author":{"gitId":"Cedricaca"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":455,"author":{"gitId":"Cedricaca"},"content":" } else if (mDeadline.find()) {","lastModifiedDate":"2024-01-23"},{"lineNumber":456,"author":{"gitId":"Cedricaca"},"content":" if (mBy.find()) {","lastModifiedDate":"2024-01-23"},{"lineNumber":457,"author":{"gitId":"Cedricaca"},"content":" int finalIndex \u003d input.indexOf(by) + by.length();","lastModifiedDate":"2024-01-23"},{"lineNumber":458,"author":{"gitId":"Cedricaca"},"content":" String dL \u003d input.substring(finalIndex);","lastModifiedDate":"2024-01-23"},{"lineNumber":459,"author":{"gitId":"Cedricaca"},"content":" String newInput \u003d input.substring(input.indexOf(deadline) + deadline.length(), input.indexOf(by));","lastModifiedDate":"2024-01-23"},{"lineNumber":460,"author":{"gitId":"Cedricaca"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\" yyyy-MM-dd HH:mm\");","lastModifiedDate":"2024-01-30"},{"lineNumber":461,"author":{"gitId":"Cedricaca"},"content":" LocalDateTime ldt \u003d null;","lastModifiedDate":"2024-01-30"},{"lineNumber":462,"author":{"gitId":"Cedricaca"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":463,"author":{"gitId":"Cedricaca"},"content":" // Parse the string into a LocalDate object","lastModifiedDate":"2024-01-30"},{"lineNumber":464,"author":{"gitId":"Cedricaca"},"content":" ldt \u003d LocalDateTime.parse(dL, formatter);","lastModifiedDate":"2024-01-30"},{"lineNumber":465,"author":{"gitId":"Cedricaca"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":466,"author":{"gitId":"Cedricaca"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":467,"author":{"gitId":"Cedricaca"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":468,"author":{"gitId":"Cedricaca"},"content":" // Handle parsing exceptions","lastModifiedDate":"2024-01-30"},{"lineNumber":469,"author":{"gitId":"Cedricaca"},"content":" System.out.println(\"Please enter a valid date/time\");","lastModifiedDate":"2024-01-30"},{"lineNumber":470,"author":{"gitId":"Cedricaca"},"content":" continue;","lastModifiedDate":"2024-01-30"},{"lineNumber":471,"author":{"gitId":"Cedricaca"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":472,"author":{"gitId":"Cedricaca"},"content":" if (newInput.trim().equals(\"\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":473,"author":{"gitId":"Cedricaca"},"content":" System.out.println(\"Task cannot be empty!\");","lastModifiedDate":"2024-01-23"},{"lineNumber":474,"author":{"gitId":"Cedricaca"},"content":" } else {","lastModifiedDate":"2024-01-23"},{"lineNumber":475,"author":{"gitId":"Cedricaca"},"content":" Deadline n \u003d new Deadline(newInput, false, ldt);","lastModifiedDate":"2024-01-30"},{"lineNumber":476,"author":{"gitId":"Cedricaca"},"content":" List.add(n);","lastModifiedDate":"2024-01-23"},{"lineNumber":477,"author":{"gitId":"Cedricaca"},"content":" length \u003d length + 1;","lastModifiedDate":"2024-01-23"},{"lineNumber":478,"author":{"gitId":"Cedricaca"},"content":" System.out.println(\"OK, I have added this task :\");","lastModifiedDate":"2024-01-23"},{"lineNumber":479,"author":{"gitId":"Cedricaca"},"content":" System.out.println(n);","lastModifiedDate":"2024-01-23"},{"lineNumber":480,"author":{"gitId":"Cedricaca"},"content":" System.out.println(\"You now have \" + length + \" items in the list.\");","lastModifiedDate":"2024-01-23"},{"lineNumber":481,"author":{"gitId":"Cedricaca"},"content":" try (BufferedWriter writer \u003d new BufferedWriter(new FileWriter(file, true))) {","lastModifiedDate":"2024-01-30"},{"lineNumber":482,"author":{"gitId":"Cedricaca"},"content":" writer.write(n.export());","lastModifiedDate":"2024-01-30"},{"lineNumber":483,"author":{"gitId":"Cedricaca"},"content":" writer.newLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":484,"author":{"gitId":"Cedricaca"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":485,"author":{"gitId":"Cedricaca"},"content":" System.err.println(\"Error writing to file: \" + e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":486,"author":{"gitId":"Cedricaca"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":487,"author":{"gitId":"Cedricaca"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":488,"author":{"gitId":"Cedricaca"},"content":" } else {","lastModifiedDate":"2024-01-23"},{"lineNumber":489,"author":{"gitId":"Cedricaca"},"content":" System.out.println(\"please include a deadline\");","lastModifiedDate":"2024-01-23"},{"lineNumber":490,"author":{"gitId":"Cedricaca"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":491,"author":{"gitId":"Cedricaca"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":492,"author":{"gitId":"Cedricaca"},"content":" } else {","lastModifiedDate":"2024-01-23"},{"lineNumber":493,"author":{"gitId":"Cedricaca"},"content":" System.out.println(\"Sorry, no idea what u talking about lulz\");","lastModifiedDate":"2024-01-23"},{"lineNumber":494,"author":{"gitId":"Cedricaca"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":495,"author":{"gitId":"Cedricaca"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":496,"author":{"gitId":"Cedricaca"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":497,"author":{"gitId":"Cedricaca"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":498,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":499,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"-":4,"Cedricaca":495}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"Cedricaca"},"content":"reset","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Cedricaca"},"content":"todo bruh","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"Cedricaca"},"content":"event nig /from asd /to lalala","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"Cedricaca"},"content":"deadline laugh /by tomorrow","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"Cedricaca"},"content":"mark 2","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"Cedricaca"},"content":"unmark 2","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"Cedricaca"},"content":"delete 3","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"Cedricaca"},"content":"list","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"Cedricaca"},"content":"bye","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"Cedricaca":9}},{"path":"text-ui-test/runtest.sh","fileType":"sh","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"#!/usr/bin/env bash","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"# create bin directory if it doesn\u0027t exist","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"if [ ! -d \"../bin\" ]","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":" mkdir ../bin","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"# delete output from previous run","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"if [ -e \"./ACTUAL.TXT\" ]","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":" rm ACTUAL.TXT","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"# compile the code into the bin folder, terminates if error occurred","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"if ! javac -cp ../src/main/java -Xlint:none -d ../bin ../src/main/java/*.java","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" echo \"********** BUILD FAILURE **********\"","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" exit 1","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":"# run the program, feed commands from input.txt file and redirect the output to the ACTUAL.TXT","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"-"},"content":"java -classpath ../bin Duke \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"Cedricaca"},"content":"# compare the output to the expected output","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"Cedricaca"},"content":"diff ACTUAL.TXT EXPECTED.TXT","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"Cedricaca"},"content":"if [ $? -eq 0 ]","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"Cedricaca"},"content":"then","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"Cedricaca"},"content":" echo \"Test result: PASSED\"","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"Cedricaca"},"content":" exit 0","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"Cedricaca"},"content":"else","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"Cedricaca"},"content":" echo \"Test result: FAILED\"","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"Cedricaca"},"content":" exit 1","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"Cedricaca"},"content":"fi","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"Cedricaca"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"-"},"content":"# run the program, feed commands from input.txt file and redirect the output to the ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"Cedricaca"},"content":"java -classpath /Users/cedrictan/git/ip/bin Duke \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":"# convert to UNIX format","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":"cp EXPECTED.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":"dos2unix ACTUAL.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":"# compare the output to the expected output","lastModifiedDate":"2020-05-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":"diff ACTUAL.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":45,"author":{"gitId":"-"},"content":"if [ $? -eq 0 ]","lastModifiedDate":"2020-05-25"},{"lineNumber":46,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":47,"author":{"gitId":"-"},"content":" echo \"Test result: PASSED\"","lastModifiedDate":"2020-05-25"},{"lineNumber":48,"author":{"gitId":"-"},"content":" exit 0","lastModifiedDate":"2020-05-25"},{"lineNumber":49,"author":{"gitId":"-"},"content":"else","lastModifiedDate":"2020-05-25"},{"lineNumber":50,"author":{"gitId":"-"},"content":" echo \"Test result: FAILED\"","lastModifiedDate":"2020-05-25"},{"lineNumber":51,"author":{"gitId":"-"},"content":" exit 1","lastModifiedDate":"2020-05-25"},{"lineNumber":52,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"-":40,"Cedricaca":12}}] diff --git a/Cedricaca_ip_master/commits.json b/Cedricaca_ip_master/commits.json index 294bcc24..809d548e 100644 --- a/Cedricaca_ip_master/commits.json +++ b/Cedricaca_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"Cedricaca":[{"date":"2024-01-23","commitResults":[{"hash":"2f4aa6f444f67be5ab6a7d06887531c54f6f9cff","isMergeCommit":false,"messageTitle":"Level-0","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":1}}},{"hash":"f6c3a6e1a145d03296d90e4d87a2800237c1b923","isMergeCommit":false,"messageTitle":"Level-1","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":16,"deletions":6}}},{"hash":"4fbaf41535edc99daab66808905759df42ec66a9","isMergeCommit":false,"messageTitle":"Level-2","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":17,"deletions":2}}},{"hash":"4b03fe80df8cdd50af9648ef3b5d6f3b1746e576","isMergeCommit":false,"messageTitle":"Level-3","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":60,"deletions":5}}},{"hash":"60c90c6e1a4586d10ac1635617b035be6c8d0ad4","isMergeCommit":false,"messageTitle":"Level-3 improved","messageBody":"","tags":["Level-3-improved"],"fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":4}}},{"hash":"723137d51440f93f9df349a1c7c61075c4d4dd0a","isMergeCommit":false,"messageTitle":"Level-4","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":106,"deletions":14}}},{"hash":"eb2b819a26fc147110508583fd70c20b723af670","isMergeCommit":false,"messageTitle":"Level-5","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":49,"deletions":33}}},{"hash":"dec6a23d495067f7ec5786289a29f3df9898d0ca","isMergeCommit":false,"messageTitle":"Level-6","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":32,"deletions":23}}}]},{"date":"2024-01-29","commitResults":[{"hash":"70697c89234f709e07ab7d68d5ccd98f6059a6f9","isMergeCommit":false,"messageTitle":"A-TextUiTesting","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":9,"deletions":0},"sh":{"insertions":6,"deletions":6}}}]}]},"authorFileTypeContributionMap":{"Cedricaca":{"java":215,"md":0,"fxml":0,"sh":6,"bat":0,"gradle":0,"txt":9}},"authorContributionVariance":{"Cedricaca":12152.81},"authorDisplayNameMap":{"Cedricaca":"CS2103T-W13-3 TAN ..DRIC"}} +{"authorDailyContributionsMap":{"Cedricaca":[{"date":"2024-01-23","commitResults":[{"hash":"2f4aa6f444f67be5ab6a7d06887531c54f6f9cff","isMergeCommit":false,"messageTitle":"Level-0","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":1}}},{"hash":"f6c3a6e1a145d03296d90e4d87a2800237c1b923","isMergeCommit":false,"messageTitle":"Level-1","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":16,"deletions":6}}},{"hash":"4fbaf41535edc99daab66808905759df42ec66a9","isMergeCommit":false,"messageTitle":"Level-2","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":17,"deletions":2}}},{"hash":"4b03fe80df8cdd50af9648ef3b5d6f3b1746e576","isMergeCommit":false,"messageTitle":"Level-3","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":60,"deletions":5}}},{"hash":"60c90c6e1a4586d10ac1635617b035be6c8d0ad4","isMergeCommit":false,"messageTitle":"Level-3 improved","messageBody":"","tags":["Level-3-improved"],"fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":4}}},{"hash":"723137d51440f93f9df349a1c7c61075c4d4dd0a","isMergeCommit":false,"messageTitle":"Level-4","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":106,"deletions":14}}},{"hash":"eb2b819a26fc147110508583fd70c20b723af670","isMergeCommit":false,"messageTitle":"Level-5","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":49,"deletions":33}}},{"hash":"dec6a23d495067f7ec5786289a29f3df9898d0ca","isMergeCommit":false,"messageTitle":"Level-6","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":32,"deletions":23}}}]},{"date":"2024-01-29","commitResults":[{"hash":"70697c89234f709e07ab7d68d5ccd98f6059a6f9","isMergeCommit":false,"messageTitle":"A-TextUiTesting","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":9,"deletions":0},"sh":{"insertions":6,"deletions":6}}}]},{"date":"2024-01-30","commitResults":[{"hash":"2b96e96186c8b151ae4d2c1d4c3b39ac1635376d","isMergeCommit":false,"messageTitle":"Level-7","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":1},"java":{"insertions":233,"deletions":6},"sh":{"insertions":19,"deletions":5}}},{"hash":"5bba9cb54c4be1149dcf3e6f259f0f7e64408bb3","isMergeCommit":false,"messageTitle":"Level-8","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{"java":{"insertions":77,"deletions":21}}},{"hash":"10ec5526918f789004a3833a70bbdc46c450840e","isMergeCommit":false,"messageTitle":"Level-8","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":7}}}]}]},"authorFileTypeContributionMap":{"Cedricaca":{"java":495,"md":0,"fxml":0,"sh":12,"bat":0,"gradle":0,"txt":9}},"authorContributionVariance":{"Cedricaca":19820.166},"authorDisplayNameMap":{"Cedricaca":"CS2103T-W13-3 TAN ..DRIC"}} diff --git a/ChrysanthemumT_ip_master/commits.json b/ChrysanthemumT_ip_master/commits.json index f7898d52..b83d656f 100644 --- a/ChrysanthemumT_ip_master/commits.json +++ b/ChrysanthemumT_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"ChrysanthemumT":[{"date":"2024-01-23","commitResults":[{"hash":"5b2b50e54cd9e1e5095d0480c88070d5159dddcb","isMergeCommit":false,"messageTitle":"basic skeleton","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":6}}},{"hash":"53f13b662becbd818cbe80f26d852b4dd3e16318","isMergeCommit":false,"messageTitle":"added echo","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":37,"deletions":10}}},{"hash":"2611fcf7d4177e75f21496d2997ef1a12f9733ff","isMergeCommit":false,"messageTitle":"add, list","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":49,"deletions":3}}},{"hash":"e855a884c4b2d2b2bf8c3b46fcf72b8c6507da38","isMergeCommit":false,"messageTitle":"Mark as Done complete","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":103,"deletions":11}}}]},{"date":"2024-01-24","commitResults":[{"hash":"46ce15c4dd3cfd1a3333f7999baf4268f84a7e16","isMergeCommit":false,"messageTitle":"level-4 added todo event deadline","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":145,"deletions":19}}},{"hash":"638ca9c9c8fb270ebf7d9180bb50871f628aa71c","isMergeCommit":false,"messageTitle":"automated testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":8,"deletions":0}}},{"hash":"51f7a9693aa90a8c82e1d26f2ea5770ad3d7c1b9","isMergeCommit":false,"messageTitle":"handled errors","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":173,"deletions":39}}}]},{"date":"2024-01-25","commitResults":[{"hash":"cacb6232322a3fb4400c5d957dbfd3f9aa28f239","isMergeCommit":false,"messageTitle":"added delete","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":33,"deletions":4}}}]},{"date":"2024-01-30","commitResults":[{"hash":"d8650e361311a8b1567d8a24d3fdfcb3d1c738a8","isMergeCommit":false,"messageTitle":"Add saving feature","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":6,"deletions":0},"java":{"insertions":147,"deletions":119}}},{"hash":"5d40a6d1ea3154e8729f9536c9647dd509488fdc","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027 Merge saving feature from branch to master","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"ChrysanthemumT":{"java":492,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":0,"txt":14}},"authorContributionVariance":{"ChrysanthemumT":17034.137},"authorDisplayNameMap":{"ChrysanthemumT":"CS2103T-W11-3 WANG..HONG"}} +{"authorDailyContributionsMap":{"ChrysanthemumT":[{"date":"2024-01-23","commitResults":[{"hash":"5b2b50e54cd9e1e5095d0480c88070d5159dddcb","isMergeCommit":false,"messageTitle":"basic skeleton","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":6}}},{"hash":"53f13b662becbd818cbe80f26d852b4dd3e16318","isMergeCommit":false,"messageTitle":"added echo","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":37,"deletions":10}}},{"hash":"2611fcf7d4177e75f21496d2997ef1a12f9733ff","isMergeCommit":false,"messageTitle":"add, list","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":49,"deletions":3}}},{"hash":"e855a884c4b2d2b2bf8c3b46fcf72b8c6507da38","isMergeCommit":false,"messageTitle":"Mark as Done complete","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":103,"deletions":11}}}]},{"date":"2024-01-24","commitResults":[{"hash":"46ce15c4dd3cfd1a3333f7999baf4268f84a7e16","isMergeCommit":false,"messageTitle":"level-4 added todo event deadline","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":145,"deletions":19}}},{"hash":"638ca9c9c8fb270ebf7d9180bb50871f628aa71c","isMergeCommit":false,"messageTitle":"automated testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":8,"deletions":0}}},{"hash":"51f7a9693aa90a8c82e1d26f2ea5770ad3d7c1b9","isMergeCommit":false,"messageTitle":"handled errors","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":173,"deletions":39}}}]},{"date":"2024-01-25","commitResults":[{"hash":"cacb6232322a3fb4400c5d957dbfd3f9aa28f239","isMergeCommit":false,"messageTitle":"added delete","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":33,"deletions":4}}}]},{"date":"2024-01-30","commitResults":[{"hash":"d8650e361311a8b1567d8a24d3fdfcb3d1c738a8","isMergeCommit":false,"messageTitle":"Add saving feature","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":6,"deletions":0},"java":{"insertions":147,"deletions":119}}},{"hash":"5d40a6d1ea3154e8729f9536c9647dd509488fdc","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027 Merge saving feature from branch to master","messageBody":"","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"ChrysanthemumT":{"java":492,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":0,"txt":14}},"authorContributionVariance":{"ChrysanthemumT":17034.137},"authorDisplayNameMap":{"ChrysanthemumT":"CS2103T-W11-3 WANG..HONG"}} diff --git a/ChuaZiLong_ip_master/authorship.json b/ChuaZiLong_ip_master/authorship.json index c5f3bbc3..5f86688b 100644 --- a/ChuaZiLong_ip_master/authorship.json +++ b/ChuaZiLong_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ChuaZiLong"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"ChuaZiLong"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"ChuaZiLong"},"content":"import java.util.Date;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"ChuaZiLong"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"ChuaZiLong"},"content":"import java.io.File;","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"ChuaZiLong"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"ChuaZiLong"},"content":"import java.io.PrintWriter;","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"ChuaZiLong"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"ChuaZiLong"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"ChuaZiLong"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"ChuaZiLong"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"ChuaZiLong"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"ChuaZiLong"},"content":"class DukeException extends Exception {","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"ChuaZiLong"},"content":" public DukeException(String message) {","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"ChuaZiLong"},"content":" super(message);","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"ChuaZiLong"},"content":"class Ui {","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"ChuaZiLong"},"content":" private Scanner scanner;","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"ChuaZiLong"},"content":" public Ui() {","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"ChuaZiLong"},"content":" scanner \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"ChuaZiLong"},"content":" public void showWelcome() {","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"Hello! I\u0027m SCZL\");","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"What can I do for you?\");","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"ChuaZiLong"},"content":" public void showGoodbye() {","lastModifiedDate":"2024-01-28"},{"lineNumber":33,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"Bye. Hope to see you again soon!\");","lastModifiedDate":"2024-01-28"},{"lineNumber":34,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":35,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"ChuaZiLong"},"content":" public void showError(String message) {","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(message);","lastModifiedDate":"2024-01-28"},{"lineNumber":38,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":39,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":40,"author":{"gitId":"ChuaZiLong"},"content":" public void showTaskAdded(Task task, int taskCount) {","lastModifiedDate":"2024-01-28"},{"lineNumber":41,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2024-01-28"},{"lineNumber":42,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\" \" + task);","lastModifiedDate":"2024-01-28"},{"lineNumber":43,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"Now you have \" + taskCount + \" tasks in the list.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":44,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":45,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":46,"author":{"gitId":"ChuaZiLong"},"content":" public void showTaskList(TaskList tasks) {","lastModifiedDate":"2024-01-28"},{"lineNumber":47,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"Here are the tasks in your list:\");","lastModifiedDate":"2024-01-28"},{"lineNumber":48,"author":{"gitId":"ChuaZiLong"},"content":" for (int i \u003d 0; i \u003c tasks.getSize(); i++) {","lastModifiedDate":"2024-01-28"},{"lineNumber":49,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println((i + 1) + \".\" + tasks.getTask(i));","lastModifiedDate":"2024-01-28"},{"lineNumber":50,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":51,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":52,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":53,"author":{"gitId":"ChuaZiLong"},"content":" public String readCommand() {","lastModifiedDate":"2024-01-28"},{"lineNumber":54,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"ChuaZiLong"},"content":" return scanner.nextLine();","lastModifiedDate":"2024-01-28"},{"lineNumber":56,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":57,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":58,"author":{"gitId":"ChuaZiLong"},"content":" public void showLoadingError() {","lastModifiedDate":"2024-01-28"},{"lineNumber":59,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":60,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"Error loading file.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":61,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":62,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":63,"author":{"gitId":"ChuaZiLong"},"content":" public void closeScanner() {","lastModifiedDate":"2024-01-28"},{"lineNumber":64,"author":{"gitId":"ChuaZiLong"},"content":" scanner.close();","lastModifiedDate":"2024-01-28"},{"lineNumber":65,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":66,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":67,"author":{"gitId":"ChuaZiLong"},"content":" public void showMarkedTask(Task task) {","lastModifiedDate":"2024-01-30"},{"lineNumber":68,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2024-01-30"},{"lineNumber":69,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\" \" + task);","lastModifiedDate":"2024-01-30"},{"lineNumber":70,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":71,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":72,"author":{"gitId":"ChuaZiLong"},"content":" public void showUnmarkedTask(Task task) {","lastModifiedDate":"2024-01-30"},{"lineNumber":73,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2024-01-30"},{"lineNumber":74,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\" \" + task);","lastModifiedDate":"2024-01-30"},{"lineNumber":75,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":76,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":77,"author":{"gitId":"ChuaZiLong"},"content":" public void showDeletedTask(Task task, int taskCount) {","lastModifiedDate":"2024-01-30"},{"lineNumber":78,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"Noted. I\u0027ve removed this task:\");","lastModifiedDate":"2024-01-30"},{"lineNumber":79,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\" \" + task);","lastModifiedDate":"2024-01-30"},{"lineNumber":80,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"Now you have \" + taskCount + \" tasks in the list.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":81,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":82,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-28"},{"lineNumber":83,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":84,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":85,"author":{"gitId":"ChuaZiLong"},"content":"class Storage {","lastModifiedDate":"2024-01-28"},{"lineNumber":86,"author":{"gitId":"ChuaZiLong"},"content":" private String filePath;","lastModifiedDate":"2024-01-28"},{"lineNumber":87,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":88,"author":{"gitId":"ChuaZiLong"},"content":" public Storage(String filePath) {","lastModifiedDate":"2024-01-28"},{"lineNumber":89,"author":{"gitId":"ChuaZiLong"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2024-01-28"},{"lineNumber":90,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":91,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":92,"author":{"gitId":"ChuaZiLong"},"content":" public ArrayList\u003cTask\u003e load() throws DukeException {","lastModifiedDate":"2024-01-28"},{"lineNumber":93,"author":{"gitId":"ChuaZiLong"},"content":" ArrayList\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-28"},{"lineNumber":94,"author":{"gitId":"ChuaZiLong"},"content":" File file \u003d new File(filePath);","lastModifiedDate":"2024-01-28"},{"lineNumber":95,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":96,"author":{"gitId":"ChuaZiLong"},"content":" if (!file.exists()) {","lastModifiedDate":"2024-01-28"},{"lineNumber":97,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"File not found\");","lastModifiedDate":"2024-01-28"},{"lineNumber":98,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":99,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":100,"author":{"gitId":"ChuaZiLong"},"content":" try (Scanner fileScanner \u003d new Scanner(file)) {","lastModifiedDate":"2024-01-28"},{"lineNumber":101,"author":{"gitId":"ChuaZiLong"},"content":" while (fileScanner.hasNext()) {","lastModifiedDate":"2024-01-28"},{"lineNumber":102,"author":{"gitId":"ChuaZiLong"},"content":" String line \u003d fileScanner.nextLine();","lastModifiedDate":"2024-01-28"},{"lineNumber":103,"author":{"gitId":"ChuaZiLong"},"content":" String[] parts \u003d line.split(\" \\\\| \");","lastModifiedDate":"2024-01-28"},{"lineNumber":104,"author":{"gitId":"ChuaZiLong"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":105,"author":{"gitId":"ChuaZiLong"},"content":" String type \u003d parts[0];","lastModifiedDate":"2024-01-28"},{"lineNumber":106,"author":{"gitId":"ChuaZiLong"},"content":" boolean isDone \u003d parts[1].equals(\"1\");","lastModifiedDate":"2024-01-28"},{"lineNumber":107,"author":{"gitId":"ChuaZiLong"},"content":" String description \u003d parts[2];","lastModifiedDate":"2024-01-28"},{"lineNumber":108,"author":{"gitId":"ChuaZiLong"},"content":" Task task \u003d null;","lastModifiedDate":"2024-01-28"},{"lineNumber":109,"author":{"gitId":"ChuaZiLong"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd HH:mm\");","lastModifiedDate":"2024-01-28"},{"lineNumber":110,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":111,"author":{"gitId":"ChuaZiLong"},"content":" switch (type) {","lastModifiedDate":"2024-01-28"},{"lineNumber":112,"author":{"gitId":"ChuaZiLong"},"content":" case \"T\":","lastModifiedDate":"2024-01-28"},{"lineNumber":113,"author":{"gitId":"ChuaZiLong"},"content":" task \u003d new Todo(description);","lastModifiedDate":"2024-01-28"},{"lineNumber":114,"author":{"gitId":"ChuaZiLong"},"content":" break;","lastModifiedDate":"2024-01-28"},{"lineNumber":115,"author":{"gitId":"ChuaZiLong"},"content":" case \"D\":","lastModifiedDate":"2024-01-28"},{"lineNumber":116,"author":{"gitId":"ChuaZiLong"},"content":" if (parts.length \u003c 4) throw new DukeException(\"Invalid deadline format in file.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":117,"author":{"gitId":"ChuaZiLong"},"content":" LocalDateTime byDate \u003d LocalDateTime.parse(parts[3], formatter);","lastModifiedDate":"2024-01-28"},{"lineNumber":118,"author":{"gitId":"ChuaZiLong"},"content":" task \u003d new Deadline(description, byDate);","lastModifiedDate":"2024-01-28"},{"lineNumber":119,"author":{"gitId":"ChuaZiLong"},"content":" break;","lastModifiedDate":"2024-01-28"},{"lineNumber":120,"author":{"gitId":"ChuaZiLong"},"content":" case \"E\":","lastModifiedDate":"2024-01-28"},{"lineNumber":121,"author":{"gitId":"ChuaZiLong"},"content":" if (parts.length \u003c 5) throw new DukeException(\"Invalid event format in file.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":122,"author":{"gitId":"ChuaZiLong"},"content":" LocalDateTime from \u003d LocalDateTime.parse(parts[3], formatter);","lastModifiedDate":"2024-01-28"},{"lineNumber":123,"author":{"gitId":"ChuaZiLong"},"content":" LocalDateTime to \u003d LocalDateTime.parse(parts[4], formatter);","lastModifiedDate":"2024-01-28"},{"lineNumber":124,"author":{"gitId":"ChuaZiLong"},"content":" task \u003d new Event(description, from, to);","lastModifiedDate":"2024-01-28"},{"lineNumber":125,"author":{"gitId":"ChuaZiLong"},"content":" break;","lastModifiedDate":"2024-01-28"},{"lineNumber":126,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":127,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":128,"author":{"gitId":"ChuaZiLong"},"content":" if (task !\u003d null) {","lastModifiedDate":"2024-01-28"},{"lineNumber":129,"author":{"gitId":"ChuaZiLong"},"content":" if (isDone) {","lastModifiedDate":"2024-01-28"},{"lineNumber":130,"author":{"gitId":"ChuaZiLong"},"content":" task.markAsDone();","lastModifiedDate":"2024-01-28"},{"lineNumber":131,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":132,"author":{"gitId":"ChuaZiLong"},"content":" tasks.add(task);","lastModifiedDate":"2024-01-28"},{"lineNumber":133,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":134,"author":{"gitId":"ChuaZiLong"},"content":" } catch (DukeException | DateTimeParseException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":135,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"Skipping invalid task: \" + line);","lastModifiedDate":"2024-01-28"},{"lineNumber":136,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":137,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":138,"author":{"gitId":"ChuaZiLong"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":139,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"File not found: \" + e.getMessage());","lastModifiedDate":"2024-01-28"},{"lineNumber":140,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":141,"author":{"gitId":"ChuaZiLong"},"content":" return tasks;","lastModifiedDate":"2024-01-28"},{"lineNumber":142,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":143,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":144,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":145,"author":{"gitId":"ChuaZiLong"},"content":" public void save(TaskList tasks) {","lastModifiedDate":"2024-01-28"},{"lineNumber":146,"author":{"gitId":"ChuaZiLong"},"content":" try (PrintWriter writer \u003d new PrintWriter(new FileWriter(filePath))) {","lastModifiedDate":"2024-01-28"},{"lineNumber":147,"author":{"gitId":"ChuaZiLong"},"content":" for (int i \u003d 0; i \u003c tasks.getSize(); i++) {","lastModifiedDate":"2024-01-28"},{"lineNumber":148,"author":{"gitId":"ChuaZiLong"},"content":" Task task \u003d tasks.getTask(i);","lastModifiedDate":"2024-01-28"},{"lineNumber":149,"author":{"gitId":"ChuaZiLong"},"content":" writer.println(taskToFileString(task));","lastModifiedDate":"2024-01-28"},{"lineNumber":150,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":151,"author":{"gitId":"ChuaZiLong"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":152,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"An error occurred while saving tasks to file: \" + e.getMessage());","lastModifiedDate":"2024-01-28"},{"lineNumber":153,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":154,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":155,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":156,"author":{"gitId":"ChuaZiLong"},"content":" private String taskToFileString(Task task) {","lastModifiedDate":"2024-01-28"},{"lineNumber":157,"author":{"gitId":"ChuaZiLong"},"content":" String type \u003d task instanceof Todo ? \"T\" :","lastModifiedDate":"2024-01-28"},{"lineNumber":158,"author":{"gitId":"ChuaZiLong"},"content":" task instanceof Deadline ? \"D\" :","lastModifiedDate":"2024-01-28"},{"lineNumber":159,"author":{"gitId":"ChuaZiLong"},"content":" task instanceof Event ? \"E\" : \"\";","lastModifiedDate":"2024-01-28"},{"lineNumber":160,"author":{"gitId":"ChuaZiLong"},"content":" String status \u003d task.isDone ? \"1\" : \"0\";","lastModifiedDate":"2024-01-28"},{"lineNumber":161,"author":{"gitId":"ChuaZiLong"},"content":" String details \u003d task.getDescription();","lastModifiedDate":"2024-01-28"},{"lineNumber":162,"author":{"gitId":"ChuaZiLong"},"content":" String additionalInfo \u003d \"\";","lastModifiedDate":"2024-01-28"},{"lineNumber":163,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":164,"author":{"gitId":"ChuaZiLong"},"content":" if (task instanceof Deadline) {","lastModifiedDate":"2024-01-28"},{"lineNumber":165,"author":{"gitId":"ChuaZiLong"},"content":" Deadline deadline \u003d (Deadline) task;","lastModifiedDate":"2024-01-28"},{"lineNumber":166,"author":{"gitId":"ChuaZiLong"},"content":" additionalInfo \u003d \" | \" + deadline.getBy().format(DateTimeFormatter.ofPattern(\"yyyy-MM-dd HH:mm\"));","lastModifiedDate":"2024-01-28"},{"lineNumber":167,"author":{"gitId":"ChuaZiLong"},"content":" } else if (task instanceof Event) {","lastModifiedDate":"2024-01-28"},{"lineNumber":168,"author":{"gitId":"ChuaZiLong"},"content":" Event event \u003d (Event) task;","lastModifiedDate":"2024-01-28"},{"lineNumber":169,"author":{"gitId":"ChuaZiLong"},"content":" additionalInfo \u003d \" | \" + event.getFrom().format(DateTimeFormatter.ofPattern(\"yyyy-MM-dd HH:mm\")) +","lastModifiedDate":"2024-01-28"},{"lineNumber":170,"author":{"gitId":"ChuaZiLong"},"content":" \" | \" + event.getTo().format(DateTimeFormatter.ofPattern(\"yyyy-MM-dd HH:mm\"));","lastModifiedDate":"2024-01-28"},{"lineNumber":171,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":172,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":173,"author":{"gitId":"ChuaZiLong"},"content":" return type + \" | \" + status + \" | \" + details + additionalInfo;","lastModifiedDate":"2024-01-28"},{"lineNumber":174,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":175,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":176,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-28"},{"lineNumber":177,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":178,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":179,"author":{"gitId":"ChuaZiLong"},"content":"class Parser {","lastModifiedDate":"2024-01-28"},{"lineNumber":180,"author":{"gitId":"ChuaZiLong"},"content":" private static final DateTimeFormatter dateTimeFormatter \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd HHmm\");","lastModifiedDate":"2024-01-28"},{"lineNumber":181,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":182,"author":{"gitId":"ChuaZiLong"},"content":" public static Command parse(String fullCommand) throws DukeException {","lastModifiedDate":"2024-01-28"},{"lineNumber":183,"author":{"gitId":"ChuaZiLong"},"content":" String[] commandParts \u003d fullCommand.split(\" \", 2);","lastModifiedDate":"2024-01-28"},{"lineNumber":184,"author":{"gitId":"ChuaZiLong"},"content":" String commandType \u003d commandParts[0];","lastModifiedDate":"2024-01-28"},{"lineNumber":185,"author":{"gitId":"ChuaZiLong"},"content":" String commandArgs \u003d commandParts.length \u003e 1 ? commandParts[1] : \"\";","lastModifiedDate":"2024-01-28"},{"lineNumber":186,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":187,"author":{"gitId":"ChuaZiLong"},"content":" switch (commandType) {","lastModifiedDate":"2024-01-28"},{"lineNumber":188,"author":{"gitId":"ChuaZiLong"},"content":" case \"todo\":","lastModifiedDate":"2024-01-28"},{"lineNumber":189,"author":{"gitId":"ChuaZiLong"},"content":" if (commandArgs.isEmpty()) {","lastModifiedDate":"2024-01-28"},{"lineNumber":190,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"The description of a todo cannot be empty.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":191,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":192,"author":{"gitId":"ChuaZiLong"},"content":" return new AddTodoCommand(commandArgs);","lastModifiedDate":"2024-01-28"},{"lineNumber":193,"author":{"gitId":"ChuaZiLong"},"content":" case \"deadline\":","lastModifiedDate":"2024-01-28"},{"lineNumber":194,"author":{"gitId":"ChuaZiLong"},"content":" return parseAddDeadlineCommand(commandArgs);","lastModifiedDate":"2024-01-28"},{"lineNumber":195,"author":{"gitId":"ChuaZiLong"},"content":" case \"event\":","lastModifiedDate":"2024-01-28"},{"lineNumber":196,"author":{"gitId":"ChuaZiLong"},"content":" return parseAddEventCommand(commandArgs);","lastModifiedDate":"2024-01-28"},{"lineNumber":197,"author":{"gitId":"ChuaZiLong"},"content":" case \"list\":","lastModifiedDate":"2024-01-28"},{"lineNumber":198,"author":{"gitId":"ChuaZiLong"},"content":" return new ListCommand();","lastModifiedDate":"2024-01-28"},{"lineNumber":199,"author":{"gitId":"ChuaZiLong"},"content":" case \"mark\":","lastModifiedDate":"2024-01-30"},{"lineNumber":200,"author":{"gitId":"ChuaZiLong"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":201,"author":{"gitId":"ChuaZiLong"},"content":" int index \u003d Integer.parseInt(commandArgs) - 1;","lastModifiedDate":"2024-01-30"},{"lineNumber":202,"author":{"gitId":"ChuaZiLong"},"content":" return new MarkCommand(index);","lastModifiedDate":"2024-01-30"},{"lineNumber":203,"author":{"gitId":"ChuaZiLong"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":204,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"Invalid task number format.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":205,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":206,"author":{"gitId":"ChuaZiLong"},"content":" case \"unmark\":","lastModifiedDate":"2024-01-30"},{"lineNumber":207,"author":{"gitId":"ChuaZiLong"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":208,"author":{"gitId":"ChuaZiLong"},"content":" int index \u003d Integer.parseInt(commandArgs) - 1;","lastModifiedDate":"2024-01-30"},{"lineNumber":209,"author":{"gitId":"ChuaZiLong"},"content":" return new UnmarkCommand(index);","lastModifiedDate":"2024-01-30"},{"lineNumber":210,"author":{"gitId":"ChuaZiLong"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":211,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"Invalid task number format.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":212,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":213,"author":{"gitId":"ChuaZiLong"},"content":" case \"delete\":","lastModifiedDate":"2024-01-30"},{"lineNumber":214,"author":{"gitId":"ChuaZiLong"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":215,"author":{"gitId":"ChuaZiLong"},"content":" int index \u003d Integer.parseInt(commandArgs) - 1;","lastModifiedDate":"2024-01-30"},{"lineNumber":216,"author":{"gitId":"ChuaZiLong"},"content":" return new DeleteCommand(index);","lastModifiedDate":"2024-01-30"},{"lineNumber":217,"author":{"gitId":"ChuaZiLong"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":218,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"Invalid task number format.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":219,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":220,"author":{"gitId":"ChuaZiLong"},"content":" case \"bye\":","lastModifiedDate":"2024-01-30"},{"lineNumber":221,"author":{"gitId":"ChuaZiLong"},"content":" return new ExitCommand();","lastModifiedDate":"2024-01-30"},{"lineNumber":222,"author":{"gitId":"ChuaZiLong"},"content":" default:","lastModifiedDate":"2024-01-28"},{"lineNumber":223,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"Unknown command\");","lastModifiedDate":"2024-01-28"},{"lineNumber":224,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":225,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":226,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":227,"author":{"gitId":"ChuaZiLong"},"content":" private static Command parseAddDeadlineCommand(String commandArgs) throws DukeException {","lastModifiedDate":"2024-01-28"},{"lineNumber":228,"author":{"gitId":"ChuaZiLong"},"content":" String[] parts \u003d commandArgs.split(\"/by\", 2);","lastModifiedDate":"2024-01-28"},{"lineNumber":229,"author":{"gitId":"ChuaZiLong"},"content":" if (parts.length \u003c 2 || parts[0].trim().isEmpty() || parts[1].trim().isEmpty()) {","lastModifiedDate":"2024-01-28"},{"lineNumber":230,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"Invalid deadline command format.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":231,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":232,"author":{"gitId":"ChuaZiLong"},"content":" String description \u003d parts[0].trim();","lastModifiedDate":"2024-01-28"},{"lineNumber":233,"author":{"gitId":"ChuaZiLong"},"content":" String by \u003d parts[1].trim();","lastModifiedDate":"2024-01-28"},{"lineNumber":234,"author":{"gitId":"ChuaZiLong"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":235,"author":{"gitId":"ChuaZiLong"},"content":" LocalDateTime byDate \u003d LocalDateTime.parse(by, dateTimeFormatter);","lastModifiedDate":"2024-01-28"},{"lineNumber":236,"author":{"gitId":"ChuaZiLong"},"content":" return new AddDeadlineCommand(description, byDate);","lastModifiedDate":"2024-01-28"},{"lineNumber":237,"author":{"gitId":"ChuaZiLong"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":238,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"Invalid date format. Please use yyyy-MM-dd HHmm format.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":239,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":240,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":241,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":242,"author":{"gitId":"ChuaZiLong"},"content":" private static Command parseAddEventCommand(String commandArgs) throws DukeException {","lastModifiedDate":"2024-01-28"},{"lineNumber":243,"author":{"gitId":"ChuaZiLong"},"content":" String[] parts \u003d commandArgs.split(\"/at\", 2);","lastModifiedDate":"2024-01-28"},{"lineNumber":244,"author":{"gitId":"ChuaZiLong"},"content":" if (parts.length \u003c 2 || parts[0].trim().isEmpty() || parts[1].trim().isEmpty()) {","lastModifiedDate":"2024-01-28"},{"lineNumber":245,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"Invalid event command format.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":246,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":247,"author":{"gitId":"ChuaZiLong"},"content":" String description \u003d parts[0].trim();","lastModifiedDate":"2024-01-28"},{"lineNumber":248,"author":{"gitId":"ChuaZiLong"},"content":" String at \u003d parts[1].trim();","lastModifiedDate":"2024-01-28"},{"lineNumber":249,"author":{"gitId":"ChuaZiLong"},"content":" String[] timeParts \u003d at.split(\"-\", 2);","lastModifiedDate":"2024-01-28"},{"lineNumber":250,"author":{"gitId":"ChuaZiLong"},"content":" if (timeParts.length \u003c 2 || timeParts[0].trim().isEmpty() || timeParts[1].trim().isEmpty()) {","lastModifiedDate":"2024-01-28"},{"lineNumber":251,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"Invalid time format for event command.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":252,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":253,"author":{"gitId":"ChuaZiLong"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":254,"author":{"gitId":"ChuaZiLong"},"content":" LocalDateTime startTime \u003d LocalDateTime.parse(timeParts[0].trim(), dateTimeFormatter);","lastModifiedDate":"2024-01-28"},{"lineNumber":255,"author":{"gitId":"ChuaZiLong"},"content":" LocalDateTime endTime \u003d LocalDateTime.parse(timeParts[1].trim(), dateTimeFormatter);","lastModifiedDate":"2024-01-28"},{"lineNumber":256,"author":{"gitId":"ChuaZiLong"},"content":" return new AddEventCommand(description, startTime, endTime);","lastModifiedDate":"2024-01-28"},{"lineNumber":257,"author":{"gitId":"ChuaZiLong"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":258,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"Invalid date format. Please use yyyy-MM-dd HHmm format.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":259,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":260,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":261,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-28"},{"lineNumber":262,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":263,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":264,"author":{"gitId":"ChuaZiLong"},"content":"class TaskList {","lastModifiedDate":"2024-01-28"},{"lineNumber":265,"author":{"gitId":"ChuaZiLong"},"content":" private ArrayList\u003cTask\u003e tasks;","lastModifiedDate":"2024-01-28"},{"lineNumber":266,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":267,"author":{"gitId":"ChuaZiLong"},"content":" public TaskList(ArrayList\u003cTask\u003e tasks) {","lastModifiedDate":"2024-01-28"},{"lineNumber":268,"author":{"gitId":"ChuaZiLong"},"content":" this.tasks \u003d tasks;","lastModifiedDate":"2024-01-28"},{"lineNumber":269,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":270,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":271,"author":{"gitId":"ChuaZiLong"},"content":" public TaskList() {","lastModifiedDate":"2024-01-28"},{"lineNumber":272,"author":{"gitId":"ChuaZiLong"},"content":" this(new ArrayList\u003c\u003e());","lastModifiedDate":"2024-01-28"},{"lineNumber":273,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":274,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":275,"author":{"gitId":"ChuaZiLong"},"content":" public void addTask(Task task) {","lastModifiedDate":"2024-01-28"},{"lineNumber":276,"author":{"gitId":"ChuaZiLong"},"content":" tasks.add(task);","lastModifiedDate":"2024-01-28"},{"lineNumber":277,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":278,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":279,"author":{"gitId":"ChuaZiLong"},"content":" public Task removeTask(int index) {","lastModifiedDate":"2024-01-28"},{"lineNumber":280,"author":{"gitId":"ChuaZiLong"},"content":" return tasks.remove(index);","lastModifiedDate":"2024-01-28"},{"lineNumber":281,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":282,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":283,"author":{"gitId":"ChuaZiLong"},"content":" public Task getTask(int index) {","lastModifiedDate":"2024-01-28"},{"lineNumber":284,"author":{"gitId":"ChuaZiLong"},"content":" return tasks.get(index);","lastModifiedDate":"2024-01-28"},{"lineNumber":285,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":286,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":287,"author":{"gitId":"ChuaZiLong"},"content":" public int getSize() {","lastModifiedDate":"2024-01-28"},{"lineNumber":288,"author":{"gitId":"ChuaZiLong"},"content":" return tasks.size();","lastModifiedDate":"2024-01-28"},{"lineNumber":289,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":290,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":291,"author":{"gitId":"ChuaZiLong"},"content":" // ... any other methods needed for task management ...","lastModifiedDate":"2024-01-28"},{"lineNumber":292,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-28"},{"lineNumber":293,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":294,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":295,"author":{"gitId":"ChuaZiLong"},"content":"enum TaskType {","lastModifiedDate":"2024-01-24"},{"lineNumber":296,"author":{"gitId":"ChuaZiLong"},"content":" TODO,","lastModifiedDate":"2024-01-24"},{"lineNumber":297,"author":{"gitId":"ChuaZiLong"},"content":" DEADLINE,","lastModifiedDate":"2024-01-24"},{"lineNumber":298,"author":{"gitId":"ChuaZiLong"},"content":" EVENT","lastModifiedDate":"2024-01-24"},{"lineNumber":299,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-24"},{"lineNumber":300,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":301,"author":{"gitId":"ChuaZiLong"},"content":"class Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":302,"author":{"gitId":"ChuaZiLong"},"content":" protected String description;","lastModifiedDate":"2024-01-24"},{"lineNumber":303,"author":{"gitId":"ChuaZiLong"},"content":" protected boolean isDone;","lastModifiedDate":"2024-01-24"},{"lineNumber":304,"author":{"gitId":"ChuaZiLong"},"content":" protected TaskType taskType;","lastModifiedDate":"2024-01-24"},{"lineNumber":305,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":306,"author":{"gitId":"ChuaZiLong"},"content":" public Task(String description, TaskType taskType) {","lastModifiedDate":"2024-01-24"},{"lineNumber":307,"author":{"gitId":"ChuaZiLong"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-24"},{"lineNumber":308,"author":{"gitId":"ChuaZiLong"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-24"},{"lineNumber":309,"author":{"gitId":"ChuaZiLong"},"content":" this.taskType \u003d taskType;","lastModifiedDate":"2024-01-24"},{"lineNumber":310,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":311,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":312,"author":{"gitId":"ChuaZiLong"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-01-24"},{"lineNumber":313,"author":{"gitId":"ChuaZiLong"},"content":" return \"[\" + taskType + \"]\" + (isDone ? \"[X] \" : \"[ ] \");","lastModifiedDate":"2024-01-24"},{"lineNumber":314,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":315,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":316,"author":{"gitId":"ChuaZiLong"},"content":" public String getDescription() {","lastModifiedDate":"2024-01-24"},{"lineNumber":317,"author":{"gitId":"ChuaZiLong"},"content":" return description;","lastModifiedDate":"2024-01-24"},{"lineNumber":318,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":319,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":320,"author":{"gitId":"ChuaZiLong"},"content":" public void markAsDone() {","lastModifiedDate":"2024-01-24"},{"lineNumber":321,"author":{"gitId":"ChuaZiLong"},"content":" isDone \u003d true;","lastModifiedDate":"2024-01-24"},{"lineNumber":322,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":323,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":324,"author":{"gitId":"ChuaZiLong"},"content":" public void markAsNotDone() {","lastModifiedDate":"2024-01-24"},{"lineNumber":325,"author":{"gitId":"ChuaZiLong"},"content":" isDone \u003d false;","lastModifiedDate":"2024-01-24"},{"lineNumber":326,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":327,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":328,"author":{"gitId":"ChuaZiLong"},"content":" public String toString() {","lastModifiedDate":"2024-01-28"},{"lineNumber":329,"author":{"gitId":"ChuaZiLong"},"content":" return getStatusIcon() + getDescription();","lastModifiedDate":"2024-01-28"},{"lineNumber":330,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":331,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-24"},{"lineNumber":332,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":333,"author":{"gitId":"ChuaZiLong"},"content":"class Todo extends Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":334,"author":{"gitId":"ChuaZiLong"},"content":" public Todo(String description) {","lastModifiedDate":"2024-01-24"},{"lineNumber":335,"author":{"gitId":"ChuaZiLong"},"content":" super(description, TaskType.TODO);","lastModifiedDate":"2024-01-24"},{"lineNumber":336,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":337,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-24"},{"lineNumber":338,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":339,"author":{"gitId":"ChuaZiLong"},"content":"class Deadline extends Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":340,"author":{"gitId":"ChuaZiLong"},"content":" protected LocalDateTime by;","lastModifiedDate":"2024-01-28"},{"lineNumber":341,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":342,"author":{"gitId":"ChuaZiLong"},"content":" public Deadline(String description, LocalDateTime by) {","lastModifiedDate":"2024-01-28"},{"lineNumber":343,"author":{"gitId":"ChuaZiLong"},"content":" super(description, TaskType.DEADLINE);","lastModifiedDate":"2024-01-24"},{"lineNumber":344,"author":{"gitId":"ChuaZiLong"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-24"},{"lineNumber":345,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":346,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":347,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":348,"author":{"gitId":"ChuaZiLong"},"content":" public String getDescription() {","lastModifiedDate":"2024-01-24"},{"lineNumber":349,"author":{"gitId":"ChuaZiLong"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"MMM dd yyyy, HH:mm\");","lastModifiedDate":"2024-01-28"},{"lineNumber":350,"author":{"gitId":"ChuaZiLong"},"content":" return super.getDescription() + \" (by: \" + formatter.format(by) + \")\";","lastModifiedDate":"2024-01-28"},{"lineNumber":351,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":352,"author":{"gitId":"ChuaZiLong"},"content":" public LocalDateTime getBy() {","lastModifiedDate":"2024-01-28"},{"lineNumber":353,"author":{"gitId":"ChuaZiLong"},"content":" return by;","lastModifiedDate":"2024-01-28"},{"lineNumber":354,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":355,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-24"},{"lineNumber":356,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":357,"author":{"gitId":"ChuaZiLong"},"content":"class Event extends Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":358,"author":{"gitId":"ChuaZiLong"},"content":" protected LocalDateTime from;","lastModifiedDate":"2024-01-28"},{"lineNumber":359,"author":{"gitId":"ChuaZiLong"},"content":" protected LocalDateTime to;","lastModifiedDate":"2024-01-28"},{"lineNumber":360,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":361,"author":{"gitId":"ChuaZiLong"},"content":" public Event(String description, LocalDateTime from, LocalDateTime to) {","lastModifiedDate":"2024-01-28"},{"lineNumber":362,"author":{"gitId":"ChuaZiLong"},"content":" super(description, TaskType.EVENT);","lastModifiedDate":"2024-01-24"},{"lineNumber":363,"author":{"gitId":"ChuaZiLong"},"content":" this.from \u003d from;","lastModifiedDate":"2024-01-24"},{"lineNumber":364,"author":{"gitId":"ChuaZiLong"},"content":" this.to \u003d to;","lastModifiedDate":"2024-01-24"},{"lineNumber":365,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":366,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":367,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":368,"author":{"gitId":"ChuaZiLong"},"content":" public String getDescription() {","lastModifiedDate":"2024-01-24"},{"lineNumber":369,"author":{"gitId":"ChuaZiLong"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"MMM dd yyyy, HH:mm\");","lastModifiedDate":"2024-01-28"},{"lineNumber":370,"author":{"gitId":"ChuaZiLong"},"content":" return super.getDescription() + \" (from: \" + formatter.format(from) + \" to: \" + formatter.format(to) + \")\";","lastModifiedDate":"2024-01-28"},{"lineNumber":371,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":372,"author":{"gitId":"ChuaZiLong"},"content":" public LocalDateTime getFrom() {","lastModifiedDate":"2024-01-28"},{"lineNumber":373,"author":{"gitId":"ChuaZiLong"},"content":" return from;","lastModifiedDate":"2024-01-28"},{"lineNumber":374,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":375,"author":{"gitId":"ChuaZiLong"},"content":" public LocalDateTime getTo() {","lastModifiedDate":"2024-01-28"},{"lineNumber":376,"author":{"gitId":"ChuaZiLong"},"content":" return to;","lastModifiedDate":"2024-01-28"},{"lineNumber":377,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":378,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-24"},{"lineNumber":379,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":380,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":381,"author":{"gitId":"ChuaZiLong"},"content":" private Storage storage;","lastModifiedDate":"2024-01-28"},{"lineNumber":382,"author":{"gitId":"ChuaZiLong"},"content":" private TaskList tasks;","lastModifiedDate":"2024-01-28"},{"lineNumber":383,"author":{"gitId":"ChuaZiLong"},"content":" private Ui ui;","lastModifiedDate":"2024-01-28"},{"lineNumber":384,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":385,"author":{"gitId":"ChuaZiLong"},"content":" public Duke(String filePath) {","lastModifiedDate":"2024-01-28"},{"lineNumber":386,"author":{"gitId":"ChuaZiLong"},"content":" ui \u003d new Ui();","lastModifiedDate":"2024-01-28"},{"lineNumber":387,"author":{"gitId":"ChuaZiLong"},"content":" storage \u003d new Storage(filePath);","lastModifiedDate":"2024-01-28"},{"lineNumber":388,"author":{"gitId":"ChuaZiLong"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":389,"author":{"gitId":"ChuaZiLong"},"content":" tasks \u003d new TaskList(storage.load());","lastModifiedDate":"2024-01-28"},{"lineNumber":390,"author":{"gitId":"ChuaZiLong"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":391,"author":{"gitId":"ChuaZiLong"},"content":" ui.showLoadingError();","lastModifiedDate":"2024-01-28"},{"lineNumber":392,"author":{"gitId":"ChuaZiLong"},"content":" tasks \u003d new TaskList();","lastModifiedDate":"2024-01-28"},{"lineNumber":393,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":394,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":395,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":396,"author":{"gitId":"ChuaZiLong"},"content":" public void run() {","lastModifiedDate":"2024-01-28"},{"lineNumber":397,"author":{"gitId":"ChuaZiLong"},"content":" ui.showWelcome();","lastModifiedDate":"2024-01-28"},{"lineNumber":398,"author":{"gitId":"ChuaZiLong"},"content":" boolean isExit \u003d false;","lastModifiedDate":"2024-01-28"},{"lineNumber":399,"author":{"gitId":"ChuaZiLong"},"content":" while (!isExit) {","lastModifiedDate":"2024-01-28"},{"lineNumber":400,"author":{"gitId":"ChuaZiLong"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":401,"author":{"gitId":"ChuaZiLong"},"content":" String fullCommand \u003d ui.readCommand();","lastModifiedDate":"2024-01-28"},{"lineNumber":402,"author":{"gitId":"ChuaZiLong"},"content":" Command command \u003d Parser.parse(fullCommand);","lastModifiedDate":"2024-01-30"},{"lineNumber":403,"author":{"gitId":"ChuaZiLong"},"content":" command.execute(tasks, ui, storage);","lastModifiedDate":"2024-01-30"},{"lineNumber":404,"author":{"gitId":"ChuaZiLong"},"content":" isExit \u003d command.isExit(); // Check if the command signals to exit","lastModifiedDate":"2024-01-30"},{"lineNumber":405,"author":{"gitId":"ChuaZiLong"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":406,"author":{"gitId":"ChuaZiLong"},"content":" ui.showError(e.getMessage());","lastModifiedDate":"2024-01-28"},{"lineNumber":407,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":408,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":409,"author":{"gitId":"ChuaZiLong"},"content":" ui.closeScanner();","lastModifiedDate":"2024-01-28"},{"lineNumber":410,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":411,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":412,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-01-28"},{"lineNumber":413,"author":{"gitId":"ChuaZiLong"},"content":" new Duke(\"./data/duke.txt/duke.txt\").run();","lastModifiedDate":"2024-01-28"},{"lineNumber":414,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":415,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2024-01-24"},{"lineNumber":416,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":417,"author":{"gitId":"ChuaZiLong"},"content":"abstract class Command {","lastModifiedDate":"2024-01-28"},{"lineNumber":418,"author":{"gitId":"ChuaZiLong"},"content":" public abstract void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException;","lastModifiedDate":"2024-01-28"},{"lineNumber":419,"author":{"gitId":"ChuaZiLong"},"content":" public abstract boolean isExit();","lastModifiedDate":"2024-01-28"},{"lineNumber":420,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-24"},{"lineNumber":421,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":422,"author":{"gitId":"ChuaZiLong"},"content":"class MarkCommand extends Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":423,"author":{"gitId":"ChuaZiLong"},"content":" private int index;","lastModifiedDate":"2024-01-30"},{"lineNumber":424,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":425,"author":{"gitId":"ChuaZiLong"},"content":" public MarkCommand(int index) {","lastModifiedDate":"2024-01-30"},{"lineNumber":426,"author":{"gitId":"ChuaZiLong"},"content":" this.index \u003d index;","lastModifiedDate":"2024-01-30"},{"lineNumber":427,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":428,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":429,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":430,"author":{"gitId":"ChuaZiLong"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":431,"author":{"gitId":"ChuaZiLong"},"content":" if (index \u003c 0 || index \u003e\u003d tasks.getSize()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":432,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"Invalid task number.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":433,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":434,"author":{"gitId":"ChuaZiLong"},"content":" Task task \u003d tasks.getTask(index);","lastModifiedDate":"2024-01-30"},{"lineNumber":435,"author":{"gitId":"ChuaZiLong"},"content":" task.markAsDone();","lastModifiedDate":"2024-01-30"},{"lineNumber":436,"author":{"gitId":"ChuaZiLong"},"content":" ui.showMarkedTask(task);","lastModifiedDate":"2024-01-30"},{"lineNumber":437,"author":{"gitId":"ChuaZiLong"},"content":" storage.save(tasks);","lastModifiedDate":"2024-01-30"},{"lineNumber":438,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":439,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":440,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":441,"author":{"gitId":"ChuaZiLong"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-30"},{"lineNumber":442,"author":{"gitId":"ChuaZiLong"},"content":" return false;","lastModifiedDate":"2024-01-30"},{"lineNumber":443,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":444,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":445,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":446,"author":{"gitId":"ChuaZiLong"},"content":"class UnmarkCommand extends Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":447,"author":{"gitId":"ChuaZiLong"},"content":" private int index;","lastModifiedDate":"2024-01-30"},{"lineNumber":448,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":449,"author":{"gitId":"ChuaZiLong"},"content":" public UnmarkCommand(int index) {","lastModifiedDate":"2024-01-30"},{"lineNumber":450,"author":{"gitId":"ChuaZiLong"},"content":" this.index \u003d index;","lastModifiedDate":"2024-01-30"},{"lineNumber":451,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":452,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":453,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":454,"author":{"gitId":"ChuaZiLong"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":455,"author":{"gitId":"ChuaZiLong"},"content":" if (index \u003c 0 || index \u003e\u003d tasks.getSize()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":456,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"Invalid task number.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":457,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":458,"author":{"gitId":"ChuaZiLong"},"content":" Task task \u003d tasks.getTask(index);","lastModifiedDate":"2024-01-30"},{"lineNumber":459,"author":{"gitId":"ChuaZiLong"},"content":" task.markAsNotDone();","lastModifiedDate":"2024-01-30"},{"lineNumber":460,"author":{"gitId":"ChuaZiLong"},"content":" ui.showUnmarkedTask(task);","lastModifiedDate":"2024-01-30"},{"lineNumber":461,"author":{"gitId":"ChuaZiLong"},"content":" storage.save(tasks);","lastModifiedDate":"2024-01-30"},{"lineNumber":462,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":463,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":464,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":465,"author":{"gitId":"ChuaZiLong"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-30"},{"lineNumber":466,"author":{"gitId":"ChuaZiLong"},"content":" return false;","lastModifiedDate":"2024-01-30"},{"lineNumber":467,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":468,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":469,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":470,"author":{"gitId":"ChuaZiLong"},"content":"class DeleteCommand extends Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":471,"author":{"gitId":"ChuaZiLong"},"content":" private int index;","lastModifiedDate":"2024-01-30"},{"lineNumber":472,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":473,"author":{"gitId":"ChuaZiLong"},"content":" public DeleteCommand(int index) {","lastModifiedDate":"2024-01-30"},{"lineNumber":474,"author":{"gitId":"ChuaZiLong"},"content":" this.index \u003d index;","lastModifiedDate":"2024-01-30"},{"lineNumber":475,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":476,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":477,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":478,"author":{"gitId":"ChuaZiLong"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":479,"author":{"gitId":"ChuaZiLong"},"content":" if (index \u003c 0 || index \u003e\u003d tasks.getSize()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":480,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"Invalid task number.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":481,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":482,"author":{"gitId":"ChuaZiLong"},"content":" Task task \u003d tasks.removeTask(index);","lastModifiedDate":"2024-01-30"},{"lineNumber":483,"author":{"gitId":"ChuaZiLong"},"content":" ui.showDeletedTask(task, tasks.getSize());","lastModifiedDate":"2024-01-30"},{"lineNumber":484,"author":{"gitId":"ChuaZiLong"},"content":" storage.save(tasks);","lastModifiedDate":"2024-01-30"},{"lineNumber":485,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":486,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":487,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":488,"author":{"gitId":"ChuaZiLong"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-30"},{"lineNumber":489,"author":{"gitId":"ChuaZiLong"},"content":" return false;","lastModifiedDate":"2024-01-30"},{"lineNumber":490,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":491,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":492,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":493,"author":{"gitId":"ChuaZiLong"},"content":"class ExitCommand extends Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":494,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":495,"author":{"gitId":"ChuaZiLong"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2024-01-30"},{"lineNumber":496,"author":{"gitId":"ChuaZiLong"},"content":" ui.showGoodbye();","lastModifiedDate":"2024-01-30"},{"lineNumber":497,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":498,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":499,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":500,"author":{"gitId":"ChuaZiLong"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-30"},{"lineNumber":501,"author":{"gitId":"ChuaZiLong"},"content":" return true; // Indicate that the application should exit","lastModifiedDate":"2024-01-30"},{"lineNumber":502,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":503,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":504,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":505,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":506,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":507,"author":{"gitId":"ChuaZiLong"},"content":"class ListCommand extends Command {","lastModifiedDate":"2024-01-28"},{"lineNumber":508,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":509,"author":{"gitId":"ChuaZiLong"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2024-01-28"},{"lineNumber":510,"author":{"gitId":"ChuaZiLong"},"content":" ui.showTaskList(tasks);","lastModifiedDate":"2024-01-28"},{"lineNumber":511,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":512,"author":{"gitId":"ChuaZiLong"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-28"},{"lineNumber":513,"author":{"gitId":"ChuaZiLong"},"content":" return false;","lastModifiedDate":"2024-01-28"},{"lineNumber":514,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":515,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-24"},{"lineNumber":516,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":517,"author":{"gitId":"ChuaZiLong"},"content":"class AddTodoCommand extends Command {","lastModifiedDate":"2024-01-28"},{"lineNumber":518,"author":{"gitId":"ChuaZiLong"},"content":" private String description;","lastModifiedDate":"2024-01-28"},{"lineNumber":519,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":520,"author":{"gitId":"ChuaZiLong"},"content":" public AddTodoCommand(String description) {","lastModifiedDate":"2024-01-28"},{"lineNumber":521,"author":{"gitId":"ChuaZiLong"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-28"},{"lineNumber":522,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":523,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":524,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":525,"author":{"gitId":"ChuaZiLong"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2024-01-28"},{"lineNumber":526,"author":{"gitId":"ChuaZiLong"},"content":" Todo newTodo \u003d new Todo(description);","lastModifiedDate":"2024-01-28"},{"lineNumber":527,"author":{"gitId":"ChuaZiLong"},"content":" tasks.addTask(newTodo);","lastModifiedDate":"2024-01-28"},{"lineNumber":528,"author":{"gitId":"ChuaZiLong"},"content":" ui.showTaskAdded(newTodo, tasks.getSize());","lastModifiedDate":"2024-01-28"},{"lineNumber":529,"author":{"gitId":"ChuaZiLong"},"content":" storage.save(tasks);","lastModifiedDate":"2024-01-28"},{"lineNumber":530,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":531,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":532,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":533,"author":{"gitId":"ChuaZiLong"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-28"},{"lineNumber":534,"author":{"gitId":"ChuaZiLong"},"content":" return false;","lastModifiedDate":"2024-01-28"},{"lineNumber":535,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":536,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-28"},{"lineNumber":537,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":538,"author":{"gitId":"ChuaZiLong"},"content":"class AddDeadlineCommand extends Command {","lastModifiedDate":"2024-01-28"},{"lineNumber":539,"author":{"gitId":"ChuaZiLong"},"content":" private String description;","lastModifiedDate":"2024-01-28"},{"lineNumber":540,"author":{"gitId":"ChuaZiLong"},"content":" private LocalDateTime by;","lastModifiedDate":"2024-01-28"},{"lineNumber":541,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":542,"author":{"gitId":"ChuaZiLong"},"content":" public AddDeadlineCommand(String description, LocalDateTime by) {","lastModifiedDate":"2024-01-28"},{"lineNumber":543,"author":{"gitId":"ChuaZiLong"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-28"},{"lineNumber":544,"author":{"gitId":"ChuaZiLong"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-28"},{"lineNumber":545,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":546,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":547,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":548,"author":{"gitId":"ChuaZiLong"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2024-01-28"},{"lineNumber":549,"author":{"gitId":"ChuaZiLong"},"content":" Deadline newDeadline \u003d new Deadline(description, by);","lastModifiedDate":"2024-01-28"},{"lineNumber":550,"author":{"gitId":"ChuaZiLong"},"content":" tasks.addTask(newDeadline);","lastModifiedDate":"2024-01-28"},{"lineNumber":551,"author":{"gitId":"ChuaZiLong"},"content":" ui.showTaskAdded(newDeadline, tasks.getSize());","lastModifiedDate":"2024-01-28"},{"lineNumber":552,"author":{"gitId":"ChuaZiLong"},"content":" storage.save(tasks);","lastModifiedDate":"2024-01-28"},{"lineNumber":553,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":554,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":555,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":556,"author":{"gitId":"ChuaZiLong"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-28"},{"lineNumber":557,"author":{"gitId":"ChuaZiLong"},"content":" return false;","lastModifiedDate":"2024-01-28"},{"lineNumber":558,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":559,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-24"},{"lineNumber":560,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":561,"author":{"gitId":"ChuaZiLong"},"content":"class AddEventCommand extends Command {","lastModifiedDate":"2024-01-28"},{"lineNumber":562,"author":{"gitId":"ChuaZiLong"},"content":" private String description;","lastModifiedDate":"2024-01-28"},{"lineNumber":563,"author":{"gitId":"ChuaZiLong"},"content":" private LocalDateTime start;","lastModifiedDate":"2024-01-28"},{"lineNumber":564,"author":{"gitId":"ChuaZiLong"},"content":" private LocalDateTime end;","lastModifiedDate":"2024-01-28"},{"lineNumber":565,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":566,"author":{"gitId":"ChuaZiLong"},"content":" public AddEventCommand(String description, LocalDateTime start, LocalDateTime end) {","lastModifiedDate":"2024-01-28"},{"lineNumber":567,"author":{"gitId":"ChuaZiLong"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-28"},{"lineNumber":568,"author":{"gitId":"ChuaZiLong"},"content":" this.start \u003d start;","lastModifiedDate":"2024-01-28"},{"lineNumber":569,"author":{"gitId":"ChuaZiLong"},"content":" this.end \u003d end;","lastModifiedDate":"2024-01-28"},{"lineNumber":570,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":571,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":572,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":573,"author":{"gitId":"ChuaZiLong"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2024-01-28"},{"lineNumber":574,"author":{"gitId":"ChuaZiLong"},"content":" Event newEvent \u003d new Event(description, start, end);","lastModifiedDate":"2024-01-28"},{"lineNumber":575,"author":{"gitId":"ChuaZiLong"},"content":" tasks.addTask(newEvent);","lastModifiedDate":"2024-01-28"},{"lineNumber":576,"author":{"gitId":"ChuaZiLong"},"content":" ui.showTaskAdded(newEvent, tasks.getSize());","lastModifiedDate":"2024-01-28"},{"lineNumber":577,"author":{"gitId":"ChuaZiLong"},"content":" storage.save(tasks);","lastModifiedDate":"2024-01-28"},{"lineNumber":578,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":579,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":580,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":581,"author":{"gitId":"ChuaZiLong"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-28"},{"lineNumber":582,"author":{"gitId":"ChuaZiLong"},"content":" return false;","lastModifiedDate":"2024-01-28"},{"lineNumber":583,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":584,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"-":5,"ChuaZiLong":579}},{"path":"src/main/java/duke/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ChuaZiLong"},"content":"package duke;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"ChuaZiLong"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"ChuaZiLong"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"ChuaZiLong"},"content":"import java.util.Date;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"ChuaZiLong"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"ChuaZiLong"},"content":"import java.io.File;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"ChuaZiLong"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"ChuaZiLong"},"content":"import java.io.PrintWriter;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"ChuaZiLong"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"ChuaZiLong"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"ChuaZiLong"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"ChuaZiLong"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"ChuaZiLong"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"ChuaZiLong"},"content":"public class Duke {","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"ChuaZiLong"},"content":" private Storage storage;","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"ChuaZiLong"},"content":" private TaskList tasks;","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"ChuaZiLong"},"content":" private Ui ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"ChuaZiLong"},"content":" public Duke(String filePath) {","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"ChuaZiLong"},"content":" ui \u003d new Ui();","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"ChuaZiLong"},"content":" storage \u003d new Storage(filePath);","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"ChuaZiLong"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"ChuaZiLong"},"content":" tasks \u003d new TaskList(storage.load());","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"ChuaZiLong"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"ChuaZiLong"},"content":" ui.showLoadingError();","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"ChuaZiLong"},"content":" tasks \u003d new TaskList();","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"ChuaZiLong"},"content":" public void run() {","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"ChuaZiLong"},"content":" ui.showWelcome();","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"ChuaZiLong"},"content":" boolean isExit \u003d false;","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"ChuaZiLong"},"content":" while (!isExit) {","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"ChuaZiLong"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"ChuaZiLong"},"content":" String fullCommand \u003d ui.readCommand();","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"ChuaZiLong"},"content":" Command command \u003d Parser.parse(fullCommand);","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"ChuaZiLong"},"content":" command.execute(tasks, ui, storage);","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"ChuaZiLong"},"content":" isExit \u003d command.isExit(); // Check if the command signals to exit","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"ChuaZiLong"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"ChuaZiLong"},"content":" ui.showError(e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"ChuaZiLong"},"content":" ui.closeScanner();","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"ChuaZiLong"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"ChuaZiLong"},"content":" new Duke(\"./data/duke.txt/duke.txt\").run();","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"ChuaZiLong"},"content":"class DukeException extends Exception {","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"ChuaZiLong"},"content":" public DukeException(String message) {","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"ChuaZiLong"},"content":" super(message);","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":59,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":60,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":61,"author":{"gitId":"ChuaZiLong"},"content":"class Ui {","lastModifiedDate":"2024-01-30"},{"lineNumber":62,"author":{"gitId":"ChuaZiLong"},"content":" private Scanner scanner;","lastModifiedDate":"2024-01-30"},{"lineNumber":63,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":64,"author":{"gitId":"ChuaZiLong"},"content":" public Ui() {","lastModifiedDate":"2024-01-30"},{"lineNumber":65,"author":{"gitId":"ChuaZiLong"},"content":" scanner \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-30"},{"lineNumber":66,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":67,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":68,"author":{"gitId":"ChuaZiLong"},"content":" public void showWelcome() {","lastModifiedDate":"2024-01-30"},{"lineNumber":69,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"Hello! I\u0027m SCZL\");","lastModifiedDate":"2024-01-30"},{"lineNumber":70,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"What can I do for you?\");","lastModifiedDate":"2024-01-30"},{"lineNumber":71,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":72,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":73,"author":{"gitId":"ChuaZiLong"},"content":" public void showGoodbye() {","lastModifiedDate":"2024-01-30"},{"lineNumber":74,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"Bye. Hope to see you again soon!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":75,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":76,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":77,"author":{"gitId":"ChuaZiLong"},"content":" public void showError(String message) {","lastModifiedDate":"2024-01-30"},{"lineNumber":78,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(message);","lastModifiedDate":"2024-01-30"},{"lineNumber":79,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":80,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":81,"author":{"gitId":"ChuaZiLong"},"content":" public void showTaskAdded(Task task, int taskCount) {","lastModifiedDate":"2024-01-30"},{"lineNumber":82,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2024-01-30"},{"lineNumber":83,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\" \" + task);","lastModifiedDate":"2024-01-30"},{"lineNumber":84,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"Now you have \" + taskCount + \" tasks in the list.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":85,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":86,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":87,"author":{"gitId":"ChuaZiLong"},"content":" public void showTaskList(TaskList tasks) {","lastModifiedDate":"2024-01-30"},{"lineNumber":88,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"Here are the tasks in your list:\");","lastModifiedDate":"2024-01-30"},{"lineNumber":89,"author":{"gitId":"ChuaZiLong"},"content":" for (int i \u003d 0; i \u003c tasks.getSize(); i++) {","lastModifiedDate":"2024-01-30"},{"lineNumber":90,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println((i + 1) + \".\" + tasks.getTask(i));","lastModifiedDate":"2024-01-30"},{"lineNumber":91,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":92,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":93,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":94,"author":{"gitId":"ChuaZiLong"},"content":" public String readCommand() {","lastModifiedDate":"2024-01-30"},{"lineNumber":95,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":96,"author":{"gitId":"ChuaZiLong"},"content":" return scanner.nextLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":97,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":98,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":99,"author":{"gitId":"ChuaZiLong"},"content":" public void showLoadingError() {","lastModifiedDate":"2024-01-30"},{"lineNumber":100,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":101,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"Error loading file.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":102,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":103,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":104,"author":{"gitId":"ChuaZiLong"},"content":" public void closeScanner() {","lastModifiedDate":"2024-01-30"},{"lineNumber":105,"author":{"gitId":"ChuaZiLong"},"content":" scanner.close();","lastModifiedDate":"2024-01-30"},{"lineNumber":106,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":107,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":108,"author":{"gitId":"ChuaZiLong"},"content":" public void showMarkedTask(Task task) {","lastModifiedDate":"2024-01-30"},{"lineNumber":109,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2024-01-30"},{"lineNumber":110,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\" \" + task);","lastModifiedDate":"2024-01-30"},{"lineNumber":111,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":112,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":113,"author":{"gitId":"ChuaZiLong"},"content":" public void showUnmarkedTask(Task task) {","lastModifiedDate":"2024-01-30"},{"lineNumber":114,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2024-01-30"},{"lineNumber":115,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\" \" + task);","lastModifiedDate":"2024-01-30"},{"lineNumber":116,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":117,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":118,"author":{"gitId":"ChuaZiLong"},"content":" public void showDeletedTask(Task task, int taskCount) {","lastModifiedDate":"2024-01-30"},{"lineNumber":119,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"Noted. I\u0027ve removed this task:\");","lastModifiedDate":"2024-01-30"},{"lineNumber":120,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\" \" + task);","lastModifiedDate":"2024-01-30"},{"lineNumber":121,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"Now you have \" + taskCount + \" tasks in the list.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":122,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":123,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":124,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":125,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":126,"author":{"gitId":"ChuaZiLong"},"content":"class Storage {","lastModifiedDate":"2024-01-30"},{"lineNumber":127,"author":{"gitId":"ChuaZiLong"},"content":" private String filePath;","lastModifiedDate":"2024-01-30"},{"lineNumber":128,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":129,"author":{"gitId":"ChuaZiLong"},"content":" public Storage(String filePath) {","lastModifiedDate":"2024-01-30"},{"lineNumber":130,"author":{"gitId":"ChuaZiLong"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2024-01-30"},{"lineNumber":131,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":132,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":133,"author":{"gitId":"ChuaZiLong"},"content":" public ArrayList\u003cTask\u003e load() throws DukeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":134,"author":{"gitId":"ChuaZiLong"},"content":" ArrayList\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-30"},{"lineNumber":135,"author":{"gitId":"ChuaZiLong"},"content":" File file \u003d new File(filePath);","lastModifiedDate":"2024-01-30"},{"lineNumber":136,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":137,"author":{"gitId":"ChuaZiLong"},"content":" if (!file.exists()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":138,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"File not found\");","lastModifiedDate":"2024-01-30"},{"lineNumber":139,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":140,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":141,"author":{"gitId":"ChuaZiLong"},"content":" try (Scanner fileScanner \u003d new Scanner(file)) {","lastModifiedDate":"2024-01-30"},{"lineNumber":142,"author":{"gitId":"ChuaZiLong"},"content":" while (fileScanner.hasNext()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":143,"author":{"gitId":"ChuaZiLong"},"content":" String line \u003d fileScanner.nextLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":144,"author":{"gitId":"ChuaZiLong"},"content":" String[] parts \u003d line.split(\" \\\\| \");","lastModifiedDate":"2024-01-30"},{"lineNumber":145,"author":{"gitId":"ChuaZiLong"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":146,"author":{"gitId":"ChuaZiLong"},"content":" String type \u003d parts[0];","lastModifiedDate":"2024-01-30"},{"lineNumber":147,"author":{"gitId":"ChuaZiLong"},"content":" boolean isDone \u003d parts[1].equals(\"1\");","lastModifiedDate":"2024-01-30"},{"lineNumber":148,"author":{"gitId":"ChuaZiLong"},"content":" String description \u003d parts[2];","lastModifiedDate":"2024-01-30"},{"lineNumber":149,"author":{"gitId":"ChuaZiLong"},"content":" Task task \u003d null;","lastModifiedDate":"2024-01-30"},{"lineNumber":150,"author":{"gitId":"ChuaZiLong"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd HH:mm\");","lastModifiedDate":"2024-01-30"},{"lineNumber":151,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":152,"author":{"gitId":"ChuaZiLong"},"content":" switch (type) {","lastModifiedDate":"2024-01-30"},{"lineNumber":153,"author":{"gitId":"ChuaZiLong"},"content":" case \"T\":","lastModifiedDate":"2024-01-30"},{"lineNumber":154,"author":{"gitId":"ChuaZiLong"},"content":" task \u003d new Todo(description);","lastModifiedDate":"2024-01-30"},{"lineNumber":155,"author":{"gitId":"ChuaZiLong"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":156,"author":{"gitId":"ChuaZiLong"},"content":" case \"D\":","lastModifiedDate":"2024-01-30"},{"lineNumber":157,"author":{"gitId":"ChuaZiLong"},"content":" if (parts.length \u003c 4) throw new DukeException(\"Invalid deadline format in file.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":158,"author":{"gitId":"ChuaZiLong"},"content":" LocalDateTime byDate \u003d LocalDateTime.parse(parts[3], formatter);","lastModifiedDate":"2024-01-30"},{"lineNumber":159,"author":{"gitId":"ChuaZiLong"},"content":" task \u003d new Deadline(description, byDate);","lastModifiedDate":"2024-01-30"},{"lineNumber":160,"author":{"gitId":"ChuaZiLong"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":161,"author":{"gitId":"ChuaZiLong"},"content":" case \"E\":","lastModifiedDate":"2024-01-30"},{"lineNumber":162,"author":{"gitId":"ChuaZiLong"},"content":" if (parts.length \u003c 5) throw new DukeException(\"Invalid event format in file.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":163,"author":{"gitId":"ChuaZiLong"},"content":" LocalDateTime from \u003d LocalDateTime.parse(parts[3], formatter);","lastModifiedDate":"2024-01-30"},{"lineNumber":164,"author":{"gitId":"ChuaZiLong"},"content":" LocalDateTime to \u003d LocalDateTime.parse(parts[4], formatter);","lastModifiedDate":"2024-01-30"},{"lineNumber":165,"author":{"gitId":"ChuaZiLong"},"content":" task \u003d new Event(description, from, to);","lastModifiedDate":"2024-01-30"},{"lineNumber":166,"author":{"gitId":"ChuaZiLong"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":167,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":168,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":169,"author":{"gitId":"ChuaZiLong"},"content":" if (task !\u003d null) {","lastModifiedDate":"2024-01-30"},{"lineNumber":170,"author":{"gitId":"ChuaZiLong"},"content":" if (isDone) {","lastModifiedDate":"2024-01-30"},{"lineNumber":171,"author":{"gitId":"ChuaZiLong"},"content":" task.markAsDone();","lastModifiedDate":"2024-01-30"},{"lineNumber":172,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":173,"author":{"gitId":"ChuaZiLong"},"content":" tasks.add(task);","lastModifiedDate":"2024-01-30"},{"lineNumber":174,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":175,"author":{"gitId":"ChuaZiLong"},"content":" } catch (DukeException | DateTimeParseException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":176,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"Skipping invalid task: \" + line);","lastModifiedDate":"2024-01-30"},{"lineNumber":177,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":178,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":179,"author":{"gitId":"ChuaZiLong"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":180,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"File not found: \" + e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":181,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":182,"author":{"gitId":"ChuaZiLong"},"content":" return tasks;","lastModifiedDate":"2024-01-30"},{"lineNumber":183,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":184,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":185,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":186,"author":{"gitId":"ChuaZiLong"},"content":" public void save(TaskList tasks) {","lastModifiedDate":"2024-01-30"},{"lineNumber":187,"author":{"gitId":"ChuaZiLong"},"content":" try (PrintWriter writer \u003d new PrintWriter(new FileWriter(filePath))) {","lastModifiedDate":"2024-01-30"},{"lineNumber":188,"author":{"gitId":"ChuaZiLong"},"content":" for (int i \u003d 0; i \u003c tasks.getSize(); i++) {","lastModifiedDate":"2024-01-30"},{"lineNumber":189,"author":{"gitId":"ChuaZiLong"},"content":" Task task \u003d tasks.getTask(i);","lastModifiedDate":"2024-01-30"},{"lineNumber":190,"author":{"gitId":"ChuaZiLong"},"content":" writer.println(taskToFileString(task));","lastModifiedDate":"2024-01-30"},{"lineNumber":191,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":192,"author":{"gitId":"ChuaZiLong"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":193,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"An error occurred while saving tasks to file: \" + e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":194,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":195,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":196,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":197,"author":{"gitId":"ChuaZiLong"},"content":" private String taskToFileString(Task task) {","lastModifiedDate":"2024-01-30"},{"lineNumber":198,"author":{"gitId":"ChuaZiLong"},"content":" String type \u003d task instanceof Todo ? \"T\" :","lastModifiedDate":"2024-01-30"},{"lineNumber":199,"author":{"gitId":"ChuaZiLong"},"content":" task instanceof Deadline ? \"D\" :","lastModifiedDate":"2024-01-30"},{"lineNumber":200,"author":{"gitId":"ChuaZiLong"},"content":" task instanceof Event ? \"E\" : \"\";","lastModifiedDate":"2024-01-30"},{"lineNumber":201,"author":{"gitId":"ChuaZiLong"},"content":" String status \u003d task.isDone ? \"1\" : \"0\";","lastModifiedDate":"2024-01-30"},{"lineNumber":202,"author":{"gitId":"ChuaZiLong"},"content":" String details \u003d task.getDescription();","lastModifiedDate":"2024-01-30"},{"lineNumber":203,"author":{"gitId":"ChuaZiLong"},"content":" String additionalInfo \u003d \"\";","lastModifiedDate":"2024-01-30"},{"lineNumber":204,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":205,"author":{"gitId":"ChuaZiLong"},"content":" if (task instanceof Deadline) {","lastModifiedDate":"2024-01-30"},{"lineNumber":206,"author":{"gitId":"ChuaZiLong"},"content":" Deadline deadline \u003d (Deadline) task;","lastModifiedDate":"2024-01-30"},{"lineNumber":207,"author":{"gitId":"ChuaZiLong"},"content":" additionalInfo \u003d \" | \" + deadline.getBy().format(DateTimeFormatter.ofPattern(\"yyyy-MM-dd HH:mm\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":208,"author":{"gitId":"ChuaZiLong"},"content":" } else if (task instanceof Event) {","lastModifiedDate":"2024-01-30"},{"lineNumber":209,"author":{"gitId":"ChuaZiLong"},"content":" Event event \u003d (Event) task;","lastModifiedDate":"2024-01-30"},{"lineNumber":210,"author":{"gitId":"ChuaZiLong"},"content":" additionalInfo \u003d \" | \" + event.getFrom().format(DateTimeFormatter.ofPattern(\"yyyy-MM-dd HH:mm\")) +","lastModifiedDate":"2024-01-30"},{"lineNumber":211,"author":{"gitId":"ChuaZiLong"},"content":" \" | \" + event.getTo().format(DateTimeFormatter.ofPattern(\"yyyy-MM-dd HH:mm\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":212,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":213,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":214,"author":{"gitId":"ChuaZiLong"},"content":" return type + \" | \" + status + \" | \" + details + additionalInfo;","lastModifiedDate":"2024-01-30"},{"lineNumber":215,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":216,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":217,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":218,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":219,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":220,"author":{"gitId":"ChuaZiLong"},"content":"class Parser {","lastModifiedDate":"2024-01-30"},{"lineNumber":221,"author":{"gitId":"ChuaZiLong"},"content":" private static final DateTimeFormatter dateTimeFormatter \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd HHmm\");","lastModifiedDate":"2024-01-30"},{"lineNumber":222,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":223,"author":{"gitId":"ChuaZiLong"},"content":" public static Command parse(String fullCommand) throws DukeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":224,"author":{"gitId":"ChuaZiLong"},"content":" String[] commandParts \u003d fullCommand.split(\" \", 2);","lastModifiedDate":"2024-01-30"},{"lineNumber":225,"author":{"gitId":"ChuaZiLong"},"content":" String commandType \u003d commandParts[0];","lastModifiedDate":"2024-01-30"},{"lineNumber":226,"author":{"gitId":"ChuaZiLong"},"content":" String commandArgs \u003d commandParts.length \u003e 1 ? commandParts[1] : \"\";","lastModifiedDate":"2024-01-30"},{"lineNumber":227,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":228,"author":{"gitId":"ChuaZiLong"},"content":" switch (commandType) {","lastModifiedDate":"2024-01-30"},{"lineNumber":229,"author":{"gitId":"ChuaZiLong"},"content":" case \"todo\":","lastModifiedDate":"2024-01-30"},{"lineNumber":230,"author":{"gitId":"ChuaZiLong"},"content":" if (commandArgs.isEmpty()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":231,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"The description of a todo cannot be empty.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":232,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":233,"author":{"gitId":"ChuaZiLong"},"content":" return new AddTodoCommand(commandArgs);","lastModifiedDate":"2024-01-30"},{"lineNumber":234,"author":{"gitId":"ChuaZiLong"},"content":" case \"deadline\":","lastModifiedDate":"2024-01-30"},{"lineNumber":235,"author":{"gitId":"ChuaZiLong"},"content":" return parseAddDeadlineCommand(commandArgs);","lastModifiedDate":"2024-01-30"},{"lineNumber":236,"author":{"gitId":"ChuaZiLong"},"content":" case \"event\":","lastModifiedDate":"2024-01-30"},{"lineNumber":237,"author":{"gitId":"ChuaZiLong"},"content":" return parseAddEventCommand(commandArgs);","lastModifiedDate":"2024-01-30"},{"lineNumber":238,"author":{"gitId":"ChuaZiLong"},"content":" case \"list\":","lastModifiedDate":"2024-01-30"},{"lineNumber":239,"author":{"gitId":"ChuaZiLong"},"content":" return new ListCommand();","lastModifiedDate":"2024-01-30"},{"lineNumber":240,"author":{"gitId":"ChuaZiLong"},"content":" case \"mark\":","lastModifiedDate":"2024-01-30"},{"lineNumber":241,"author":{"gitId":"ChuaZiLong"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":242,"author":{"gitId":"ChuaZiLong"},"content":" int index \u003d Integer.parseInt(commandArgs) - 1;","lastModifiedDate":"2024-01-30"},{"lineNumber":243,"author":{"gitId":"ChuaZiLong"},"content":" return new MarkCommand(index);","lastModifiedDate":"2024-01-30"},{"lineNumber":244,"author":{"gitId":"ChuaZiLong"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":245,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"Invalid task number format.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":246,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":247,"author":{"gitId":"ChuaZiLong"},"content":" case \"unmark\":","lastModifiedDate":"2024-01-30"},{"lineNumber":248,"author":{"gitId":"ChuaZiLong"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":249,"author":{"gitId":"ChuaZiLong"},"content":" int index \u003d Integer.parseInt(commandArgs) - 1;","lastModifiedDate":"2024-01-30"},{"lineNumber":250,"author":{"gitId":"ChuaZiLong"},"content":" return new UnmarkCommand(index);","lastModifiedDate":"2024-01-30"},{"lineNumber":251,"author":{"gitId":"ChuaZiLong"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":252,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"Invalid task number format.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":253,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":254,"author":{"gitId":"ChuaZiLong"},"content":" case \"delete\":","lastModifiedDate":"2024-01-30"},{"lineNumber":255,"author":{"gitId":"ChuaZiLong"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":256,"author":{"gitId":"ChuaZiLong"},"content":" int index \u003d Integer.parseInt(commandArgs) - 1;","lastModifiedDate":"2024-01-30"},{"lineNumber":257,"author":{"gitId":"ChuaZiLong"},"content":" return new DeleteCommand(index);","lastModifiedDate":"2024-01-30"},{"lineNumber":258,"author":{"gitId":"ChuaZiLong"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":259,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"Invalid task number format.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":260,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":261,"author":{"gitId":"ChuaZiLong"},"content":" case \"bye\":","lastModifiedDate":"2024-01-30"},{"lineNumber":262,"author":{"gitId":"ChuaZiLong"},"content":" return new ExitCommand();","lastModifiedDate":"2024-01-30"},{"lineNumber":263,"author":{"gitId":"ChuaZiLong"},"content":" default:","lastModifiedDate":"2024-01-30"},{"lineNumber":264,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"Unknown command\");","lastModifiedDate":"2024-01-30"},{"lineNumber":265,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":266,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":267,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":268,"author":{"gitId":"ChuaZiLong"},"content":" private static Command parseAddDeadlineCommand(String commandArgs) throws DukeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":269,"author":{"gitId":"ChuaZiLong"},"content":" String[] parts \u003d commandArgs.split(\"/by\", 2);","lastModifiedDate":"2024-01-30"},{"lineNumber":270,"author":{"gitId":"ChuaZiLong"},"content":" if (parts.length \u003c 2 || parts[0].trim().isEmpty() || parts[1].trim().isEmpty()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":271,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"Invalid deadline command format.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":272,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":273,"author":{"gitId":"ChuaZiLong"},"content":" String description \u003d parts[0].trim();","lastModifiedDate":"2024-01-30"},{"lineNumber":274,"author":{"gitId":"ChuaZiLong"},"content":" String by \u003d parts[1].trim();","lastModifiedDate":"2024-01-30"},{"lineNumber":275,"author":{"gitId":"ChuaZiLong"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":276,"author":{"gitId":"ChuaZiLong"},"content":" LocalDateTime byDate \u003d LocalDateTime.parse(by, dateTimeFormatter);","lastModifiedDate":"2024-01-30"},{"lineNumber":277,"author":{"gitId":"ChuaZiLong"},"content":" return new AddDeadlineCommand(description, byDate);","lastModifiedDate":"2024-01-30"},{"lineNumber":278,"author":{"gitId":"ChuaZiLong"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":279,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"Invalid date format. Please use yyyy-MM-dd HHmm format.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":280,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":281,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":282,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":283,"author":{"gitId":"ChuaZiLong"},"content":" private static Command parseAddEventCommand(String commandArgs) throws DukeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":284,"author":{"gitId":"ChuaZiLong"},"content":" String[] parts \u003d commandArgs.split(\"/at\", 2);","lastModifiedDate":"2024-01-30"},{"lineNumber":285,"author":{"gitId":"ChuaZiLong"},"content":" if (parts.length \u003c 2 || parts[0].trim().isEmpty() || parts[1].trim().isEmpty()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":286,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"Invalid event command format.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":287,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":288,"author":{"gitId":"ChuaZiLong"},"content":" String description \u003d parts[0].trim();","lastModifiedDate":"2024-01-30"},{"lineNumber":289,"author":{"gitId":"ChuaZiLong"},"content":" String at \u003d parts[1].trim();","lastModifiedDate":"2024-01-30"},{"lineNumber":290,"author":{"gitId":"ChuaZiLong"},"content":" String[] timeParts \u003d at.split(\"-\", 2);","lastModifiedDate":"2024-01-30"},{"lineNumber":291,"author":{"gitId":"ChuaZiLong"},"content":" if (timeParts.length \u003c 2 || timeParts[0].trim().isEmpty() || timeParts[1].trim().isEmpty()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":292,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"Invalid time format for event command.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":293,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":294,"author":{"gitId":"ChuaZiLong"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":295,"author":{"gitId":"ChuaZiLong"},"content":" LocalDateTime startTime \u003d LocalDateTime.parse(timeParts[0].trim(), dateTimeFormatter);","lastModifiedDate":"2024-01-30"},{"lineNumber":296,"author":{"gitId":"ChuaZiLong"},"content":" LocalDateTime endTime \u003d LocalDateTime.parse(timeParts[1].trim(), dateTimeFormatter);","lastModifiedDate":"2024-01-30"},{"lineNumber":297,"author":{"gitId":"ChuaZiLong"},"content":" return new AddEventCommand(description, startTime, endTime);","lastModifiedDate":"2024-01-30"},{"lineNumber":298,"author":{"gitId":"ChuaZiLong"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":299,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"Invalid date format. Please use yyyy-MM-dd HHmm format.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":300,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":301,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":302,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":303,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":304,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":305,"author":{"gitId":"ChuaZiLong"},"content":"class TaskList {","lastModifiedDate":"2024-01-30"},{"lineNumber":306,"author":{"gitId":"ChuaZiLong"},"content":" private ArrayList\u003cTask\u003e tasks;","lastModifiedDate":"2024-01-30"},{"lineNumber":307,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":308,"author":{"gitId":"ChuaZiLong"},"content":" public TaskList(ArrayList\u003cTask\u003e tasks) {","lastModifiedDate":"2024-01-30"},{"lineNumber":309,"author":{"gitId":"ChuaZiLong"},"content":" this.tasks \u003d tasks;","lastModifiedDate":"2024-01-30"},{"lineNumber":310,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":311,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":312,"author":{"gitId":"ChuaZiLong"},"content":" public TaskList() {","lastModifiedDate":"2024-01-30"},{"lineNumber":313,"author":{"gitId":"ChuaZiLong"},"content":" this(new ArrayList\u003c\u003e());","lastModifiedDate":"2024-01-30"},{"lineNumber":314,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":315,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":316,"author":{"gitId":"ChuaZiLong"},"content":" public void addTask(Task task) {","lastModifiedDate":"2024-01-30"},{"lineNumber":317,"author":{"gitId":"ChuaZiLong"},"content":" tasks.add(task);","lastModifiedDate":"2024-01-30"},{"lineNumber":318,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":319,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":320,"author":{"gitId":"ChuaZiLong"},"content":" public Task removeTask(int index) {","lastModifiedDate":"2024-01-30"},{"lineNumber":321,"author":{"gitId":"ChuaZiLong"},"content":" return tasks.remove(index);","lastModifiedDate":"2024-01-30"},{"lineNumber":322,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":323,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":324,"author":{"gitId":"ChuaZiLong"},"content":" public Task getTask(int index) {","lastModifiedDate":"2024-01-30"},{"lineNumber":325,"author":{"gitId":"ChuaZiLong"},"content":" return tasks.get(index);","lastModifiedDate":"2024-01-30"},{"lineNumber":326,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":327,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":328,"author":{"gitId":"ChuaZiLong"},"content":" public int getSize() {","lastModifiedDate":"2024-01-30"},{"lineNumber":329,"author":{"gitId":"ChuaZiLong"},"content":" return tasks.size();","lastModifiedDate":"2024-01-30"},{"lineNumber":330,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":331,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":332,"author":{"gitId":"ChuaZiLong"},"content":" // ... any other methods needed for task management ...","lastModifiedDate":"2024-01-30"},{"lineNumber":333,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":334,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":335,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":336,"author":{"gitId":"ChuaZiLong"},"content":"enum TaskType {","lastModifiedDate":"2024-01-30"},{"lineNumber":337,"author":{"gitId":"ChuaZiLong"},"content":" TODO,","lastModifiedDate":"2024-01-30"},{"lineNumber":338,"author":{"gitId":"ChuaZiLong"},"content":" DEADLINE,","lastModifiedDate":"2024-01-30"},{"lineNumber":339,"author":{"gitId":"ChuaZiLong"},"content":" EVENT","lastModifiedDate":"2024-01-30"},{"lineNumber":340,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":341,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":342,"author":{"gitId":"ChuaZiLong"},"content":"class Task {","lastModifiedDate":"2024-01-30"},{"lineNumber":343,"author":{"gitId":"ChuaZiLong"},"content":" protected String description;","lastModifiedDate":"2024-01-30"},{"lineNumber":344,"author":{"gitId":"ChuaZiLong"},"content":" protected boolean isDone;","lastModifiedDate":"2024-01-30"},{"lineNumber":345,"author":{"gitId":"ChuaZiLong"},"content":" protected TaskType taskType;","lastModifiedDate":"2024-01-30"},{"lineNumber":346,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":347,"author":{"gitId":"ChuaZiLong"},"content":" public Task(String description, TaskType taskType) {","lastModifiedDate":"2024-01-30"},{"lineNumber":348,"author":{"gitId":"ChuaZiLong"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-30"},{"lineNumber":349,"author":{"gitId":"ChuaZiLong"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-30"},{"lineNumber":350,"author":{"gitId":"ChuaZiLong"},"content":" this.taskType \u003d taskType;","lastModifiedDate":"2024-01-30"},{"lineNumber":351,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":352,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":353,"author":{"gitId":"ChuaZiLong"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-01-30"},{"lineNumber":354,"author":{"gitId":"ChuaZiLong"},"content":" return \"[\" + taskType + \"]\" + (isDone ? \"[X] \" : \"[ ] \");","lastModifiedDate":"2024-01-30"},{"lineNumber":355,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":356,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":357,"author":{"gitId":"ChuaZiLong"},"content":" public String getDescription() {","lastModifiedDate":"2024-01-30"},{"lineNumber":358,"author":{"gitId":"ChuaZiLong"},"content":" return description;","lastModifiedDate":"2024-01-30"},{"lineNumber":359,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":360,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":361,"author":{"gitId":"ChuaZiLong"},"content":" public void markAsDone() {","lastModifiedDate":"2024-01-30"},{"lineNumber":362,"author":{"gitId":"ChuaZiLong"},"content":" isDone \u003d true;","lastModifiedDate":"2024-01-30"},{"lineNumber":363,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":364,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":365,"author":{"gitId":"ChuaZiLong"},"content":" public void markAsNotDone() {","lastModifiedDate":"2024-01-30"},{"lineNumber":366,"author":{"gitId":"ChuaZiLong"},"content":" isDone \u003d false;","lastModifiedDate":"2024-01-30"},{"lineNumber":367,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":368,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":369,"author":{"gitId":"ChuaZiLong"},"content":" public String toString() {","lastModifiedDate":"2024-01-30"},{"lineNumber":370,"author":{"gitId":"ChuaZiLong"},"content":" return getStatusIcon() + getDescription();","lastModifiedDate":"2024-01-30"},{"lineNumber":371,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":372,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":373,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":374,"author":{"gitId":"ChuaZiLong"},"content":"class Todo extends Task {","lastModifiedDate":"2024-01-30"},{"lineNumber":375,"author":{"gitId":"ChuaZiLong"},"content":" public Todo(String description) {","lastModifiedDate":"2024-01-30"},{"lineNumber":376,"author":{"gitId":"ChuaZiLong"},"content":" super(description, TaskType.TODO);","lastModifiedDate":"2024-01-30"},{"lineNumber":377,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":378,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":379,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":380,"author":{"gitId":"ChuaZiLong"},"content":"class Deadline extends Task {","lastModifiedDate":"2024-01-30"},{"lineNumber":381,"author":{"gitId":"ChuaZiLong"},"content":" protected LocalDateTime by;","lastModifiedDate":"2024-01-30"},{"lineNumber":382,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":383,"author":{"gitId":"ChuaZiLong"},"content":" public Deadline(String description, LocalDateTime by) {","lastModifiedDate":"2024-01-30"},{"lineNumber":384,"author":{"gitId":"ChuaZiLong"},"content":" super(description, TaskType.DEADLINE);","lastModifiedDate":"2024-01-30"},{"lineNumber":385,"author":{"gitId":"ChuaZiLong"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-30"},{"lineNumber":386,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":387,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":388,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":389,"author":{"gitId":"ChuaZiLong"},"content":" public String getDescription() {","lastModifiedDate":"2024-01-30"},{"lineNumber":390,"author":{"gitId":"ChuaZiLong"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"MMM dd yyyy, HH:mm\");","lastModifiedDate":"2024-01-30"},{"lineNumber":391,"author":{"gitId":"ChuaZiLong"},"content":" return super.getDescription() + \" (by: \" + formatter.format(by) + \")\";","lastModifiedDate":"2024-01-30"},{"lineNumber":392,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":393,"author":{"gitId":"ChuaZiLong"},"content":" public LocalDateTime getBy() {","lastModifiedDate":"2024-01-30"},{"lineNumber":394,"author":{"gitId":"ChuaZiLong"},"content":" return by;","lastModifiedDate":"2024-01-30"},{"lineNumber":395,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":396,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":397,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":398,"author":{"gitId":"ChuaZiLong"},"content":"class Event extends Task {","lastModifiedDate":"2024-01-30"},{"lineNumber":399,"author":{"gitId":"ChuaZiLong"},"content":" protected LocalDateTime from;","lastModifiedDate":"2024-01-30"},{"lineNumber":400,"author":{"gitId":"ChuaZiLong"},"content":" protected LocalDateTime to;","lastModifiedDate":"2024-01-30"},{"lineNumber":401,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":402,"author":{"gitId":"ChuaZiLong"},"content":" public Event(String description, LocalDateTime from, LocalDateTime to) {","lastModifiedDate":"2024-01-30"},{"lineNumber":403,"author":{"gitId":"ChuaZiLong"},"content":" super(description, TaskType.EVENT);","lastModifiedDate":"2024-01-30"},{"lineNumber":404,"author":{"gitId":"ChuaZiLong"},"content":" this.from \u003d from;","lastModifiedDate":"2024-01-30"},{"lineNumber":405,"author":{"gitId":"ChuaZiLong"},"content":" this.to \u003d to;","lastModifiedDate":"2024-01-30"},{"lineNumber":406,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":407,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":408,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":409,"author":{"gitId":"ChuaZiLong"},"content":" public String getDescription() {","lastModifiedDate":"2024-01-30"},{"lineNumber":410,"author":{"gitId":"ChuaZiLong"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"MMM dd yyyy, HH:mm\");","lastModifiedDate":"2024-01-30"},{"lineNumber":411,"author":{"gitId":"ChuaZiLong"},"content":" return super.getDescription() + \" (from: \" + formatter.format(from) + \" to: \" + formatter.format(to) + \")\";","lastModifiedDate":"2024-01-30"},{"lineNumber":412,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":413,"author":{"gitId":"ChuaZiLong"},"content":" public LocalDateTime getFrom() {","lastModifiedDate":"2024-01-30"},{"lineNumber":414,"author":{"gitId":"ChuaZiLong"},"content":" return from;","lastModifiedDate":"2024-01-30"},{"lineNumber":415,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":416,"author":{"gitId":"ChuaZiLong"},"content":" public LocalDateTime getTo() {","lastModifiedDate":"2024-01-30"},{"lineNumber":417,"author":{"gitId":"ChuaZiLong"},"content":" return to;","lastModifiedDate":"2024-01-30"},{"lineNumber":418,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":419,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":420,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":421,"author":{"gitId":"ChuaZiLong"},"content":"abstract class Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":422,"author":{"gitId":"ChuaZiLong"},"content":" public abstract void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException;","lastModifiedDate":"2024-01-30"},{"lineNumber":423,"author":{"gitId":"ChuaZiLong"},"content":" public abstract boolean isExit();","lastModifiedDate":"2024-01-30"},{"lineNumber":424,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":425,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":426,"author":{"gitId":"ChuaZiLong"},"content":"class MarkCommand extends Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":427,"author":{"gitId":"ChuaZiLong"},"content":" private int index;","lastModifiedDate":"2024-01-30"},{"lineNumber":428,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":429,"author":{"gitId":"ChuaZiLong"},"content":" public MarkCommand(int index) {","lastModifiedDate":"2024-01-30"},{"lineNumber":430,"author":{"gitId":"ChuaZiLong"},"content":" this.index \u003d index;","lastModifiedDate":"2024-01-30"},{"lineNumber":431,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":432,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":433,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":434,"author":{"gitId":"ChuaZiLong"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":435,"author":{"gitId":"ChuaZiLong"},"content":" if (index \u003c 0 || index \u003e\u003d tasks.getSize()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":436,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"Invalid task number.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":437,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":438,"author":{"gitId":"ChuaZiLong"},"content":" Task task \u003d tasks.getTask(index);","lastModifiedDate":"2024-01-30"},{"lineNumber":439,"author":{"gitId":"ChuaZiLong"},"content":" task.markAsDone();","lastModifiedDate":"2024-01-30"},{"lineNumber":440,"author":{"gitId":"ChuaZiLong"},"content":" ui.showMarkedTask(task);","lastModifiedDate":"2024-01-30"},{"lineNumber":441,"author":{"gitId":"ChuaZiLong"},"content":" storage.save(tasks);","lastModifiedDate":"2024-01-30"},{"lineNumber":442,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":443,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":444,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":445,"author":{"gitId":"ChuaZiLong"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-30"},{"lineNumber":446,"author":{"gitId":"ChuaZiLong"},"content":" return false;","lastModifiedDate":"2024-01-30"},{"lineNumber":447,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":448,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":449,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":450,"author":{"gitId":"ChuaZiLong"},"content":"class UnmarkCommand extends Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":451,"author":{"gitId":"ChuaZiLong"},"content":" private int index;","lastModifiedDate":"2024-01-30"},{"lineNumber":452,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":453,"author":{"gitId":"ChuaZiLong"},"content":" public UnmarkCommand(int index) {","lastModifiedDate":"2024-01-30"},{"lineNumber":454,"author":{"gitId":"ChuaZiLong"},"content":" this.index \u003d index;","lastModifiedDate":"2024-01-30"},{"lineNumber":455,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":456,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":457,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":458,"author":{"gitId":"ChuaZiLong"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":459,"author":{"gitId":"ChuaZiLong"},"content":" if (index \u003c 0 || index \u003e\u003d tasks.getSize()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":460,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"Invalid task number.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":461,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":462,"author":{"gitId":"ChuaZiLong"},"content":" Task task \u003d tasks.getTask(index);","lastModifiedDate":"2024-01-30"},{"lineNumber":463,"author":{"gitId":"ChuaZiLong"},"content":" task.markAsNotDone();","lastModifiedDate":"2024-01-30"},{"lineNumber":464,"author":{"gitId":"ChuaZiLong"},"content":" ui.showUnmarkedTask(task);","lastModifiedDate":"2024-01-30"},{"lineNumber":465,"author":{"gitId":"ChuaZiLong"},"content":" storage.save(tasks);","lastModifiedDate":"2024-01-30"},{"lineNumber":466,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":467,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":468,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":469,"author":{"gitId":"ChuaZiLong"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-30"},{"lineNumber":470,"author":{"gitId":"ChuaZiLong"},"content":" return false;","lastModifiedDate":"2024-01-30"},{"lineNumber":471,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":472,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":473,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":474,"author":{"gitId":"ChuaZiLong"},"content":"class DeleteCommand extends Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":475,"author":{"gitId":"ChuaZiLong"},"content":" private int index;","lastModifiedDate":"2024-01-30"},{"lineNumber":476,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":477,"author":{"gitId":"ChuaZiLong"},"content":" public DeleteCommand(int index) {","lastModifiedDate":"2024-01-30"},{"lineNumber":478,"author":{"gitId":"ChuaZiLong"},"content":" this.index \u003d index;","lastModifiedDate":"2024-01-30"},{"lineNumber":479,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":480,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":481,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":482,"author":{"gitId":"ChuaZiLong"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":483,"author":{"gitId":"ChuaZiLong"},"content":" if (index \u003c 0 || index \u003e\u003d tasks.getSize()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":484,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"Invalid task number.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":485,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":486,"author":{"gitId":"ChuaZiLong"},"content":" Task task \u003d tasks.removeTask(index);","lastModifiedDate":"2024-01-30"},{"lineNumber":487,"author":{"gitId":"ChuaZiLong"},"content":" ui.showDeletedTask(task, tasks.getSize());","lastModifiedDate":"2024-01-30"},{"lineNumber":488,"author":{"gitId":"ChuaZiLong"},"content":" storage.save(tasks);","lastModifiedDate":"2024-01-30"},{"lineNumber":489,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":490,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":491,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":492,"author":{"gitId":"ChuaZiLong"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-30"},{"lineNumber":493,"author":{"gitId":"ChuaZiLong"},"content":" return false;","lastModifiedDate":"2024-01-30"},{"lineNumber":494,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":495,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":496,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":497,"author":{"gitId":"ChuaZiLong"},"content":"class ExitCommand extends Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":498,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":499,"author":{"gitId":"ChuaZiLong"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2024-01-30"},{"lineNumber":500,"author":{"gitId":"ChuaZiLong"},"content":" ui.showGoodbye();","lastModifiedDate":"2024-01-30"},{"lineNumber":501,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":502,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":503,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":504,"author":{"gitId":"ChuaZiLong"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-30"},{"lineNumber":505,"author":{"gitId":"ChuaZiLong"},"content":" return true; // Indicate that the application should exit","lastModifiedDate":"2024-01-30"},{"lineNumber":506,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":507,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":508,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":509,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":510,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":511,"author":{"gitId":"ChuaZiLong"},"content":"class ListCommand extends Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":512,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":513,"author":{"gitId":"ChuaZiLong"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2024-01-30"},{"lineNumber":514,"author":{"gitId":"ChuaZiLong"},"content":" ui.showTaskList(tasks);","lastModifiedDate":"2024-01-30"},{"lineNumber":515,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":516,"author":{"gitId":"ChuaZiLong"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-30"},{"lineNumber":517,"author":{"gitId":"ChuaZiLong"},"content":" return false;","lastModifiedDate":"2024-01-30"},{"lineNumber":518,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":519,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":520,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":521,"author":{"gitId":"ChuaZiLong"},"content":"class AddTodoCommand extends Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":522,"author":{"gitId":"ChuaZiLong"},"content":" private String description;","lastModifiedDate":"2024-01-30"},{"lineNumber":523,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":524,"author":{"gitId":"ChuaZiLong"},"content":" public AddTodoCommand(String description) {","lastModifiedDate":"2024-01-30"},{"lineNumber":525,"author":{"gitId":"ChuaZiLong"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-30"},{"lineNumber":526,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":527,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":528,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":529,"author":{"gitId":"ChuaZiLong"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2024-01-30"},{"lineNumber":530,"author":{"gitId":"ChuaZiLong"},"content":" Todo newTodo \u003d new Todo(description);","lastModifiedDate":"2024-01-30"},{"lineNumber":531,"author":{"gitId":"ChuaZiLong"},"content":" tasks.addTask(newTodo);","lastModifiedDate":"2024-01-30"},{"lineNumber":532,"author":{"gitId":"ChuaZiLong"},"content":" ui.showTaskAdded(newTodo, tasks.getSize());","lastModifiedDate":"2024-01-30"},{"lineNumber":533,"author":{"gitId":"ChuaZiLong"},"content":" storage.save(tasks);","lastModifiedDate":"2024-01-30"},{"lineNumber":534,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":535,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":536,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":537,"author":{"gitId":"ChuaZiLong"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-30"},{"lineNumber":538,"author":{"gitId":"ChuaZiLong"},"content":" return false;","lastModifiedDate":"2024-01-30"},{"lineNumber":539,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":540,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":541,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":542,"author":{"gitId":"ChuaZiLong"},"content":"class AddDeadlineCommand extends Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":543,"author":{"gitId":"ChuaZiLong"},"content":" private String description;","lastModifiedDate":"2024-01-30"},{"lineNumber":544,"author":{"gitId":"ChuaZiLong"},"content":" private LocalDateTime by;","lastModifiedDate":"2024-01-30"},{"lineNumber":545,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":546,"author":{"gitId":"ChuaZiLong"},"content":" public AddDeadlineCommand(String description, LocalDateTime by) {","lastModifiedDate":"2024-01-30"},{"lineNumber":547,"author":{"gitId":"ChuaZiLong"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-30"},{"lineNumber":548,"author":{"gitId":"ChuaZiLong"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-30"},{"lineNumber":549,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":550,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":551,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":552,"author":{"gitId":"ChuaZiLong"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2024-01-30"},{"lineNumber":553,"author":{"gitId":"ChuaZiLong"},"content":" Deadline newDeadline \u003d new Deadline(description, by);","lastModifiedDate":"2024-01-30"},{"lineNumber":554,"author":{"gitId":"ChuaZiLong"},"content":" tasks.addTask(newDeadline);","lastModifiedDate":"2024-01-30"},{"lineNumber":555,"author":{"gitId":"ChuaZiLong"},"content":" ui.showTaskAdded(newDeadline, tasks.getSize());","lastModifiedDate":"2024-01-30"},{"lineNumber":556,"author":{"gitId":"ChuaZiLong"},"content":" storage.save(tasks);","lastModifiedDate":"2024-01-30"},{"lineNumber":557,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":558,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":559,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":560,"author":{"gitId":"ChuaZiLong"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-30"},{"lineNumber":561,"author":{"gitId":"ChuaZiLong"},"content":" return false;","lastModifiedDate":"2024-01-30"},{"lineNumber":562,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":563,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":564,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":565,"author":{"gitId":"ChuaZiLong"},"content":"class AddEventCommand extends Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":566,"author":{"gitId":"ChuaZiLong"},"content":" private String description;","lastModifiedDate":"2024-01-30"},{"lineNumber":567,"author":{"gitId":"ChuaZiLong"},"content":" private LocalDateTime start;","lastModifiedDate":"2024-01-30"},{"lineNumber":568,"author":{"gitId":"ChuaZiLong"},"content":" private LocalDateTime end;","lastModifiedDate":"2024-01-30"},{"lineNumber":569,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":570,"author":{"gitId":"ChuaZiLong"},"content":" public AddEventCommand(String description, LocalDateTime start, LocalDateTime end) {","lastModifiedDate":"2024-01-30"},{"lineNumber":571,"author":{"gitId":"ChuaZiLong"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-30"},{"lineNumber":572,"author":{"gitId":"ChuaZiLong"},"content":" this.start \u003d start;","lastModifiedDate":"2024-01-30"},{"lineNumber":573,"author":{"gitId":"ChuaZiLong"},"content":" this.end \u003d end;","lastModifiedDate":"2024-01-30"},{"lineNumber":574,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":575,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":576,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":577,"author":{"gitId":"ChuaZiLong"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2024-01-30"},{"lineNumber":578,"author":{"gitId":"ChuaZiLong"},"content":" Event newEvent \u003d new Event(description, start, end);","lastModifiedDate":"2024-01-30"},{"lineNumber":579,"author":{"gitId":"ChuaZiLong"},"content":" tasks.addTask(newEvent);","lastModifiedDate":"2024-01-30"},{"lineNumber":580,"author":{"gitId":"ChuaZiLong"},"content":" ui.showTaskAdded(newEvent, tasks.getSize());","lastModifiedDate":"2024-01-30"},{"lineNumber":581,"author":{"gitId":"ChuaZiLong"},"content":" storage.save(tasks);","lastModifiedDate":"2024-01-30"},{"lineNumber":582,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":583,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":584,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":585,"author":{"gitId":"ChuaZiLong"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-30"},{"lineNumber":586,"author":{"gitId":"ChuaZiLong"},"content":" return false;","lastModifiedDate":"2024-01-30"},{"lineNumber":587,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":588,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"ChuaZiLong":588}},{"path":"src/src/duke/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ChuaZiLong"},"content":"package src.duke;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"ChuaZiLong"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"ChuaZiLong"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"ChuaZiLong"},"content":"import java.util.Date;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"ChuaZiLong"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"ChuaZiLong"},"content":"import java.io.File;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"ChuaZiLong"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"ChuaZiLong"},"content":"import java.io.PrintWriter;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"ChuaZiLong"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"ChuaZiLong"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"ChuaZiLong"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"ChuaZiLong"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"ChuaZiLong"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"ChuaZiLong"},"content":"public class Duke {","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"ChuaZiLong"},"content":" private Storage storage;","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"ChuaZiLong"},"content":" private TaskList tasks;","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"ChuaZiLong"},"content":" private Ui ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"ChuaZiLong"},"content":" public Duke(String filePath) {","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"ChuaZiLong"},"content":" ui \u003d new Ui();","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"ChuaZiLong"},"content":" storage \u003d new Storage(filePath);","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"ChuaZiLong"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"ChuaZiLong"},"content":" tasks \u003d new TaskList(storage.load());","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"ChuaZiLong"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"ChuaZiLong"},"content":" ui.showLoadingError();","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"ChuaZiLong"},"content":" tasks \u003d new TaskList();","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"ChuaZiLong"},"content":" public void run() {","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"ChuaZiLong"},"content":" ui.showWelcome();","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"ChuaZiLong"},"content":" boolean isExit \u003d false;","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"ChuaZiLong"},"content":" while (!isExit) {","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"ChuaZiLong"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"ChuaZiLong"},"content":" String fullCommand \u003d ui.readCommand();","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"ChuaZiLong"},"content":" Command command \u003d Parser.parse(fullCommand);","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"ChuaZiLong"},"content":" command.execute(tasks, ui, storage);","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"ChuaZiLong"},"content":" isExit \u003d command.isExit(); // Check if the command signals to exit","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"ChuaZiLong"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"ChuaZiLong"},"content":" ui.showError(e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"ChuaZiLong"},"content":" ui.closeScanner();","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"ChuaZiLong"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"ChuaZiLong"},"content":" new Duke(\"./data/duke.txt/duke.txt\").run();","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"ChuaZiLong"},"content":"class DukeException extends Exception {","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"ChuaZiLong"},"content":" public DukeException(String message) {","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"ChuaZiLong"},"content":" super(message);","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":59,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":60,"author":{"gitId":"ChuaZiLong"},"content":"class Ui {","lastModifiedDate":"2024-01-30"},{"lineNumber":61,"author":{"gitId":"ChuaZiLong"},"content":" private Scanner scanner;","lastModifiedDate":"2024-01-30"},{"lineNumber":62,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":63,"author":{"gitId":"ChuaZiLong"},"content":" public Ui() {","lastModifiedDate":"2024-01-30"},{"lineNumber":64,"author":{"gitId":"ChuaZiLong"},"content":" scanner \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-30"},{"lineNumber":65,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":66,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":67,"author":{"gitId":"ChuaZiLong"},"content":" public void showWelcome() {","lastModifiedDate":"2024-01-30"},{"lineNumber":68,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"Hello! I\u0027m SCZL\");","lastModifiedDate":"2024-01-30"},{"lineNumber":69,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"What can I do for you?\");","lastModifiedDate":"2024-01-30"},{"lineNumber":70,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":71,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":72,"author":{"gitId":"ChuaZiLong"},"content":" public void showGoodbye() {","lastModifiedDate":"2024-01-30"},{"lineNumber":73,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"Bye. Hope to see you again soon!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":74,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":75,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":76,"author":{"gitId":"ChuaZiLong"},"content":" public void showError(String message) {","lastModifiedDate":"2024-01-30"},{"lineNumber":77,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(message);","lastModifiedDate":"2024-01-30"},{"lineNumber":78,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":79,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":80,"author":{"gitId":"ChuaZiLong"},"content":" public void showTaskAdded(Task task, int taskCount) {","lastModifiedDate":"2024-01-30"},{"lineNumber":81,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2024-01-30"},{"lineNumber":82,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\" \" + task);","lastModifiedDate":"2024-01-30"},{"lineNumber":83,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"Now you have \" + taskCount + \" tasks in the list.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":84,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":85,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":86,"author":{"gitId":"ChuaZiLong"},"content":" public void showTaskList(TaskList tasks) {","lastModifiedDate":"2024-01-30"},{"lineNumber":87,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"Here are the tasks in your list:\");","lastModifiedDate":"2024-01-30"},{"lineNumber":88,"author":{"gitId":"ChuaZiLong"},"content":" for (int i \u003d 0; i \u003c tasks.getSize(); i++) {","lastModifiedDate":"2024-01-30"},{"lineNumber":89,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println((i + 1) + \".\" + tasks.getTask(i));","lastModifiedDate":"2024-01-30"},{"lineNumber":90,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":91,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":92,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":93,"author":{"gitId":"ChuaZiLong"},"content":" public String readCommand() {","lastModifiedDate":"2024-01-30"},{"lineNumber":94,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":95,"author":{"gitId":"ChuaZiLong"},"content":" return scanner.nextLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":96,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":97,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":98,"author":{"gitId":"ChuaZiLong"},"content":" public void showLoadingError() {","lastModifiedDate":"2024-01-30"},{"lineNumber":99,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":100,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"Error loading file.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":101,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":102,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":103,"author":{"gitId":"ChuaZiLong"},"content":" public void closeScanner() {","lastModifiedDate":"2024-01-30"},{"lineNumber":104,"author":{"gitId":"ChuaZiLong"},"content":" scanner.close();","lastModifiedDate":"2024-01-30"},{"lineNumber":105,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":106,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":107,"author":{"gitId":"ChuaZiLong"},"content":" public void showMarkedTask(Task task) {","lastModifiedDate":"2024-01-30"},{"lineNumber":108,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2024-01-30"},{"lineNumber":109,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\" \" + task);","lastModifiedDate":"2024-01-30"},{"lineNumber":110,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":111,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":112,"author":{"gitId":"ChuaZiLong"},"content":" public void showUnmarkedTask(Task task) {","lastModifiedDate":"2024-01-30"},{"lineNumber":113,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2024-01-30"},{"lineNumber":114,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\" \" + task);","lastModifiedDate":"2024-01-30"},{"lineNumber":115,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":116,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":117,"author":{"gitId":"ChuaZiLong"},"content":" public void showDeletedTask(Task task, int taskCount) {","lastModifiedDate":"2024-01-30"},{"lineNumber":118,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"Noted. I\u0027ve removed this task:\");","lastModifiedDate":"2024-01-30"},{"lineNumber":119,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\" \" + task);","lastModifiedDate":"2024-01-30"},{"lineNumber":120,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"Now you have \" + taskCount + \" tasks in the list.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":121,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":122,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":123,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":124,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":125,"author":{"gitId":"ChuaZiLong"},"content":"class Storage {","lastModifiedDate":"2024-01-30"},{"lineNumber":126,"author":{"gitId":"ChuaZiLong"},"content":" private String filePath;","lastModifiedDate":"2024-01-30"},{"lineNumber":127,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":128,"author":{"gitId":"ChuaZiLong"},"content":" public Storage(String filePath) {","lastModifiedDate":"2024-01-30"},{"lineNumber":129,"author":{"gitId":"ChuaZiLong"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2024-01-30"},{"lineNumber":130,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":131,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":132,"author":{"gitId":"ChuaZiLong"},"content":" public ArrayList\u003cTask\u003e load() throws DukeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":133,"author":{"gitId":"ChuaZiLong"},"content":" ArrayList\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-30"},{"lineNumber":134,"author":{"gitId":"ChuaZiLong"},"content":" File file \u003d new File(filePath);","lastModifiedDate":"2024-01-30"},{"lineNumber":135,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":136,"author":{"gitId":"ChuaZiLong"},"content":" if (!file.exists()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":137,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"File not found\");","lastModifiedDate":"2024-01-30"},{"lineNumber":138,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":139,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":140,"author":{"gitId":"ChuaZiLong"},"content":" try (Scanner fileScanner \u003d new Scanner(file)) {","lastModifiedDate":"2024-01-30"},{"lineNumber":141,"author":{"gitId":"ChuaZiLong"},"content":" while (fileScanner.hasNext()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":142,"author":{"gitId":"ChuaZiLong"},"content":" String line \u003d fileScanner.nextLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":143,"author":{"gitId":"ChuaZiLong"},"content":" String[] parts \u003d line.split(\" \\\\| \");","lastModifiedDate":"2024-01-30"},{"lineNumber":144,"author":{"gitId":"ChuaZiLong"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":145,"author":{"gitId":"ChuaZiLong"},"content":" String type \u003d parts[0];","lastModifiedDate":"2024-01-30"},{"lineNumber":146,"author":{"gitId":"ChuaZiLong"},"content":" boolean isDone \u003d parts[1].equals(\"1\");","lastModifiedDate":"2024-01-30"},{"lineNumber":147,"author":{"gitId":"ChuaZiLong"},"content":" String description \u003d parts[2];","lastModifiedDate":"2024-01-30"},{"lineNumber":148,"author":{"gitId":"ChuaZiLong"},"content":" Task task \u003d null;","lastModifiedDate":"2024-01-30"},{"lineNumber":149,"author":{"gitId":"ChuaZiLong"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd HH:mm\");","lastModifiedDate":"2024-01-30"},{"lineNumber":150,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":151,"author":{"gitId":"ChuaZiLong"},"content":" switch (type) {","lastModifiedDate":"2024-01-30"},{"lineNumber":152,"author":{"gitId":"ChuaZiLong"},"content":" case \"T\":","lastModifiedDate":"2024-01-30"},{"lineNumber":153,"author":{"gitId":"ChuaZiLong"},"content":" task \u003d new Todo(description);","lastModifiedDate":"2024-01-30"},{"lineNumber":154,"author":{"gitId":"ChuaZiLong"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":155,"author":{"gitId":"ChuaZiLong"},"content":" case \"D\":","lastModifiedDate":"2024-01-30"},{"lineNumber":156,"author":{"gitId":"ChuaZiLong"},"content":" if (parts.length \u003c 4) throw new DukeException(\"Invalid deadline format in file.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":157,"author":{"gitId":"ChuaZiLong"},"content":" LocalDateTime byDate \u003d LocalDateTime.parse(parts[3], formatter);","lastModifiedDate":"2024-01-30"},{"lineNumber":158,"author":{"gitId":"ChuaZiLong"},"content":" task \u003d new Deadline(description, byDate);","lastModifiedDate":"2024-01-30"},{"lineNumber":159,"author":{"gitId":"ChuaZiLong"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":160,"author":{"gitId":"ChuaZiLong"},"content":" case \"E\":","lastModifiedDate":"2024-01-30"},{"lineNumber":161,"author":{"gitId":"ChuaZiLong"},"content":" if (parts.length \u003c 5) throw new DukeException(\"Invalid event format in file.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":162,"author":{"gitId":"ChuaZiLong"},"content":" LocalDateTime from \u003d LocalDateTime.parse(parts[3], formatter);","lastModifiedDate":"2024-01-30"},{"lineNumber":163,"author":{"gitId":"ChuaZiLong"},"content":" LocalDateTime to \u003d LocalDateTime.parse(parts[4], formatter);","lastModifiedDate":"2024-01-30"},{"lineNumber":164,"author":{"gitId":"ChuaZiLong"},"content":" task \u003d new Event(description, from, to);","lastModifiedDate":"2024-01-30"},{"lineNumber":165,"author":{"gitId":"ChuaZiLong"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":166,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":167,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":168,"author":{"gitId":"ChuaZiLong"},"content":" if (task !\u003d null) {","lastModifiedDate":"2024-01-30"},{"lineNumber":169,"author":{"gitId":"ChuaZiLong"},"content":" if (isDone) {","lastModifiedDate":"2024-01-30"},{"lineNumber":170,"author":{"gitId":"ChuaZiLong"},"content":" task.markAsDone();","lastModifiedDate":"2024-01-30"},{"lineNumber":171,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":172,"author":{"gitId":"ChuaZiLong"},"content":" tasks.add(task);","lastModifiedDate":"2024-01-30"},{"lineNumber":173,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":174,"author":{"gitId":"ChuaZiLong"},"content":" } catch (DukeException | DateTimeParseException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":175,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"Skipping invalid task: \" + line);","lastModifiedDate":"2024-01-30"},{"lineNumber":176,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":177,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":178,"author":{"gitId":"ChuaZiLong"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":179,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"File not found: \" + e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":180,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":181,"author":{"gitId":"ChuaZiLong"},"content":" return tasks;","lastModifiedDate":"2024-01-30"},{"lineNumber":182,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":183,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":184,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":185,"author":{"gitId":"ChuaZiLong"},"content":" public void save(TaskList tasks) {","lastModifiedDate":"2024-01-30"},{"lineNumber":186,"author":{"gitId":"ChuaZiLong"},"content":" try (PrintWriter writer \u003d new PrintWriter(new FileWriter(filePath))) {","lastModifiedDate":"2024-01-30"},{"lineNumber":187,"author":{"gitId":"ChuaZiLong"},"content":" for (int i \u003d 0; i \u003c tasks.getSize(); i++) {","lastModifiedDate":"2024-01-30"},{"lineNumber":188,"author":{"gitId":"ChuaZiLong"},"content":" Task task \u003d tasks.getTask(i);","lastModifiedDate":"2024-01-30"},{"lineNumber":189,"author":{"gitId":"ChuaZiLong"},"content":" writer.println(taskToFileString(task));","lastModifiedDate":"2024-01-30"},{"lineNumber":190,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":191,"author":{"gitId":"ChuaZiLong"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":192,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"An error occurred while saving tasks to file: \" + e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":193,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":194,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":195,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":196,"author":{"gitId":"ChuaZiLong"},"content":" private String taskToFileString(Task task) {","lastModifiedDate":"2024-01-30"},{"lineNumber":197,"author":{"gitId":"ChuaZiLong"},"content":" String type \u003d task instanceof Todo ? \"T\" :","lastModifiedDate":"2024-01-30"},{"lineNumber":198,"author":{"gitId":"ChuaZiLong"},"content":" task instanceof Deadline ? \"D\" :","lastModifiedDate":"2024-01-30"},{"lineNumber":199,"author":{"gitId":"ChuaZiLong"},"content":" task instanceof Event ? \"E\" : \"\";","lastModifiedDate":"2024-01-30"},{"lineNumber":200,"author":{"gitId":"ChuaZiLong"},"content":" String status \u003d task.isDone ? \"1\" : \"0\";","lastModifiedDate":"2024-01-30"},{"lineNumber":201,"author":{"gitId":"ChuaZiLong"},"content":" String details \u003d task.getDescription();","lastModifiedDate":"2024-01-30"},{"lineNumber":202,"author":{"gitId":"ChuaZiLong"},"content":" String additionalInfo \u003d \"\";","lastModifiedDate":"2024-01-30"},{"lineNumber":203,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":204,"author":{"gitId":"ChuaZiLong"},"content":" if (task instanceof Deadline) {","lastModifiedDate":"2024-01-30"},{"lineNumber":205,"author":{"gitId":"ChuaZiLong"},"content":" Deadline deadline \u003d (Deadline) task;","lastModifiedDate":"2024-01-30"},{"lineNumber":206,"author":{"gitId":"ChuaZiLong"},"content":" additionalInfo \u003d \" | \" + deadline.getBy().format(DateTimeFormatter.ofPattern(\"yyyy-MM-dd HH:mm\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":207,"author":{"gitId":"ChuaZiLong"},"content":" } else if (task instanceof Event) {","lastModifiedDate":"2024-01-30"},{"lineNumber":208,"author":{"gitId":"ChuaZiLong"},"content":" Event event \u003d (Event) task;","lastModifiedDate":"2024-01-30"},{"lineNumber":209,"author":{"gitId":"ChuaZiLong"},"content":" additionalInfo \u003d \" | \" + event.getFrom().format(DateTimeFormatter.ofPattern(\"yyyy-MM-dd HH:mm\")) +","lastModifiedDate":"2024-01-30"},{"lineNumber":210,"author":{"gitId":"ChuaZiLong"},"content":" \" | \" + event.getTo().format(DateTimeFormatter.ofPattern(\"yyyy-MM-dd HH:mm\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":211,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":212,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":213,"author":{"gitId":"ChuaZiLong"},"content":" return type + \" | \" + status + \" | \" + details + additionalInfo;","lastModifiedDate":"2024-01-30"},{"lineNumber":214,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":215,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":216,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":217,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":218,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":219,"author":{"gitId":"ChuaZiLong"},"content":"class Parser {","lastModifiedDate":"2024-01-30"},{"lineNumber":220,"author":{"gitId":"ChuaZiLong"},"content":" private static final DateTimeFormatter dateTimeFormatter \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd HHmm\");","lastModifiedDate":"2024-01-30"},{"lineNumber":221,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":222,"author":{"gitId":"ChuaZiLong"},"content":" public static Command parse(String fullCommand) throws DukeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":223,"author":{"gitId":"ChuaZiLong"},"content":" String[] commandParts \u003d fullCommand.split(\" \", 2);","lastModifiedDate":"2024-01-30"},{"lineNumber":224,"author":{"gitId":"ChuaZiLong"},"content":" String commandType \u003d commandParts[0];","lastModifiedDate":"2024-01-30"},{"lineNumber":225,"author":{"gitId":"ChuaZiLong"},"content":" String commandArgs \u003d commandParts.length \u003e 1 ? commandParts[1] : \"\";","lastModifiedDate":"2024-01-30"},{"lineNumber":226,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":227,"author":{"gitId":"ChuaZiLong"},"content":" switch (commandType) {","lastModifiedDate":"2024-01-30"},{"lineNumber":228,"author":{"gitId":"ChuaZiLong"},"content":" case \"todo\":","lastModifiedDate":"2024-01-30"},{"lineNumber":229,"author":{"gitId":"ChuaZiLong"},"content":" if (commandArgs.isEmpty()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":230,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"The description of a todo cannot be empty.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":231,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":232,"author":{"gitId":"ChuaZiLong"},"content":" return new AddTodoCommand(commandArgs);","lastModifiedDate":"2024-01-30"},{"lineNumber":233,"author":{"gitId":"ChuaZiLong"},"content":" case \"deadline\":","lastModifiedDate":"2024-01-30"},{"lineNumber":234,"author":{"gitId":"ChuaZiLong"},"content":" return parseAddDeadlineCommand(commandArgs);","lastModifiedDate":"2024-01-30"},{"lineNumber":235,"author":{"gitId":"ChuaZiLong"},"content":" case \"event\":","lastModifiedDate":"2024-01-30"},{"lineNumber":236,"author":{"gitId":"ChuaZiLong"},"content":" return parseAddEventCommand(commandArgs);","lastModifiedDate":"2024-01-30"},{"lineNumber":237,"author":{"gitId":"ChuaZiLong"},"content":" case \"list\":","lastModifiedDate":"2024-01-30"},{"lineNumber":238,"author":{"gitId":"ChuaZiLong"},"content":" return new ListCommand();","lastModifiedDate":"2024-01-30"},{"lineNumber":239,"author":{"gitId":"ChuaZiLong"},"content":" case \"mark\":","lastModifiedDate":"2024-01-30"},{"lineNumber":240,"author":{"gitId":"ChuaZiLong"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":241,"author":{"gitId":"ChuaZiLong"},"content":" int index \u003d Integer.parseInt(commandArgs) - 1;","lastModifiedDate":"2024-01-30"},{"lineNumber":242,"author":{"gitId":"ChuaZiLong"},"content":" return new MarkCommand(index);","lastModifiedDate":"2024-01-30"},{"lineNumber":243,"author":{"gitId":"ChuaZiLong"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":244,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"Invalid task number format.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":245,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":246,"author":{"gitId":"ChuaZiLong"},"content":" case \"unmark\":","lastModifiedDate":"2024-01-30"},{"lineNumber":247,"author":{"gitId":"ChuaZiLong"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":248,"author":{"gitId":"ChuaZiLong"},"content":" int index \u003d Integer.parseInt(commandArgs) - 1;","lastModifiedDate":"2024-01-30"},{"lineNumber":249,"author":{"gitId":"ChuaZiLong"},"content":" return new UnmarkCommand(index);","lastModifiedDate":"2024-01-30"},{"lineNumber":250,"author":{"gitId":"ChuaZiLong"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":251,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"Invalid task number format.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":252,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":253,"author":{"gitId":"ChuaZiLong"},"content":" case \"delete\":","lastModifiedDate":"2024-01-30"},{"lineNumber":254,"author":{"gitId":"ChuaZiLong"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":255,"author":{"gitId":"ChuaZiLong"},"content":" int index \u003d Integer.parseInt(commandArgs) - 1;","lastModifiedDate":"2024-01-30"},{"lineNumber":256,"author":{"gitId":"ChuaZiLong"},"content":" return new DeleteCommand(index);","lastModifiedDate":"2024-01-30"},{"lineNumber":257,"author":{"gitId":"ChuaZiLong"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":258,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"Invalid task number format.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":259,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":260,"author":{"gitId":"ChuaZiLong"},"content":" case \"bye\":","lastModifiedDate":"2024-01-30"},{"lineNumber":261,"author":{"gitId":"ChuaZiLong"},"content":" return new ExitCommand();","lastModifiedDate":"2024-01-30"},{"lineNumber":262,"author":{"gitId":"ChuaZiLong"},"content":" default:","lastModifiedDate":"2024-01-30"},{"lineNumber":263,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"Unknown command\");","lastModifiedDate":"2024-01-30"},{"lineNumber":264,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":265,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":266,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":267,"author":{"gitId":"ChuaZiLong"},"content":" private static Command parseAddDeadlineCommand(String commandArgs) throws DukeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":268,"author":{"gitId":"ChuaZiLong"},"content":" String[] parts \u003d commandArgs.split(\"/by\", 2);","lastModifiedDate":"2024-01-30"},{"lineNumber":269,"author":{"gitId":"ChuaZiLong"},"content":" if (parts.length \u003c 2 || parts[0].trim().isEmpty() || parts[1].trim().isEmpty()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":270,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"Invalid deadline command format.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":271,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":272,"author":{"gitId":"ChuaZiLong"},"content":" String description \u003d parts[0].trim();","lastModifiedDate":"2024-01-30"},{"lineNumber":273,"author":{"gitId":"ChuaZiLong"},"content":" String by \u003d parts[1].trim();","lastModifiedDate":"2024-01-30"},{"lineNumber":274,"author":{"gitId":"ChuaZiLong"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":275,"author":{"gitId":"ChuaZiLong"},"content":" LocalDateTime byDate \u003d LocalDateTime.parse(by, dateTimeFormatter);","lastModifiedDate":"2024-01-30"},{"lineNumber":276,"author":{"gitId":"ChuaZiLong"},"content":" return new AddDeadlineCommand(description, byDate);","lastModifiedDate":"2024-01-30"},{"lineNumber":277,"author":{"gitId":"ChuaZiLong"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":278,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"Invalid date format. Please use yyyy-MM-dd HHmm format.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":279,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":280,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":281,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":282,"author":{"gitId":"ChuaZiLong"},"content":" private static Command parseAddEventCommand(String commandArgs) throws DukeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":283,"author":{"gitId":"ChuaZiLong"},"content":" String[] parts \u003d commandArgs.split(\"/at\", 2);","lastModifiedDate":"2024-01-30"},{"lineNumber":284,"author":{"gitId":"ChuaZiLong"},"content":" if (parts.length \u003c 2 || parts[0].trim().isEmpty() || parts[1].trim().isEmpty()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":285,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"Invalid event command format.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":286,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":287,"author":{"gitId":"ChuaZiLong"},"content":" String description \u003d parts[0].trim();","lastModifiedDate":"2024-01-30"},{"lineNumber":288,"author":{"gitId":"ChuaZiLong"},"content":" String at \u003d parts[1].trim();","lastModifiedDate":"2024-01-30"},{"lineNumber":289,"author":{"gitId":"ChuaZiLong"},"content":" String[] timeParts \u003d at.split(\"-\", 2);","lastModifiedDate":"2024-01-30"},{"lineNumber":290,"author":{"gitId":"ChuaZiLong"},"content":" if (timeParts.length \u003c 2 || timeParts[0].trim().isEmpty() || timeParts[1].trim().isEmpty()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":291,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"Invalid time format for event command.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":292,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":293,"author":{"gitId":"ChuaZiLong"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":294,"author":{"gitId":"ChuaZiLong"},"content":" LocalDateTime startTime \u003d LocalDateTime.parse(timeParts[0].trim(), dateTimeFormatter);","lastModifiedDate":"2024-01-30"},{"lineNumber":295,"author":{"gitId":"ChuaZiLong"},"content":" LocalDateTime endTime \u003d LocalDateTime.parse(timeParts[1].trim(), dateTimeFormatter);","lastModifiedDate":"2024-01-30"},{"lineNumber":296,"author":{"gitId":"ChuaZiLong"},"content":" return new AddEventCommand(description, startTime, endTime);","lastModifiedDate":"2024-01-30"},{"lineNumber":297,"author":{"gitId":"ChuaZiLong"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":298,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"Invalid date format. Please use yyyy-MM-dd HHmm format.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":299,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":300,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":301,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":302,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":303,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":304,"author":{"gitId":"ChuaZiLong"},"content":"class TaskList {","lastModifiedDate":"2024-01-30"},{"lineNumber":305,"author":{"gitId":"ChuaZiLong"},"content":" private ArrayList\u003cTask\u003e tasks;","lastModifiedDate":"2024-01-30"},{"lineNumber":306,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":307,"author":{"gitId":"ChuaZiLong"},"content":" public TaskList(ArrayList\u003cTask\u003e tasks) {","lastModifiedDate":"2024-01-30"},{"lineNumber":308,"author":{"gitId":"ChuaZiLong"},"content":" this.tasks \u003d tasks;","lastModifiedDate":"2024-01-30"},{"lineNumber":309,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":310,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":311,"author":{"gitId":"ChuaZiLong"},"content":" public TaskList() {","lastModifiedDate":"2024-01-30"},{"lineNumber":312,"author":{"gitId":"ChuaZiLong"},"content":" this(new ArrayList\u003c\u003e());","lastModifiedDate":"2024-01-30"},{"lineNumber":313,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":314,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":315,"author":{"gitId":"ChuaZiLong"},"content":" public void addTask(Task task) {","lastModifiedDate":"2024-01-30"},{"lineNumber":316,"author":{"gitId":"ChuaZiLong"},"content":" tasks.add(task);","lastModifiedDate":"2024-01-30"},{"lineNumber":317,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":318,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":319,"author":{"gitId":"ChuaZiLong"},"content":" public Task removeTask(int index) {","lastModifiedDate":"2024-01-30"},{"lineNumber":320,"author":{"gitId":"ChuaZiLong"},"content":" return tasks.remove(index);","lastModifiedDate":"2024-01-30"},{"lineNumber":321,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":322,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":323,"author":{"gitId":"ChuaZiLong"},"content":" public Task getTask(int index) {","lastModifiedDate":"2024-01-30"},{"lineNumber":324,"author":{"gitId":"ChuaZiLong"},"content":" return tasks.get(index);","lastModifiedDate":"2024-01-30"},{"lineNumber":325,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":326,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":327,"author":{"gitId":"ChuaZiLong"},"content":" public int getSize() {","lastModifiedDate":"2024-01-30"},{"lineNumber":328,"author":{"gitId":"ChuaZiLong"},"content":" return tasks.size();","lastModifiedDate":"2024-01-30"},{"lineNumber":329,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":330,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":331,"author":{"gitId":"ChuaZiLong"},"content":" // ... any other methods needed for task management ...","lastModifiedDate":"2024-01-30"},{"lineNumber":332,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":333,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":334,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":335,"author":{"gitId":"ChuaZiLong"},"content":"enum TaskType {","lastModifiedDate":"2024-01-30"},{"lineNumber":336,"author":{"gitId":"ChuaZiLong"},"content":" TODO,","lastModifiedDate":"2024-01-30"},{"lineNumber":337,"author":{"gitId":"ChuaZiLong"},"content":" DEADLINE,","lastModifiedDate":"2024-01-30"},{"lineNumber":338,"author":{"gitId":"ChuaZiLong"},"content":" EVENT","lastModifiedDate":"2024-01-30"},{"lineNumber":339,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":340,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":341,"author":{"gitId":"ChuaZiLong"},"content":"class Task {","lastModifiedDate":"2024-01-30"},{"lineNumber":342,"author":{"gitId":"ChuaZiLong"},"content":" protected String description;","lastModifiedDate":"2024-01-30"},{"lineNumber":343,"author":{"gitId":"ChuaZiLong"},"content":" protected boolean isDone;","lastModifiedDate":"2024-01-30"},{"lineNumber":344,"author":{"gitId":"ChuaZiLong"},"content":" protected TaskType taskType;","lastModifiedDate":"2024-01-30"},{"lineNumber":345,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":346,"author":{"gitId":"ChuaZiLong"},"content":" public Task(String description, TaskType taskType) {","lastModifiedDate":"2024-01-30"},{"lineNumber":347,"author":{"gitId":"ChuaZiLong"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-30"},{"lineNumber":348,"author":{"gitId":"ChuaZiLong"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-30"},{"lineNumber":349,"author":{"gitId":"ChuaZiLong"},"content":" this.taskType \u003d taskType;","lastModifiedDate":"2024-01-30"},{"lineNumber":350,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":351,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":352,"author":{"gitId":"ChuaZiLong"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-01-30"},{"lineNumber":353,"author":{"gitId":"ChuaZiLong"},"content":" return \"[\" + taskType + \"]\" + (isDone ? \"[X] \" : \"[ ] \");","lastModifiedDate":"2024-01-30"},{"lineNumber":354,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":355,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":356,"author":{"gitId":"ChuaZiLong"},"content":" public String getDescription() {","lastModifiedDate":"2024-01-30"},{"lineNumber":357,"author":{"gitId":"ChuaZiLong"},"content":" return description;","lastModifiedDate":"2024-01-30"},{"lineNumber":358,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":359,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":360,"author":{"gitId":"ChuaZiLong"},"content":" public void markAsDone() {","lastModifiedDate":"2024-01-30"},{"lineNumber":361,"author":{"gitId":"ChuaZiLong"},"content":" isDone \u003d true;","lastModifiedDate":"2024-01-30"},{"lineNumber":362,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":363,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":364,"author":{"gitId":"ChuaZiLong"},"content":" public void markAsNotDone() {","lastModifiedDate":"2024-01-30"},{"lineNumber":365,"author":{"gitId":"ChuaZiLong"},"content":" isDone \u003d false;","lastModifiedDate":"2024-01-30"},{"lineNumber":366,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":367,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":368,"author":{"gitId":"ChuaZiLong"},"content":" public String toString() {","lastModifiedDate":"2024-01-30"},{"lineNumber":369,"author":{"gitId":"ChuaZiLong"},"content":" return getStatusIcon() + getDescription();","lastModifiedDate":"2024-01-30"},{"lineNumber":370,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":371,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":372,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":373,"author":{"gitId":"ChuaZiLong"},"content":"class Todo extends Task {","lastModifiedDate":"2024-01-30"},{"lineNumber":374,"author":{"gitId":"ChuaZiLong"},"content":" public Todo(String description) {","lastModifiedDate":"2024-01-30"},{"lineNumber":375,"author":{"gitId":"ChuaZiLong"},"content":" super(description, TaskType.TODO);","lastModifiedDate":"2024-01-30"},{"lineNumber":376,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":377,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":378,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":379,"author":{"gitId":"ChuaZiLong"},"content":"class Deadline extends Task {","lastModifiedDate":"2024-01-30"},{"lineNumber":380,"author":{"gitId":"ChuaZiLong"},"content":" protected LocalDateTime by;","lastModifiedDate":"2024-01-30"},{"lineNumber":381,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":382,"author":{"gitId":"ChuaZiLong"},"content":" public Deadline(String description, LocalDateTime by) {","lastModifiedDate":"2024-01-30"},{"lineNumber":383,"author":{"gitId":"ChuaZiLong"},"content":" super(description, TaskType.DEADLINE);","lastModifiedDate":"2024-01-30"},{"lineNumber":384,"author":{"gitId":"ChuaZiLong"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-30"},{"lineNumber":385,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":386,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":387,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":388,"author":{"gitId":"ChuaZiLong"},"content":" public String getDescription() {","lastModifiedDate":"2024-01-30"},{"lineNumber":389,"author":{"gitId":"ChuaZiLong"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"MMM dd yyyy, HH:mm\");","lastModifiedDate":"2024-01-30"},{"lineNumber":390,"author":{"gitId":"ChuaZiLong"},"content":" return super.getDescription() + \" (by: \" + formatter.format(by) + \")\";","lastModifiedDate":"2024-01-30"},{"lineNumber":391,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":392,"author":{"gitId":"ChuaZiLong"},"content":" public LocalDateTime getBy() {","lastModifiedDate":"2024-01-30"},{"lineNumber":393,"author":{"gitId":"ChuaZiLong"},"content":" return by;","lastModifiedDate":"2024-01-30"},{"lineNumber":394,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":395,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":396,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":397,"author":{"gitId":"ChuaZiLong"},"content":"class Event extends Task {","lastModifiedDate":"2024-01-30"},{"lineNumber":398,"author":{"gitId":"ChuaZiLong"},"content":" protected LocalDateTime from;","lastModifiedDate":"2024-01-30"},{"lineNumber":399,"author":{"gitId":"ChuaZiLong"},"content":" protected LocalDateTime to;","lastModifiedDate":"2024-01-30"},{"lineNumber":400,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":401,"author":{"gitId":"ChuaZiLong"},"content":" public Event(String description, LocalDateTime from, LocalDateTime to) {","lastModifiedDate":"2024-01-30"},{"lineNumber":402,"author":{"gitId":"ChuaZiLong"},"content":" super(description, TaskType.EVENT);","lastModifiedDate":"2024-01-30"},{"lineNumber":403,"author":{"gitId":"ChuaZiLong"},"content":" this.from \u003d from;","lastModifiedDate":"2024-01-30"},{"lineNumber":404,"author":{"gitId":"ChuaZiLong"},"content":" this.to \u003d to;","lastModifiedDate":"2024-01-30"},{"lineNumber":405,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":406,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":407,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":408,"author":{"gitId":"ChuaZiLong"},"content":" public String getDescription() {","lastModifiedDate":"2024-01-30"},{"lineNumber":409,"author":{"gitId":"ChuaZiLong"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"MMM dd yyyy, HH:mm\");","lastModifiedDate":"2024-01-30"},{"lineNumber":410,"author":{"gitId":"ChuaZiLong"},"content":" return super.getDescription() + \" (from: \" + formatter.format(from) + \" to: \" + formatter.format(to) + \")\";","lastModifiedDate":"2024-01-30"},{"lineNumber":411,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":412,"author":{"gitId":"ChuaZiLong"},"content":" public LocalDateTime getFrom() {","lastModifiedDate":"2024-01-30"},{"lineNumber":413,"author":{"gitId":"ChuaZiLong"},"content":" return from;","lastModifiedDate":"2024-01-30"},{"lineNumber":414,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":415,"author":{"gitId":"ChuaZiLong"},"content":" public LocalDateTime getTo() {","lastModifiedDate":"2024-01-30"},{"lineNumber":416,"author":{"gitId":"ChuaZiLong"},"content":" return to;","lastModifiedDate":"2024-01-30"},{"lineNumber":417,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":418,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":419,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":420,"author":{"gitId":"ChuaZiLong"},"content":"abstract class Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":421,"author":{"gitId":"ChuaZiLong"},"content":" public abstract void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException;","lastModifiedDate":"2024-01-30"},{"lineNumber":422,"author":{"gitId":"ChuaZiLong"},"content":" public abstract boolean isExit();","lastModifiedDate":"2024-01-30"},{"lineNumber":423,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":424,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":425,"author":{"gitId":"ChuaZiLong"},"content":"class MarkCommand extends Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":426,"author":{"gitId":"ChuaZiLong"},"content":" private int index;","lastModifiedDate":"2024-01-30"},{"lineNumber":427,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":428,"author":{"gitId":"ChuaZiLong"},"content":" public MarkCommand(int index) {","lastModifiedDate":"2024-01-30"},{"lineNumber":429,"author":{"gitId":"ChuaZiLong"},"content":" this.index \u003d index;","lastModifiedDate":"2024-01-30"},{"lineNumber":430,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":431,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":432,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":433,"author":{"gitId":"ChuaZiLong"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":434,"author":{"gitId":"ChuaZiLong"},"content":" if (index \u003c 0 || index \u003e\u003d tasks.getSize()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":435,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"Invalid task number.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":436,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":437,"author":{"gitId":"ChuaZiLong"},"content":" Task task \u003d tasks.getTask(index);","lastModifiedDate":"2024-01-30"},{"lineNumber":438,"author":{"gitId":"ChuaZiLong"},"content":" task.markAsDone();","lastModifiedDate":"2024-01-30"},{"lineNumber":439,"author":{"gitId":"ChuaZiLong"},"content":" ui.showMarkedTask(task);","lastModifiedDate":"2024-01-30"},{"lineNumber":440,"author":{"gitId":"ChuaZiLong"},"content":" storage.save(tasks);","lastModifiedDate":"2024-01-30"},{"lineNumber":441,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":442,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":443,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":444,"author":{"gitId":"ChuaZiLong"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-30"},{"lineNumber":445,"author":{"gitId":"ChuaZiLong"},"content":" return false;","lastModifiedDate":"2024-01-30"},{"lineNumber":446,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":447,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":448,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":449,"author":{"gitId":"ChuaZiLong"},"content":"class UnmarkCommand extends Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":450,"author":{"gitId":"ChuaZiLong"},"content":" private int index;","lastModifiedDate":"2024-01-30"},{"lineNumber":451,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":452,"author":{"gitId":"ChuaZiLong"},"content":" public UnmarkCommand(int index) {","lastModifiedDate":"2024-01-30"},{"lineNumber":453,"author":{"gitId":"ChuaZiLong"},"content":" this.index \u003d index;","lastModifiedDate":"2024-01-30"},{"lineNumber":454,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":455,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":456,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":457,"author":{"gitId":"ChuaZiLong"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":458,"author":{"gitId":"ChuaZiLong"},"content":" if (index \u003c 0 || index \u003e\u003d tasks.getSize()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":459,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"Invalid task number.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":460,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":461,"author":{"gitId":"ChuaZiLong"},"content":" Task task \u003d tasks.getTask(index);","lastModifiedDate":"2024-01-30"},{"lineNumber":462,"author":{"gitId":"ChuaZiLong"},"content":" task.markAsNotDone();","lastModifiedDate":"2024-01-30"},{"lineNumber":463,"author":{"gitId":"ChuaZiLong"},"content":" ui.showUnmarkedTask(task);","lastModifiedDate":"2024-01-30"},{"lineNumber":464,"author":{"gitId":"ChuaZiLong"},"content":" storage.save(tasks);","lastModifiedDate":"2024-01-30"},{"lineNumber":465,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":466,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":467,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":468,"author":{"gitId":"ChuaZiLong"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-30"},{"lineNumber":469,"author":{"gitId":"ChuaZiLong"},"content":" return false;","lastModifiedDate":"2024-01-30"},{"lineNumber":470,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":471,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":472,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":473,"author":{"gitId":"ChuaZiLong"},"content":"class DeleteCommand extends Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":474,"author":{"gitId":"ChuaZiLong"},"content":" private int index;","lastModifiedDate":"2024-01-30"},{"lineNumber":475,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":476,"author":{"gitId":"ChuaZiLong"},"content":" public DeleteCommand(int index) {","lastModifiedDate":"2024-01-30"},{"lineNumber":477,"author":{"gitId":"ChuaZiLong"},"content":" this.index \u003d index;","lastModifiedDate":"2024-01-30"},{"lineNumber":478,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":479,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":480,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":481,"author":{"gitId":"ChuaZiLong"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":482,"author":{"gitId":"ChuaZiLong"},"content":" if (index \u003c 0 || index \u003e\u003d tasks.getSize()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":483,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"Invalid task number.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":484,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":485,"author":{"gitId":"ChuaZiLong"},"content":" Task task \u003d tasks.removeTask(index);","lastModifiedDate":"2024-01-30"},{"lineNumber":486,"author":{"gitId":"ChuaZiLong"},"content":" ui.showDeletedTask(task, tasks.getSize());","lastModifiedDate":"2024-01-30"},{"lineNumber":487,"author":{"gitId":"ChuaZiLong"},"content":" storage.save(tasks);","lastModifiedDate":"2024-01-30"},{"lineNumber":488,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":489,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":490,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":491,"author":{"gitId":"ChuaZiLong"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-30"},{"lineNumber":492,"author":{"gitId":"ChuaZiLong"},"content":" return false;","lastModifiedDate":"2024-01-30"},{"lineNumber":493,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":494,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":495,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":496,"author":{"gitId":"ChuaZiLong"},"content":"class ExitCommand extends Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":497,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":498,"author":{"gitId":"ChuaZiLong"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2024-01-30"},{"lineNumber":499,"author":{"gitId":"ChuaZiLong"},"content":" ui.showGoodbye();","lastModifiedDate":"2024-01-30"},{"lineNumber":500,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":501,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":502,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":503,"author":{"gitId":"ChuaZiLong"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-30"},{"lineNumber":504,"author":{"gitId":"ChuaZiLong"},"content":" return true; // Indicate that the application should exit","lastModifiedDate":"2024-01-30"},{"lineNumber":505,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":506,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":507,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":508,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":509,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":510,"author":{"gitId":"ChuaZiLong"},"content":"class ListCommand extends Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":511,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":512,"author":{"gitId":"ChuaZiLong"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2024-01-30"},{"lineNumber":513,"author":{"gitId":"ChuaZiLong"},"content":" ui.showTaskList(tasks);","lastModifiedDate":"2024-01-30"},{"lineNumber":514,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":515,"author":{"gitId":"ChuaZiLong"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-30"},{"lineNumber":516,"author":{"gitId":"ChuaZiLong"},"content":" return false;","lastModifiedDate":"2024-01-30"},{"lineNumber":517,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":518,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":519,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":520,"author":{"gitId":"ChuaZiLong"},"content":"class AddTodoCommand extends Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":521,"author":{"gitId":"ChuaZiLong"},"content":" private String description;","lastModifiedDate":"2024-01-30"},{"lineNumber":522,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":523,"author":{"gitId":"ChuaZiLong"},"content":" public AddTodoCommand(String description) {","lastModifiedDate":"2024-01-30"},{"lineNumber":524,"author":{"gitId":"ChuaZiLong"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-30"},{"lineNumber":525,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":526,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":527,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":528,"author":{"gitId":"ChuaZiLong"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2024-01-30"},{"lineNumber":529,"author":{"gitId":"ChuaZiLong"},"content":" Todo newTodo \u003d new Todo(description);","lastModifiedDate":"2024-01-30"},{"lineNumber":530,"author":{"gitId":"ChuaZiLong"},"content":" tasks.addTask(newTodo);","lastModifiedDate":"2024-01-30"},{"lineNumber":531,"author":{"gitId":"ChuaZiLong"},"content":" ui.showTaskAdded(newTodo, tasks.getSize());","lastModifiedDate":"2024-01-30"},{"lineNumber":532,"author":{"gitId":"ChuaZiLong"},"content":" storage.save(tasks);","lastModifiedDate":"2024-01-30"},{"lineNumber":533,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":534,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":535,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":536,"author":{"gitId":"ChuaZiLong"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-30"},{"lineNumber":537,"author":{"gitId":"ChuaZiLong"},"content":" return false;","lastModifiedDate":"2024-01-30"},{"lineNumber":538,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":539,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":540,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":541,"author":{"gitId":"ChuaZiLong"},"content":"class AddDeadlineCommand extends Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":542,"author":{"gitId":"ChuaZiLong"},"content":" private String description;","lastModifiedDate":"2024-01-30"},{"lineNumber":543,"author":{"gitId":"ChuaZiLong"},"content":" private LocalDateTime by;","lastModifiedDate":"2024-01-30"},{"lineNumber":544,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":545,"author":{"gitId":"ChuaZiLong"},"content":" public AddDeadlineCommand(String description, LocalDateTime by) {","lastModifiedDate":"2024-01-30"},{"lineNumber":546,"author":{"gitId":"ChuaZiLong"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-30"},{"lineNumber":547,"author":{"gitId":"ChuaZiLong"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-30"},{"lineNumber":548,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":549,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":550,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":551,"author":{"gitId":"ChuaZiLong"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2024-01-30"},{"lineNumber":552,"author":{"gitId":"ChuaZiLong"},"content":" Deadline newDeadline \u003d new Deadline(description, by);","lastModifiedDate":"2024-01-30"},{"lineNumber":553,"author":{"gitId":"ChuaZiLong"},"content":" tasks.addTask(newDeadline);","lastModifiedDate":"2024-01-30"},{"lineNumber":554,"author":{"gitId":"ChuaZiLong"},"content":" ui.showTaskAdded(newDeadline, tasks.getSize());","lastModifiedDate":"2024-01-30"},{"lineNumber":555,"author":{"gitId":"ChuaZiLong"},"content":" storage.save(tasks);","lastModifiedDate":"2024-01-30"},{"lineNumber":556,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":557,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":558,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":559,"author":{"gitId":"ChuaZiLong"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-30"},{"lineNumber":560,"author":{"gitId":"ChuaZiLong"},"content":" return false;","lastModifiedDate":"2024-01-30"},{"lineNumber":561,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":562,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":563,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":564,"author":{"gitId":"ChuaZiLong"},"content":"class AddEventCommand extends Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":565,"author":{"gitId":"ChuaZiLong"},"content":" private String description;","lastModifiedDate":"2024-01-30"},{"lineNumber":566,"author":{"gitId":"ChuaZiLong"},"content":" private LocalDateTime start;","lastModifiedDate":"2024-01-30"},{"lineNumber":567,"author":{"gitId":"ChuaZiLong"},"content":" private LocalDateTime end;","lastModifiedDate":"2024-01-30"},{"lineNumber":568,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":569,"author":{"gitId":"ChuaZiLong"},"content":" public AddEventCommand(String description, LocalDateTime start, LocalDateTime end) {","lastModifiedDate":"2024-01-30"},{"lineNumber":570,"author":{"gitId":"ChuaZiLong"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-30"},{"lineNumber":571,"author":{"gitId":"ChuaZiLong"},"content":" this.start \u003d start;","lastModifiedDate":"2024-01-30"},{"lineNumber":572,"author":{"gitId":"ChuaZiLong"},"content":" this.end \u003d end;","lastModifiedDate":"2024-01-30"},{"lineNumber":573,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":574,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":575,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":576,"author":{"gitId":"ChuaZiLong"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2024-01-30"},{"lineNumber":577,"author":{"gitId":"ChuaZiLong"},"content":" Event newEvent \u003d new Event(description, start, end);","lastModifiedDate":"2024-01-30"},{"lineNumber":578,"author":{"gitId":"ChuaZiLong"},"content":" tasks.addTask(newEvent);","lastModifiedDate":"2024-01-30"},{"lineNumber":579,"author":{"gitId":"ChuaZiLong"},"content":" ui.showTaskAdded(newEvent, tasks.getSize());","lastModifiedDate":"2024-01-30"},{"lineNumber":580,"author":{"gitId":"ChuaZiLong"},"content":" storage.save(tasks);","lastModifiedDate":"2024-01-30"},{"lineNumber":581,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":582,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":583,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":584,"author":{"gitId":"ChuaZiLong"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-30"},{"lineNumber":585,"author":{"gitId":"ChuaZiLong"},"content":" return false;","lastModifiedDate":"2024-01-30"},{"lineNumber":586,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":587,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"ChuaZiLong":587}}] +[{"path":"build.gradle","fileType":"gradle","lines":[{"lineNumber":1,"author":{"gitId":"ChuaZiLong"},"content":"plugins {","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"ChuaZiLong"},"content":" id \u0027java\u0027","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"ChuaZiLong"},"content":" id \u0027application\u0027","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"ChuaZiLong"},"content":" id \u0027checkstyle\u0027","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"ChuaZiLong"},"content":" id \u0027com.github.johnrengelman.shadow\u0027 version \u00277.1.2\u0027","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"ChuaZiLong"},"content":"application {","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"ChuaZiLong"},"content":" mainClass.set(\"seedu.duke.Duke\")","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"ChuaZiLong"},"content":"repositories {","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"ChuaZiLong"},"content":" mavenCentral()","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"ChuaZiLong"},"content":" maven { url \u0027https://oss.sonatype.org/content/repositories/snapshots/\u0027 }","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"ChuaZiLong"},"content":"dependencies {","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"ChuaZiLong"},"content":" testImplementation group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-api\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"ChuaZiLong"},"content":" testRuntimeOnly group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-engine\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"ChuaZiLong"},"content":"test {","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"ChuaZiLong"},"content":" useJUnitPlatform()","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"ChuaZiLong"},"content":"// Define the main class of your application","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"ChuaZiLong"},"content":"mainClassName \u003d \u0027Duke\u0027 // Replace with your own main class","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"ChuaZiLong"},"content":"jar {","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"ChuaZiLong"},"content":" manifest {","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"ChuaZiLong"},"content":" attributes(","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"ChuaZiLong"},"content":" \u0027Main-Class\u0027: mainClassName","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"ChuaZiLong"},"content":" )","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"ChuaZiLong"},"content":" from {","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"ChuaZiLong"},"content":" configurations.runtimeClasspath.collect { it.isDirectory() ? it : zipTree(it) }","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"ChuaZiLong"},"content":"shadowJar {","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"ChuaZiLong"},"content":" archiveFileName \u003d \u0027duke.jar\u0027","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"ChuaZiLong":43}},{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ChuaZiLong"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"ChuaZiLong"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"ChuaZiLong"},"content":"import java.util.Date;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"ChuaZiLong"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"ChuaZiLong"},"content":"import java.io.File;","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"ChuaZiLong"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"ChuaZiLong"},"content":"import java.io.PrintWriter;","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"ChuaZiLong"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"ChuaZiLong"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"ChuaZiLong"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"ChuaZiLong"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"ChuaZiLong"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"ChuaZiLong"},"content":"class DukeException extends Exception {","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"ChuaZiLong"},"content":" public DukeException(String message) {","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"ChuaZiLong"},"content":" super(message);","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"ChuaZiLong"},"content":"class Ui {","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"ChuaZiLong"},"content":" private Scanner scanner;","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"ChuaZiLong"},"content":" public Ui() {","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"ChuaZiLong"},"content":" scanner \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"ChuaZiLong"},"content":" public void showWelcome() {","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"Hello! I\u0027m SCZL\");","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"What can I do for you?\");","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"ChuaZiLong"},"content":" public void showGoodbye() {","lastModifiedDate":"2024-01-28"},{"lineNumber":33,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"Bye. Hope to see you again soon!\");","lastModifiedDate":"2024-01-28"},{"lineNumber":34,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":35,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"ChuaZiLong"},"content":" public void showError(String message) {","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(message);","lastModifiedDate":"2024-01-28"},{"lineNumber":38,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":39,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":40,"author":{"gitId":"ChuaZiLong"},"content":" public void showTaskAdded(Task task, int taskCount) {","lastModifiedDate":"2024-01-28"},{"lineNumber":41,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2024-01-28"},{"lineNumber":42,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\" \" + task);","lastModifiedDate":"2024-01-28"},{"lineNumber":43,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"Now you have \" + taskCount + \" tasks in the list.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":44,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":45,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":46,"author":{"gitId":"ChuaZiLong"},"content":" public void showTaskList(TaskList tasks) {","lastModifiedDate":"2024-01-28"},{"lineNumber":47,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"Here are the tasks in your list:\");","lastModifiedDate":"2024-01-28"},{"lineNumber":48,"author":{"gitId":"ChuaZiLong"},"content":" for (int i \u003d 0; i \u003c tasks.getSize(); i++) {","lastModifiedDate":"2024-01-28"},{"lineNumber":49,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println((i + 1) + \".\" + tasks.getTask(i));","lastModifiedDate":"2024-01-28"},{"lineNumber":50,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":51,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":52,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":53,"author":{"gitId":"ChuaZiLong"},"content":" public String readCommand() {","lastModifiedDate":"2024-01-28"},{"lineNumber":54,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"ChuaZiLong"},"content":" return scanner.nextLine();","lastModifiedDate":"2024-01-28"},{"lineNumber":56,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":57,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":58,"author":{"gitId":"ChuaZiLong"},"content":" public void showLoadingError() {","lastModifiedDate":"2024-01-28"},{"lineNumber":59,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":60,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"Error loading file.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":61,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":62,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":63,"author":{"gitId":"ChuaZiLong"},"content":" public void closeScanner() {","lastModifiedDate":"2024-01-28"},{"lineNumber":64,"author":{"gitId":"ChuaZiLong"},"content":" scanner.close();","lastModifiedDate":"2024-01-28"},{"lineNumber":65,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":66,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":67,"author":{"gitId":"ChuaZiLong"},"content":" public void showMarkedTask(Task task) {","lastModifiedDate":"2024-01-30"},{"lineNumber":68,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2024-01-30"},{"lineNumber":69,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\" \" + task);","lastModifiedDate":"2024-01-30"},{"lineNumber":70,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":71,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":72,"author":{"gitId":"ChuaZiLong"},"content":" public void showUnmarkedTask(Task task) {","lastModifiedDate":"2024-01-30"},{"lineNumber":73,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2024-01-30"},{"lineNumber":74,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\" \" + task);","lastModifiedDate":"2024-01-30"},{"lineNumber":75,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":76,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":77,"author":{"gitId":"ChuaZiLong"},"content":" public void showDeletedTask(Task task, int taskCount) {","lastModifiedDate":"2024-01-30"},{"lineNumber":78,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"Noted. I\u0027ve removed this task:\");","lastModifiedDate":"2024-01-30"},{"lineNumber":79,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\" \" + task);","lastModifiedDate":"2024-01-30"},{"lineNumber":80,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"Now you have \" + taskCount + \" tasks in the list.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":81,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":82,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-28"},{"lineNumber":83,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":84,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":85,"author":{"gitId":"ChuaZiLong"},"content":"class Storage {","lastModifiedDate":"2024-01-28"},{"lineNumber":86,"author":{"gitId":"ChuaZiLong"},"content":" private String filePath;","lastModifiedDate":"2024-01-28"},{"lineNumber":87,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":88,"author":{"gitId":"ChuaZiLong"},"content":" public Storage(String filePath) {","lastModifiedDate":"2024-01-28"},{"lineNumber":89,"author":{"gitId":"ChuaZiLong"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2024-01-28"},{"lineNumber":90,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":91,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":92,"author":{"gitId":"ChuaZiLong"},"content":" public ArrayList\u003cTask\u003e load() throws DukeException {","lastModifiedDate":"2024-01-28"},{"lineNumber":93,"author":{"gitId":"ChuaZiLong"},"content":" ArrayList\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-28"},{"lineNumber":94,"author":{"gitId":"ChuaZiLong"},"content":" File file \u003d new File(filePath);","lastModifiedDate":"2024-01-28"},{"lineNumber":95,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":96,"author":{"gitId":"ChuaZiLong"},"content":" if (!file.exists()) {","lastModifiedDate":"2024-01-28"},{"lineNumber":97,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"File not found\");","lastModifiedDate":"2024-01-28"},{"lineNumber":98,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":99,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":100,"author":{"gitId":"ChuaZiLong"},"content":" try (Scanner fileScanner \u003d new Scanner(file)) {","lastModifiedDate":"2024-01-28"},{"lineNumber":101,"author":{"gitId":"ChuaZiLong"},"content":" while (fileScanner.hasNext()) {","lastModifiedDate":"2024-01-28"},{"lineNumber":102,"author":{"gitId":"ChuaZiLong"},"content":" String line \u003d fileScanner.nextLine();","lastModifiedDate":"2024-01-28"},{"lineNumber":103,"author":{"gitId":"ChuaZiLong"},"content":" String[] parts \u003d line.split(\" \\\\| \");","lastModifiedDate":"2024-01-28"},{"lineNumber":104,"author":{"gitId":"ChuaZiLong"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":105,"author":{"gitId":"ChuaZiLong"},"content":" String type \u003d parts[0];","lastModifiedDate":"2024-01-28"},{"lineNumber":106,"author":{"gitId":"ChuaZiLong"},"content":" boolean isDone \u003d parts[1].equals(\"1\");","lastModifiedDate":"2024-01-28"},{"lineNumber":107,"author":{"gitId":"ChuaZiLong"},"content":" String description \u003d parts[2];","lastModifiedDate":"2024-01-28"},{"lineNumber":108,"author":{"gitId":"ChuaZiLong"},"content":" Task task \u003d null;","lastModifiedDate":"2024-01-28"},{"lineNumber":109,"author":{"gitId":"ChuaZiLong"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd HH:mm\");","lastModifiedDate":"2024-01-28"},{"lineNumber":110,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":111,"author":{"gitId":"ChuaZiLong"},"content":" switch (type) {","lastModifiedDate":"2024-01-28"},{"lineNumber":112,"author":{"gitId":"ChuaZiLong"},"content":" case \"T\":","lastModifiedDate":"2024-01-28"},{"lineNumber":113,"author":{"gitId":"ChuaZiLong"},"content":" task \u003d new Todo(description);","lastModifiedDate":"2024-01-28"},{"lineNumber":114,"author":{"gitId":"ChuaZiLong"},"content":" break;","lastModifiedDate":"2024-01-28"},{"lineNumber":115,"author":{"gitId":"ChuaZiLong"},"content":" case \"D\":","lastModifiedDate":"2024-01-28"},{"lineNumber":116,"author":{"gitId":"ChuaZiLong"},"content":" if (parts.length \u003c 4) throw new DukeException(\"Invalid deadline format in file.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":117,"author":{"gitId":"ChuaZiLong"},"content":" LocalDateTime byDate \u003d LocalDateTime.parse(parts[3], formatter);","lastModifiedDate":"2024-01-28"},{"lineNumber":118,"author":{"gitId":"ChuaZiLong"},"content":" task \u003d new Deadline(description, byDate);","lastModifiedDate":"2024-01-28"},{"lineNumber":119,"author":{"gitId":"ChuaZiLong"},"content":" break;","lastModifiedDate":"2024-01-28"},{"lineNumber":120,"author":{"gitId":"ChuaZiLong"},"content":" case \"E\":","lastModifiedDate":"2024-01-28"},{"lineNumber":121,"author":{"gitId":"ChuaZiLong"},"content":" if (parts.length \u003c 5) throw new DukeException(\"Invalid event format in file.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":122,"author":{"gitId":"ChuaZiLong"},"content":" LocalDateTime from \u003d LocalDateTime.parse(parts[3], formatter);","lastModifiedDate":"2024-01-28"},{"lineNumber":123,"author":{"gitId":"ChuaZiLong"},"content":" LocalDateTime to \u003d LocalDateTime.parse(parts[4], formatter);","lastModifiedDate":"2024-01-28"},{"lineNumber":124,"author":{"gitId":"ChuaZiLong"},"content":" task \u003d new Event(description, from, to);","lastModifiedDate":"2024-01-28"},{"lineNumber":125,"author":{"gitId":"ChuaZiLong"},"content":" break;","lastModifiedDate":"2024-01-28"},{"lineNumber":126,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":127,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":128,"author":{"gitId":"ChuaZiLong"},"content":" if (task !\u003d null) {","lastModifiedDate":"2024-01-28"},{"lineNumber":129,"author":{"gitId":"ChuaZiLong"},"content":" if (isDone) {","lastModifiedDate":"2024-01-28"},{"lineNumber":130,"author":{"gitId":"ChuaZiLong"},"content":" task.markAsDone();","lastModifiedDate":"2024-01-28"},{"lineNumber":131,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":132,"author":{"gitId":"ChuaZiLong"},"content":" tasks.add(task);","lastModifiedDate":"2024-01-28"},{"lineNumber":133,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":134,"author":{"gitId":"ChuaZiLong"},"content":" } catch (DukeException | DateTimeParseException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":135,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"Skipping invalid task: \" + line);","lastModifiedDate":"2024-01-28"},{"lineNumber":136,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":137,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":138,"author":{"gitId":"ChuaZiLong"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":139,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"File not found: \" + e.getMessage());","lastModifiedDate":"2024-01-28"},{"lineNumber":140,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":141,"author":{"gitId":"ChuaZiLong"},"content":" return tasks;","lastModifiedDate":"2024-01-28"},{"lineNumber":142,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":143,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":144,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":145,"author":{"gitId":"ChuaZiLong"},"content":" public void save(TaskList tasks) {","lastModifiedDate":"2024-01-28"},{"lineNumber":146,"author":{"gitId":"ChuaZiLong"},"content":" try (PrintWriter writer \u003d new PrintWriter(new FileWriter(filePath))) {","lastModifiedDate":"2024-01-28"},{"lineNumber":147,"author":{"gitId":"ChuaZiLong"},"content":" for (int i \u003d 0; i \u003c tasks.getSize(); i++) {","lastModifiedDate":"2024-01-28"},{"lineNumber":148,"author":{"gitId":"ChuaZiLong"},"content":" Task task \u003d tasks.getTask(i);","lastModifiedDate":"2024-01-28"},{"lineNumber":149,"author":{"gitId":"ChuaZiLong"},"content":" writer.println(taskToFileString(task));","lastModifiedDate":"2024-01-28"},{"lineNumber":150,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":151,"author":{"gitId":"ChuaZiLong"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":152,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"An error occurred while saving tasks to file: \" + e.getMessage());","lastModifiedDate":"2024-01-28"},{"lineNumber":153,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":154,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":155,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":156,"author":{"gitId":"ChuaZiLong"},"content":" private String taskToFileString(Task task) {","lastModifiedDate":"2024-01-28"},{"lineNumber":157,"author":{"gitId":"ChuaZiLong"},"content":" String type \u003d task instanceof Todo ? \"T\" :","lastModifiedDate":"2024-01-28"},{"lineNumber":158,"author":{"gitId":"ChuaZiLong"},"content":" task instanceof Deadline ? \"D\" :","lastModifiedDate":"2024-01-28"},{"lineNumber":159,"author":{"gitId":"ChuaZiLong"},"content":" task instanceof Event ? \"E\" : \"\";","lastModifiedDate":"2024-01-28"},{"lineNumber":160,"author":{"gitId":"ChuaZiLong"},"content":" String status \u003d task.isDone ? \"1\" : \"0\";","lastModifiedDate":"2024-01-28"},{"lineNumber":161,"author":{"gitId":"ChuaZiLong"},"content":" String details \u003d task.getDescription();","lastModifiedDate":"2024-01-28"},{"lineNumber":162,"author":{"gitId":"ChuaZiLong"},"content":" String additionalInfo \u003d \"\";","lastModifiedDate":"2024-01-28"},{"lineNumber":163,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":164,"author":{"gitId":"ChuaZiLong"},"content":" if (task instanceof Deadline) {","lastModifiedDate":"2024-01-28"},{"lineNumber":165,"author":{"gitId":"ChuaZiLong"},"content":" Deadline deadline \u003d (Deadline) task;","lastModifiedDate":"2024-01-28"},{"lineNumber":166,"author":{"gitId":"ChuaZiLong"},"content":" additionalInfo \u003d \" | \" + deadline.getBy().format(DateTimeFormatter.ofPattern(\"yyyy-MM-dd HH:mm\"));","lastModifiedDate":"2024-01-28"},{"lineNumber":167,"author":{"gitId":"ChuaZiLong"},"content":" } else if (task instanceof Event) {","lastModifiedDate":"2024-01-28"},{"lineNumber":168,"author":{"gitId":"ChuaZiLong"},"content":" Event event \u003d (Event) task;","lastModifiedDate":"2024-01-28"},{"lineNumber":169,"author":{"gitId":"ChuaZiLong"},"content":" additionalInfo \u003d \" | \" + event.getFrom().format(DateTimeFormatter.ofPattern(\"yyyy-MM-dd HH:mm\")) +","lastModifiedDate":"2024-01-28"},{"lineNumber":170,"author":{"gitId":"ChuaZiLong"},"content":" \" | \" + event.getTo().format(DateTimeFormatter.ofPattern(\"yyyy-MM-dd HH:mm\"));","lastModifiedDate":"2024-01-28"},{"lineNumber":171,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":172,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":173,"author":{"gitId":"ChuaZiLong"},"content":" return type + \" | \" + status + \" | \" + details + additionalInfo;","lastModifiedDate":"2024-01-28"},{"lineNumber":174,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":175,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":176,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-28"},{"lineNumber":177,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":178,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":179,"author":{"gitId":"ChuaZiLong"},"content":"class Parser {","lastModifiedDate":"2024-01-28"},{"lineNumber":180,"author":{"gitId":"ChuaZiLong"},"content":" private static final DateTimeFormatter dateTimeFormatter \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd HHmm\");","lastModifiedDate":"2024-01-28"},{"lineNumber":181,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":182,"author":{"gitId":"ChuaZiLong"},"content":" public static Command parse(String fullCommand) throws DukeException {","lastModifiedDate":"2024-01-28"},{"lineNumber":183,"author":{"gitId":"ChuaZiLong"},"content":" String[] commandParts \u003d fullCommand.split(\" \", 2);","lastModifiedDate":"2024-01-28"},{"lineNumber":184,"author":{"gitId":"ChuaZiLong"},"content":" String commandType \u003d commandParts[0];","lastModifiedDate":"2024-01-28"},{"lineNumber":185,"author":{"gitId":"ChuaZiLong"},"content":" String commandArgs \u003d commandParts.length \u003e 1 ? commandParts[1] : \"\";","lastModifiedDate":"2024-01-28"},{"lineNumber":186,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":187,"author":{"gitId":"ChuaZiLong"},"content":" switch (commandType) {","lastModifiedDate":"2024-01-28"},{"lineNumber":188,"author":{"gitId":"ChuaZiLong"},"content":" case \"todo\":","lastModifiedDate":"2024-01-28"},{"lineNumber":189,"author":{"gitId":"ChuaZiLong"},"content":" if (commandArgs.isEmpty()) {","lastModifiedDate":"2024-01-28"},{"lineNumber":190,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"The description of a todo cannot be empty.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":191,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":192,"author":{"gitId":"ChuaZiLong"},"content":" return new AddTodoCommand(commandArgs);","lastModifiedDate":"2024-01-28"},{"lineNumber":193,"author":{"gitId":"ChuaZiLong"},"content":" case \"deadline\":","lastModifiedDate":"2024-01-28"},{"lineNumber":194,"author":{"gitId":"ChuaZiLong"},"content":" return parseAddDeadlineCommand(commandArgs);","lastModifiedDate":"2024-01-28"},{"lineNumber":195,"author":{"gitId":"ChuaZiLong"},"content":" case \"event\":","lastModifiedDate":"2024-01-28"},{"lineNumber":196,"author":{"gitId":"ChuaZiLong"},"content":" return parseAddEventCommand(commandArgs);","lastModifiedDate":"2024-01-28"},{"lineNumber":197,"author":{"gitId":"ChuaZiLong"},"content":" case \"list\":","lastModifiedDate":"2024-01-28"},{"lineNumber":198,"author":{"gitId":"ChuaZiLong"},"content":" return new ListCommand();","lastModifiedDate":"2024-01-28"},{"lineNumber":199,"author":{"gitId":"ChuaZiLong"},"content":" case \"mark\":","lastModifiedDate":"2024-01-30"},{"lineNumber":200,"author":{"gitId":"ChuaZiLong"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":201,"author":{"gitId":"ChuaZiLong"},"content":" int index \u003d Integer.parseInt(commandArgs) - 1;","lastModifiedDate":"2024-01-30"},{"lineNumber":202,"author":{"gitId":"ChuaZiLong"},"content":" return new MarkCommand(index);","lastModifiedDate":"2024-01-30"},{"lineNumber":203,"author":{"gitId":"ChuaZiLong"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":204,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"Invalid task number format.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":205,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":206,"author":{"gitId":"ChuaZiLong"},"content":" case \"unmark\":","lastModifiedDate":"2024-01-30"},{"lineNumber":207,"author":{"gitId":"ChuaZiLong"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":208,"author":{"gitId":"ChuaZiLong"},"content":" int index \u003d Integer.parseInt(commandArgs) - 1;","lastModifiedDate":"2024-01-30"},{"lineNumber":209,"author":{"gitId":"ChuaZiLong"},"content":" return new UnmarkCommand(index);","lastModifiedDate":"2024-01-30"},{"lineNumber":210,"author":{"gitId":"ChuaZiLong"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":211,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"Invalid task number format.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":212,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":213,"author":{"gitId":"ChuaZiLong"},"content":" case \"delete\":","lastModifiedDate":"2024-01-30"},{"lineNumber":214,"author":{"gitId":"ChuaZiLong"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":215,"author":{"gitId":"ChuaZiLong"},"content":" int index \u003d Integer.parseInt(commandArgs) - 1;","lastModifiedDate":"2024-01-30"},{"lineNumber":216,"author":{"gitId":"ChuaZiLong"},"content":" return new DeleteCommand(index);","lastModifiedDate":"2024-01-30"},{"lineNumber":217,"author":{"gitId":"ChuaZiLong"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":218,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"Invalid task number format.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":219,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":220,"author":{"gitId":"ChuaZiLong"},"content":" case \"bye\":","lastModifiedDate":"2024-01-30"},{"lineNumber":221,"author":{"gitId":"ChuaZiLong"},"content":" return new ExitCommand();","lastModifiedDate":"2024-01-30"},{"lineNumber":222,"author":{"gitId":"ChuaZiLong"},"content":" default:","lastModifiedDate":"2024-01-28"},{"lineNumber":223,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"Unknown command\");","lastModifiedDate":"2024-01-28"},{"lineNumber":224,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":225,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":226,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":227,"author":{"gitId":"ChuaZiLong"},"content":" private static Command parseAddDeadlineCommand(String commandArgs) throws DukeException {","lastModifiedDate":"2024-01-28"},{"lineNumber":228,"author":{"gitId":"ChuaZiLong"},"content":" String[] parts \u003d commandArgs.split(\"/by\", 2);","lastModifiedDate":"2024-01-28"},{"lineNumber":229,"author":{"gitId":"ChuaZiLong"},"content":" if (parts.length \u003c 2 || parts[0].trim().isEmpty() || parts[1].trim().isEmpty()) {","lastModifiedDate":"2024-01-28"},{"lineNumber":230,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"Invalid deadline command format.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":231,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":232,"author":{"gitId":"ChuaZiLong"},"content":" String description \u003d parts[0].trim();","lastModifiedDate":"2024-01-28"},{"lineNumber":233,"author":{"gitId":"ChuaZiLong"},"content":" String by \u003d parts[1].trim();","lastModifiedDate":"2024-01-28"},{"lineNumber":234,"author":{"gitId":"ChuaZiLong"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":235,"author":{"gitId":"ChuaZiLong"},"content":" LocalDateTime byDate \u003d LocalDateTime.parse(by, dateTimeFormatter);","lastModifiedDate":"2024-01-28"},{"lineNumber":236,"author":{"gitId":"ChuaZiLong"},"content":" return new AddDeadlineCommand(description, byDate);","lastModifiedDate":"2024-01-28"},{"lineNumber":237,"author":{"gitId":"ChuaZiLong"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":238,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"Invalid date format. Please use yyyy-MM-dd HHmm format.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":239,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":240,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":241,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":242,"author":{"gitId":"ChuaZiLong"},"content":" private static Command parseAddEventCommand(String commandArgs) throws DukeException {","lastModifiedDate":"2024-01-28"},{"lineNumber":243,"author":{"gitId":"ChuaZiLong"},"content":" String[] parts \u003d commandArgs.split(\"/at\", 2);","lastModifiedDate":"2024-01-28"},{"lineNumber":244,"author":{"gitId":"ChuaZiLong"},"content":" if (parts.length \u003c 2 || parts[0].trim().isEmpty() || parts[1].trim().isEmpty()) {","lastModifiedDate":"2024-01-28"},{"lineNumber":245,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"Invalid event command format.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":246,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":247,"author":{"gitId":"ChuaZiLong"},"content":" String description \u003d parts[0].trim();","lastModifiedDate":"2024-01-28"},{"lineNumber":248,"author":{"gitId":"ChuaZiLong"},"content":" String at \u003d parts[1].trim();","lastModifiedDate":"2024-01-28"},{"lineNumber":249,"author":{"gitId":"ChuaZiLong"},"content":" String[] timeParts \u003d at.split(\"-\", 2);","lastModifiedDate":"2024-01-28"},{"lineNumber":250,"author":{"gitId":"ChuaZiLong"},"content":" if (timeParts.length \u003c 2 || timeParts[0].trim().isEmpty() || timeParts[1].trim().isEmpty()) {","lastModifiedDate":"2024-01-28"},{"lineNumber":251,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"Invalid time format for event command.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":252,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":253,"author":{"gitId":"ChuaZiLong"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":254,"author":{"gitId":"ChuaZiLong"},"content":" LocalDateTime startTime \u003d LocalDateTime.parse(timeParts[0].trim(), dateTimeFormatter);","lastModifiedDate":"2024-01-28"},{"lineNumber":255,"author":{"gitId":"ChuaZiLong"},"content":" LocalDateTime endTime \u003d LocalDateTime.parse(timeParts[1].trim(), dateTimeFormatter);","lastModifiedDate":"2024-01-28"},{"lineNumber":256,"author":{"gitId":"ChuaZiLong"},"content":" return new AddEventCommand(description, startTime, endTime);","lastModifiedDate":"2024-01-28"},{"lineNumber":257,"author":{"gitId":"ChuaZiLong"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":258,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"Invalid date format. Please use yyyy-MM-dd HHmm format.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":259,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":260,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":261,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-28"},{"lineNumber":262,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":263,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":264,"author":{"gitId":"ChuaZiLong"},"content":"class TaskList {","lastModifiedDate":"2024-01-28"},{"lineNumber":265,"author":{"gitId":"ChuaZiLong"},"content":" private ArrayList\u003cTask\u003e tasks;","lastModifiedDate":"2024-01-28"},{"lineNumber":266,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":267,"author":{"gitId":"ChuaZiLong"},"content":" public TaskList(ArrayList\u003cTask\u003e tasks) {","lastModifiedDate":"2024-01-28"},{"lineNumber":268,"author":{"gitId":"ChuaZiLong"},"content":" this.tasks \u003d tasks;","lastModifiedDate":"2024-01-28"},{"lineNumber":269,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":270,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":271,"author":{"gitId":"ChuaZiLong"},"content":" public TaskList() {","lastModifiedDate":"2024-01-28"},{"lineNumber":272,"author":{"gitId":"ChuaZiLong"},"content":" this(new ArrayList\u003c\u003e());","lastModifiedDate":"2024-01-28"},{"lineNumber":273,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":274,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":275,"author":{"gitId":"ChuaZiLong"},"content":" public void addTask(Task task) {","lastModifiedDate":"2024-01-28"},{"lineNumber":276,"author":{"gitId":"ChuaZiLong"},"content":" tasks.add(task);","lastModifiedDate":"2024-01-28"},{"lineNumber":277,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":278,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":279,"author":{"gitId":"ChuaZiLong"},"content":" public Task removeTask(int index) {","lastModifiedDate":"2024-01-28"},{"lineNumber":280,"author":{"gitId":"ChuaZiLong"},"content":" return tasks.remove(index);","lastModifiedDate":"2024-01-28"},{"lineNumber":281,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":282,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":283,"author":{"gitId":"ChuaZiLong"},"content":" public Task getTask(int index) {","lastModifiedDate":"2024-01-28"},{"lineNumber":284,"author":{"gitId":"ChuaZiLong"},"content":" return tasks.get(index);","lastModifiedDate":"2024-01-28"},{"lineNumber":285,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":286,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":287,"author":{"gitId":"ChuaZiLong"},"content":" public int getSize() {","lastModifiedDate":"2024-01-28"},{"lineNumber":288,"author":{"gitId":"ChuaZiLong"},"content":" return tasks.size();","lastModifiedDate":"2024-01-28"},{"lineNumber":289,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":290,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":291,"author":{"gitId":"ChuaZiLong"},"content":" // ... any other methods needed for task management ...","lastModifiedDate":"2024-01-28"},{"lineNumber":292,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-28"},{"lineNumber":293,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":294,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":295,"author":{"gitId":"ChuaZiLong"},"content":"enum TaskType {","lastModifiedDate":"2024-01-24"},{"lineNumber":296,"author":{"gitId":"ChuaZiLong"},"content":" TODO,","lastModifiedDate":"2024-01-24"},{"lineNumber":297,"author":{"gitId":"ChuaZiLong"},"content":" DEADLINE,","lastModifiedDate":"2024-01-24"},{"lineNumber":298,"author":{"gitId":"ChuaZiLong"},"content":" EVENT","lastModifiedDate":"2024-01-24"},{"lineNumber":299,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-24"},{"lineNumber":300,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":301,"author":{"gitId":"ChuaZiLong"},"content":"class Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":302,"author":{"gitId":"ChuaZiLong"},"content":" protected String description;","lastModifiedDate":"2024-01-24"},{"lineNumber":303,"author":{"gitId":"ChuaZiLong"},"content":" protected boolean isDone;","lastModifiedDate":"2024-01-24"},{"lineNumber":304,"author":{"gitId":"ChuaZiLong"},"content":" protected TaskType taskType;","lastModifiedDate":"2024-01-24"},{"lineNumber":305,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":306,"author":{"gitId":"ChuaZiLong"},"content":" public Task(String description, TaskType taskType) {","lastModifiedDate":"2024-01-24"},{"lineNumber":307,"author":{"gitId":"ChuaZiLong"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-24"},{"lineNumber":308,"author":{"gitId":"ChuaZiLong"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-24"},{"lineNumber":309,"author":{"gitId":"ChuaZiLong"},"content":" this.taskType \u003d taskType;","lastModifiedDate":"2024-01-24"},{"lineNumber":310,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":311,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":312,"author":{"gitId":"ChuaZiLong"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-01-24"},{"lineNumber":313,"author":{"gitId":"ChuaZiLong"},"content":" return \"[\" + taskType + \"]\" + (isDone ? \"[X] \" : \"[ ] \");","lastModifiedDate":"2024-01-24"},{"lineNumber":314,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":315,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":316,"author":{"gitId":"ChuaZiLong"},"content":" public String getDescription() {","lastModifiedDate":"2024-01-24"},{"lineNumber":317,"author":{"gitId":"ChuaZiLong"},"content":" return description;","lastModifiedDate":"2024-01-24"},{"lineNumber":318,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":319,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":320,"author":{"gitId":"ChuaZiLong"},"content":" public void markAsDone() {","lastModifiedDate":"2024-01-24"},{"lineNumber":321,"author":{"gitId":"ChuaZiLong"},"content":" isDone \u003d true;","lastModifiedDate":"2024-01-24"},{"lineNumber":322,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":323,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":324,"author":{"gitId":"ChuaZiLong"},"content":" public void markAsNotDone() {","lastModifiedDate":"2024-01-24"},{"lineNumber":325,"author":{"gitId":"ChuaZiLong"},"content":" isDone \u003d false;","lastModifiedDate":"2024-01-24"},{"lineNumber":326,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":327,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":328,"author":{"gitId":"ChuaZiLong"},"content":" public String toString() {","lastModifiedDate":"2024-01-28"},{"lineNumber":329,"author":{"gitId":"ChuaZiLong"},"content":" return getStatusIcon() + getDescription();","lastModifiedDate":"2024-01-28"},{"lineNumber":330,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":331,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-24"},{"lineNumber":332,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":333,"author":{"gitId":"ChuaZiLong"},"content":"class Todo extends Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":334,"author":{"gitId":"ChuaZiLong"},"content":" public Todo(String description) {","lastModifiedDate":"2024-01-24"},{"lineNumber":335,"author":{"gitId":"ChuaZiLong"},"content":" super(description, TaskType.TODO);","lastModifiedDate":"2024-01-24"},{"lineNumber":336,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":337,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-24"},{"lineNumber":338,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":339,"author":{"gitId":"ChuaZiLong"},"content":"class Deadline extends Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":340,"author":{"gitId":"ChuaZiLong"},"content":" protected LocalDateTime by;","lastModifiedDate":"2024-01-28"},{"lineNumber":341,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":342,"author":{"gitId":"ChuaZiLong"},"content":" public Deadline(String description, LocalDateTime by) {","lastModifiedDate":"2024-01-28"},{"lineNumber":343,"author":{"gitId":"ChuaZiLong"},"content":" super(description, TaskType.DEADLINE);","lastModifiedDate":"2024-01-24"},{"lineNumber":344,"author":{"gitId":"ChuaZiLong"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-24"},{"lineNumber":345,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":346,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":347,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":348,"author":{"gitId":"ChuaZiLong"},"content":" public String getDescription() {","lastModifiedDate":"2024-01-24"},{"lineNumber":349,"author":{"gitId":"ChuaZiLong"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"MMM dd yyyy, HH:mm\");","lastModifiedDate":"2024-01-28"},{"lineNumber":350,"author":{"gitId":"ChuaZiLong"},"content":" return super.getDescription() + \" (by: \" + formatter.format(by) + \")\";","lastModifiedDate":"2024-01-28"},{"lineNumber":351,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":352,"author":{"gitId":"ChuaZiLong"},"content":" public LocalDateTime getBy() {","lastModifiedDate":"2024-01-28"},{"lineNumber":353,"author":{"gitId":"ChuaZiLong"},"content":" return by;","lastModifiedDate":"2024-01-28"},{"lineNumber":354,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":355,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-24"},{"lineNumber":356,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":357,"author":{"gitId":"ChuaZiLong"},"content":"class Event extends Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":358,"author":{"gitId":"ChuaZiLong"},"content":" protected LocalDateTime from;","lastModifiedDate":"2024-01-28"},{"lineNumber":359,"author":{"gitId":"ChuaZiLong"},"content":" protected LocalDateTime to;","lastModifiedDate":"2024-01-28"},{"lineNumber":360,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":361,"author":{"gitId":"ChuaZiLong"},"content":" public Event(String description, LocalDateTime from, LocalDateTime to) {","lastModifiedDate":"2024-01-28"},{"lineNumber":362,"author":{"gitId":"ChuaZiLong"},"content":" super(description, TaskType.EVENT);","lastModifiedDate":"2024-01-24"},{"lineNumber":363,"author":{"gitId":"ChuaZiLong"},"content":" this.from \u003d from;","lastModifiedDate":"2024-01-24"},{"lineNumber":364,"author":{"gitId":"ChuaZiLong"},"content":" this.to \u003d to;","lastModifiedDate":"2024-01-24"},{"lineNumber":365,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":366,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":367,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":368,"author":{"gitId":"ChuaZiLong"},"content":" public String getDescription() {","lastModifiedDate":"2024-01-24"},{"lineNumber":369,"author":{"gitId":"ChuaZiLong"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"MMM dd yyyy, HH:mm\");","lastModifiedDate":"2024-01-28"},{"lineNumber":370,"author":{"gitId":"ChuaZiLong"},"content":" return super.getDescription() + \" (from: \" + formatter.format(from) + \" to: \" + formatter.format(to) + \")\";","lastModifiedDate":"2024-01-28"},{"lineNumber":371,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":372,"author":{"gitId":"ChuaZiLong"},"content":" public LocalDateTime getFrom() {","lastModifiedDate":"2024-01-28"},{"lineNumber":373,"author":{"gitId":"ChuaZiLong"},"content":" return from;","lastModifiedDate":"2024-01-28"},{"lineNumber":374,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":375,"author":{"gitId":"ChuaZiLong"},"content":" public LocalDateTime getTo() {","lastModifiedDate":"2024-01-28"},{"lineNumber":376,"author":{"gitId":"ChuaZiLong"},"content":" return to;","lastModifiedDate":"2024-01-28"},{"lineNumber":377,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":378,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-24"},{"lineNumber":379,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":380,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":381,"author":{"gitId":"ChuaZiLong"},"content":" private Storage storage;","lastModifiedDate":"2024-01-28"},{"lineNumber":382,"author":{"gitId":"ChuaZiLong"},"content":" private TaskList tasks;","lastModifiedDate":"2024-01-28"},{"lineNumber":383,"author":{"gitId":"ChuaZiLong"},"content":" private Ui ui;","lastModifiedDate":"2024-01-28"},{"lineNumber":384,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":385,"author":{"gitId":"ChuaZiLong"},"content":" public Duke(String filePath) {","lastModifiedDate":"2024-01-28"},{"lineNumber":386,"author":{"gitId":"ChuaZiLong"},"content":" ui \u003d new Ui();","lastModifiedDate":"2024-01-28"},{"lineNumber":387,"author":{"gitId":"ChuaZiLong"},"content":" storage \u003d new Storage(filePath);","lastModifiedDate":"2024-01-28"},{"lineNumber":388,"author":{"gitId":"ChuaZiLong"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":389,"author":{"gitId":"ChuaZiLong"},"content":" tasks \u003d new TaskList(storage.load());","lastModifiedDate":"2024-01-28"},{"lineNumber":390,"author":{"gitId":"ChuaZiLong"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":391,"author":{"gitId":"ChuaZiLong"},"content":" ui.showLoadingError();","lastModifiedDate":"2024-01-28"},{"lineNumber":392,"author":{"gitId":"ChuaZiLong"},"content":" tasks \u003d new TaskList();","lastModifiedDate":"2024-01-28"},{"lineNumber":393,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":394,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":395,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":396,"author":{"gitId":"ChuaZiLong"},"content":" public void run() {","lastModifiedDate":"2024-01-28"},{"lineNumber":397,"author":{"gitId":"ChuaZiLong"},"content":" ui.showWelcome();","lastModifiedDate":"2024-01-28"},{"lineNumber":398,"author":{"gitId":"ChuaZiLong"},"content":" boolean isExit \u003d false;","lastModifiedDate":"2024-01-28"},{"lineNumber":399,"author":{"gitId":"ChuaZiLong"},"content":" while (!isExit) {","lastModifiedDate":"2024-01-28"},{"lineNumber":400,"author":{"gitId":"ChuaZiLong"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":401,"author":{"gitId":"ChuaZiLong"},"content":" String fullCommand \u003d ui.readCommand();","lastModifiedDate":"2024-01-28"},{"lineNumber":402,"author":{"gitId":"ChuaZiLong"},"content":" Command command \u003d Parser.parse(fullCommand);","lastModifiedDate":"2024-01-30"},{"lineNumber":403,"author":{"gitId":"ChuaZiLong"},"content":" command.execute(tasks, ui, storage);","lastModifiedDate":"2024-01-30"},{"lineNumber":404,"author":{"gitId":"ChuaZiLong"},"content":" isExit \u003d command.isExit(); // Check if the command signals to exit","lastModifiedDate":"2024-01-30"},{"lineNumber":405,"author":{"gitId":"ChuaZiLong"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":406,"author":{"gitId":"ChuaZiLong"},"content":" ui.showError(e.getMessage());","lastModifiedDate":"2024-01-28"},{"lineNumber":407,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":408,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":409,"author":{"gitId":"ChuaZiLong"},"content":" ui.closeScanner();","lastModifiedDate":"2024-01-28"},{"lineNumber":410,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":411,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":412,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-01-28"},{"lineNumber":413,"author":{"gitId":"ChuaZiLong"},"content":" new Duke(\"./data/duke.txt/duke.txt\").run();","lastModifiedDate":"2024-01-28"},{"lineNumber":414,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":415,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2024-01-24"},{"lineNumber":416,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":417,"author":{"gitId":"ChuaZiLong"},"content":"abstract class Command {","lastModifiedDate":"2024-01-28"},{"lineNumber":418,"author":{"gitId":"ChuaZiLong"},"content":" public abstract void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException;","lastModifiedDate":"2024-01-28"},{"lineNumber":419,"author":{"gitId":"ChuaZiLong"},"content":" public abstract boolean isExit();","lastModifiedDate":"2024-01-28"},{"lineNumber":420,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-24"},{"lineNumber":421,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":422,"author":{"gitId":"ChuaZiLong"},"content":"class MarkCommand extends Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":423,"author":{"gitId":"ChuaZiLong"},"content":" private int index;","lastModifiedDate":"2024-01-30"},{"lineNumber":424,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":425,"author":{"gitId":"ChuaZiLong"},"content":" public MarkCommand(int index) {","lastModifiedDate":"2024-01-30"},{"lineNumber":426,"author":{"gitId":"ChuaZiLong"},"content":" this.index \u003d index;","lastModifiedDate":"2024-01-30"},{"lineNumber":427,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":428,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":429,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":430,"author":{"gitId":"ChuaZiLong"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":431,"author":{"gitId":"ChuaZiLong"},"content":" if (index \u003c 0 || index \u003e\u003d tasks.getSize()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":432,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"Invalid task number.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":433,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":434,"author":{"gitId":"ChuaZiLong"},"content":" Task task \u003d tasks.getTask(index);","lastModifiedDate":"2024-01-30"},{"lineNumber":435,"author":{"gitId":"ChuaZiLong"},"content":" task.markAsDone();","lastModifiedDate":"2024-01-30"},{"lineNumber":436,"author":{"gitId":"ChuaZiLong"},"content":" ui.showMarkedTask(task);","lastModifiedDate":"2024-01-30"},{"lineNumber":437,"author":{"gitId":"ChuaZiLong"},"content":" storage.save(tasks);","lastModifiedDate":"2024-01-30"},{"lineNumber":438,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":439,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":440,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":441,"author":{"gitId":"ChuaZiLong"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-30"},{"lineNumber":442,"author":{"gitId":"ChuaZiLong"},"content":" return false;","lastModifiedDate":"2024-01-30"},{"lineNumber":443,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":444,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":445,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":446,"author":{"gitId":"ChuaZiLong"},"content":"class UnmarkCommand extends Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":447,"author":{"gitId":"ChuaZiLong"},"content":" private int index;","lastModifiedDate":"2024-01-30"},{"lineNumber":448,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":449,"author":{"gitId":"ChuaZiLong"},"content":" public UnmarkCommand(int index) {","lastModifiedDate":"2024-01-30"},{"lineNumber":450,"author":{"gitId":"ChuaZiLong"},"content":" this.index \u003d index;","lastModifiedDate":"2024-01-30"},{"lineNumber":451,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":452,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":453,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":454,"author":{"gitId":"ChuaZiLong"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":455,"author":{"gitId":"ChuaZiLong"},"content":" if (index \u003c 0 || index \u003e\u003d tasks.getSize()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":456,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"Invalid task number.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":457,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":458,"author":{"gitId":"ChuaZiLong"},"content":" Task task \u003d tasks.getTask(index);","lastModifiedDate":"2024-01-30"},{"lineNumber":459,"author":{"gitId":"ChuaZiLong"},"content":" task.markAsNotDone();","lastModifiedDate":"2024-01-30"},{"lineNumber":460,"author":{"gitId":"ChuaZiLong"},"content":" ui.showUnmarkedTask(task);","lastModifiedDate":"2024-01-30"},{"lineNumber":461,"author":{"gitId":"ChuaZiLong"},"content":" storage.save(tasks);","lastModifiedDate":"2024-01-30"},{"lineNumber":462,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":463,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":464,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":465,"author":{"gitId":"ChuaZiLong"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-30"},{"lineNumber":466,"author":{"gitId":"ChuaZiLong"},"content":" return false;","lastModifiedDate":"2024-01-30"},{"lineNumber":467,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":468,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":469,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":470,"author":{"gitId":"ChuaZiLong"},"content":"class DeleteCommand extends Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":471,"author":{"gitId":"ChuaZiLong"},"content":" private int index;","lastModifiedDate":"2024-01-30"},{"lineNumber":472,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":473,"author":{"gitId":"ChuaZiLong"},"content":" public DeleteCommand(int index) {","lastModifiedDate":"2024-01-30"},{"lineNumber":474,"author":{"gitId":"ChuaZiLong"},"content":" this.index \u003d index;","lastModifiedDate":"2024-01-30"},{"lineNumber":475,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":476,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":477,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":478,"author":{"gitId":"ChuaZiLong"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":479,"author":{"gitId":"ChuaZiLong"},"content":" if (index \u003c 0 || index \u003e\u003d tasks.getSize()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":480,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"Invalid task number.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":481,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":482,"author":{"gitId":"ChuaZiLong"},"content":" Task task \u003d tasks.removeTask(index);","lastModifiedDate":"2024-01-30"},{"lineNumber":483,"author":{"gitId":"ChuaZiLong"},"content":" ui.showDeletedTask(task, tasks.getSize());","lastModifiedDate":"2024-01-30"},{"lineNumber":484,"author":{"gitId":"ChuaZiLong"},"content":" storage.save(tasks);","lastModifiedDate":"2024-01-30"},{"lineNumber":485,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":486,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":487,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":488,"author":{"gitId":"ChuaZiLong"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-30"},{"lineNumber":489,"author":{"gitId":"ChuaZiLong"},"content":" return false;","lastModifiedDate":"2024-01-30"},{"lineNumber":490,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":491,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":492,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":493,"author":{"gitId":"ChuaZiLong"},"content":"class ExitCommand extends Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":494,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":495,"author":{"gitId":"ChuaZiLong"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2024-01-30"},{"lineNumber":496,"author":{"gitId":"ChuaZiLong"},"content":" ui.showGoodbye();","lastModifiedDate":"2024-01-30"},{"lineNumber":497,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":498,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":499,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":500,"author":{"gitId":"ChuaZiLong"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-30"},{"lineNumber":501,"author":{"gitId":"ChuaZiLong"},"content":" return true; // Indicate that the application should exit","lastModifiedDate":"2024-01-30"},{"lineNumber":502,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":503,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":504,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":505,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":506,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":507,"author":{"gitId":"ChuaZiLong"},"content":"class ListCommand extends Command {","lastModifiedDate":"2024-01-28"},{"lineNumber":508,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":509,"author":{"gitId":"ChuaZiLong"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2024-01-28"},{"lineNumber":510,"author":{"gitId":"ChuaZiLong"},"content":" ui.showTaskList(tasks);","lastModifiedDate":"2024-01-28"},{"lineNumber":511,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":512,"author":{"gitId":"ChuaZiLong"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-28"},{"lineNumber":513,"author":{"gitId":"ChuaZiLong"},"content":" return false;","lastModifiedDate":"2024-01-28"},{"lineNumber":514,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":515,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-24"},{"lineNumber":516,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":517,"author":{"gitId":"ChuaZiLong"},"content":"class AddTodoCommand extends Command {","lastModifiedDate":"2024-01-28"},{"lineNumber":518,"author":{"gitId":"ChuaZiLong"},"content":" private String description;","lastModifiedDate":"2024-01-28"},{"lineNumber":519,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":520,"author":{"gitId":"ChuaZiLong"},"content":" public AddTodoCommand(String description) {","lastModifiedDate":"2024-01-28"},{"lineNumber":521,"author":{"gitId":"ChuaZiLong"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-28"},{"lineNumber":522,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":523,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":524,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":525,"author":{"gitId":"ChuaZiLong"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2024-01-28"},{"lineNumber":526,"author":{"gitId":"ChuaZiLong"},"content":" Todo newTodo \u003d new Todo(description);","lastModifiedDate":"2024-01-28"},{"lineNumber":527,"author":{"gitId":"ChuaZiLong"},"content":" tasks.addTask(newTodo);","lastModifiedDate":"2024-01-28"},{"lineNumber":528,"author":{"gitId":"ChuaZiLong"},"content":" ui.showTaskAdded(newTodo, tasks.getSize());","lastModifiedDate":"2024-01-28"},{"lineNumber":529,"author":{"gitId":"ChuaZiLong"},"content":" storage.save(tasks);","lastModifiedDate":"2024-01-28"},{"lineNumber":530,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":531,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":532,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":533,"author":{"gitId":"ChuaZiLong"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-28"},{"lineNumber":534,"author":{"gitId":"ChuaZiLong"},"content":" return false;","lastModifiedDate":"2024-01-28"},{"lineNumber":535,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":536,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-28"},{"lineNumber":537,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":538,"author":{"gitId":"ChuaZiLong"},"content":"class AddDeadlineCommand extends Command {","lastModifiedDate":"2024-01-28"},{"lineNumber":539,"author":{"gitId":"ChuaZiLong"},"content":" private String description;","lastModifiedDate":"2024-01-28"},{"lineNumber":540,"author":{"gitId":"ChuaZiLong"},"content":" private LocalDateTime by;","lastModifiedDate":"2024-01-28"},{"lineNumber":541,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":542,"author":{"gitId":"ChuaZiLong"},"content":" public AddDeadlineCommand(String description, LocalDateTime by) {","lastModifiedDate":"2024-01-28"},{"lineNumber":543,"author":{"gitId":"ChuaZiLong"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-28"},{"lineNumber":544,"author":{"gitId":"ChuaZiLong"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-28"},{"lineNumber":545,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":546,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":547,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":548,"author":{"gitId":"ChuaZiLong"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2024-01-28"},{"lineNumber":549,"author":{"gitId":"ChuaZiLong"},"content":" Deadline newDeadline \u003d new Deadline(description, by);","lastModifiedDate":"2024-01-28"},{"lineNumber":550,"author":{"gitId":"ChuaZiLong"},"content":" tasks.addTask(newDeadline);","lastModifiedDate":"2024-01-28"},{"lineNumber":551,"author":{"gitId":"ChuaZiLong"},"content":" ui.showTaskAdded(newDeadline, tasks.getSize());","lastModifiedDate":"2024-01-28"},{"lineNumber":552,"author":{"gitId":"ChuaZiLong"},"content":" storage.save(tasks);","lastModifiedDate":"2024-01-28"},{"lineNumber":553,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":554,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":555,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":556,"author":{"gitId":"ChuaZiLong"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-28"},{"lineNumber":557,"author":{"gitId":"ChuaZiLong"},"content":" return false;","lastModifiedDate":"2024-01-28"},{"lineNumber":558,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":559,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-24"},{"lineNumber":560,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":561,"author":{"gitId":"ChuaZiLong"},"content":"class AddEventCommand extends Command {","lastModifiedDate":"2024-01-28"},{"lineNumber":562,"author":{"gitId":"ChuaZiLong"},"content":" private String description;","lastModifiedDate":"2024-01-28"},{"lineNumber":563,"author":{"gitId":"ChuaZiLong"},"content":" private LocalDateTime start;","lastModifiedDate":"2024-01-28"},{"lineNumber":564,"author":{"gitId":"ChuaZiLong"},"content":" private LocalDateTime end;","lastModifiedDate":"2024-01-28"},{"lineNumber":565,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":566,"author":{"gitId":"ChuaZiLong"},"content":" public AddEventCommand(String description, LocalDateTime start, LocalDateTime end) {","lastModifiedDate":"2024-01-28"},{"lineNumber":567,"author":{"gitId":"ChuaZiLong"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-28"},{"lineNumber":568,"author":{"gitId":"ChuaZiLong"},"content":" this.start \u003d start;","lastModifiedDate":"2024-01-28"},{"lineNumber":569,"author":{"gitId":"ChuaZiLong"},"content":" this.end \u003d end;","lastModifiedDate":"2024-01-28"},{"lineNumber":570,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":571,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":572,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":573,"author":{"gitId":"ChuaZiLong"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2024-01-28"},{"lineNumber":574,"author":{"gitId":"ChuaZiLong"},"content":" Event newEvent \u003d new Event(description, start, end);","lastModifiedDate":"2024-01-28"},{"lineNumber":575,"author":{"gitId":"ChuaZiLong"},"content":" tasks.addTask(newEvent);","lastModifiedDate":"2024-01-28"},{"lineNumber":576,"author":{"gitId":"ChuaZiLong"},"content":" ui.showTaskAdded(newEvent, tasks.getSize());","lastModifiedDate":"2024-01-28"},{"lineNumber":577,"author":{"gitId":"ChuaZiLong"},"content":" storage.save(tasks);","lastModifiedDate":"2024-01-28"},{"lineNumber":578,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":579,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":580,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":581,"author":{"gitId":"ChuaZiLong"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-28"},{"lineNumber":582,"author":{"gitId":"ChuaZiLong"},"content":" return false;","lastModifiedDate":"2024-01-28"},{"lineNumber":583,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":584,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"-":5,"ChuaZiLong":579}},{"path":"src/main/java/duke/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ChuaZiLong"},"content":"package duke;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"ChuaZiLong"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"ChuaZiLong"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"ChuaZiLong"},"content":"import java.util.Date;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"ChuaZiLong"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"ChuaZiLong"},"content":"import java.io.File;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"ChuaZiLong"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"ChuaZiLong"},"content":"import java.io.PrintWriter;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"ChuaZiLong"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"ChuaZiLong"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"ChuaZiLong"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"ChuaZiLong"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"ChuaZiLong"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"ChuaZiLong"},"content":"public class Duke {","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"ChuaZiLong"},"content":" private Storage storage;","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"ChuaZiLong"},"content":" private TaskList tasks;","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"ChuaZiLong"},"content":" private Ui ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"ChuaZiLong"},"content":" public Duke(String filePath) {","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"ChuaZiLong"},"content":" ui \u003d new Ui();","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"ChuaZiLong"},"content":" storage \u003d new Storage(filePath);","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"ChuaZiLong"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"ChuaZiLong"},"content":" tasks \u003d new TaskList(storage.load());","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"ChuaZiLong"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"ChuaZiLong"},"content":" ui.showLoadingError();","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"ChuaZiLong"},"content":" tasks \u003d new TaskList();","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"ChuaZiLong"},"content":" public void run() {","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"ChuaZiLong"},"content":" ui.showWelcome();","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"ChuaZiLong"},"content":" boolean isExit \u003d false;","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"ChuaZiLong"},"content":" while (!isExit) {","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"ChuaZiLong"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"ChuaZiLong"},"content":" String fullCommand \u003d ui.readCommand();","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"ChuaZiLong"},"content":" Command command \u003d Parser.parse(fullCommand);","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"ChuaZiLong"},"content":" command.execute(tasks, ui, storage);","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"ChuaZiLong"},"content":" isExit \u003d command.isExit(); // Check if the command signals to exit","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"ChuaZiLong"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"ChuaZiLong"},"content":" ui.showError(e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"ChuaZiLong"},"content":" ui.closeScanner();","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"ChuaZiLong"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"ChuaZiLong"},"content":" new Duke(\"./data/duke.txt/duke.txt\").run();","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"ChuaZiLong"},"content":"class DukeException extends Exception {","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"ChuaZiLong"},"content":" public DukeException(String message) {","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"ChuaZiLong"},"content":" super(message);","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":59,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":60,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":61,"author":{"gitId":"ChuaZiLong"},"content":"class Ui {","lastModifiedDate":"2024-01-30"},{"lineNumber":62,"author":{"gitId":"ChuaZiLong"},"content":" private Scanner scanner;","lastModifiedDate":"2024-01-30"},{"lineNumber":63,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":64,"author":{"gitId":"ChuaZiLong"},"content":" public Ui() {","lastModifiedDate":"2024-01-30"},{"lineNumber":65,"author":{"gitId":"ChuaZiLong"},"content":" scanner \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-30"},{"lineNumber":66,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":67,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":68,"author":{"gitId":"ChuaZiLong"},"content":" public void showWelcome() {","lastModifiedDate":"2024-01-30"},{"lineNumber":69,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"Hello! I\u0027m SCZL\");","lastModifiedDate":"2024-01-30"},{"lineNumber":70,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"What can I do for you?\");","lastModifiedDate":"2024-01-30"},{"lineNumber":71,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":72,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":73,"author":{"gitId":"ChuaZiLong"},"content":" public void showGoodbye() {","lastModifiedDate":"2024-01-30"},{"lineNumber":74,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"Bye. Hope to see you again soon!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":75,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":76,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":77,"author":{"gitId":"ChuaZiLong"},"content":" public void showError(String message) {","lastModifiedDate":"2024-01-30"},{"lineNumber":78,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(message);","lastModifiedDate":"2024-01-30"},{"lineNumber":79,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":80,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":81,"author":{"gitId":"ChuaZiLong"},"content":" public void showTaskAdded(Task task, int taskCount) {","lastModifiedDate":"2024-01-30"},{"lineNumber":82,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2024-01-30"},{"lineNumber":83,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\" \" + task);","lastModifiedDate":"2024-01-30"},{"lineNumber":84,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"Now you have \" + taskCount + \" tasks in the list.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":85,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":86,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":87,"author":{"gitId":"ChuaZiLong"},"content":" public void showTaskList(TaskList tasks) {","lastModifiedDate":"2024-01-30"},{"lineNumber":88,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"Here are the tasks in your list:\");","lastModifiedDate":"2024-01-30"},{"lineNumber":89,"author":{"gitId":"ChuaZiLong"},"content":" for (int i \u003d 0; i \u003c tasks.getSize(); i++) {","lastModifiedDate":"2024-01-30"},{"lineNumber":90,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println((i + 1) + \".\" + tasks.getTask(i));","lastModifiedDate":"2024-01-30"},{"lineNumber":91,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":92,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":93,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":94,"author":{"gitId":"ChuaZiLong"},"content":" public String readCommand() {","lastModifiedDate":"2024-01-30"},{"lineNumber":95,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":96,"author":{"gitId":"ChuaZiLong"},"content":" return scanner.nextLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":97,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":98,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":99,"author":{"gitId":"ChuaZiLong"},"content":" public void showLoadingError() {","lastModifiedDate":"2024-01-30"},{"lineNumber":100,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":101,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"Error loading file.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":102,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":103,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":104,"author":{"gitId":"ChuaZiLong"},"content":" public void closeScanner() {","lastModifiedDate":"2024-01-30"},{"lineNumber":105,"author":{"gitId":"ChuaZiLong"},"content":" scanner.close();","lastModifiedDate":"2024-01-30"},{"lineNumber":106,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":107,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":108,"author":{"gitId":"ChuaZiLong"},"content":" public void showMarkedTask(Task task) {","lastModifiedDate":"2024-01-30"},{"lineNumber":109,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2024-01-30"},{"lineNumber":110,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\" \" + task);","lastModifiedDate":"2024-01-30"},{"lineNumber":111,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":112,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":113,"author":{"gitId":"ChuaZiLong"},"content":" public void showUnmarkedTask(Task task) {","lastModifiedDate":"2024-01-30"},{"lineNumber":114,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2024-01-30"},{"lineNumber":115,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\" \" + task);","lastModifiedDate":"2024-01-30"},{"lineNumber":116,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":117,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":118,"author":{"gitId":"ChuaZiLong"},"content":" public void showDeletedTask(Task task, int taskCount) {","lastModifiedDate":"2024-01-30"},{"lineNumber":119,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"Noted. I\u0027ve removed this task:\");","lastModifiedDate":"2024-01-30"},{"lineNumber":120,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\" \" + task);","lastModifiedDate":"2024-01-30"},{"lineNumber":121,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"Now you have \" + taskCount + \" tasks in the list.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":122,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":123,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":124,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":125,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":126,"author":{"gitId":"ChuaZiLong"},"content":"class Storage {","lastModifiedDate":"2024-01-30"},{"lineNumber":127,"author":{"gitId":"ChuaZiLong"},"content":" private String filePath;","lastModifiedDate":"2024-01-30"},{"lineNumber":128,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":129,"author":{"gitId":"ChuaZiLong"},"content":" public Storage(String filePath) {","lastModifiedDate":"2024-01-30"},{"lineNumber":130,"author":{"gitId":"ChuaZiLong"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2024-01-30"},{"lineNumber":131,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":132,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":133,"author":{"gitId":"ChuaZiLong"},"content":" public ArrayList\u003cTask\u003e load() throws DukeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":134,"author":{"gitId":"ChuaZiLong"},"content":" ArrayList\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-30"},{"lineNumber":135,"author":{"gitId":"ChuaZiLong"},"content":" File file \u003d new File(filePath);","lastModifiedDate":"2024-01-30"},{"lineNumber":136,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":137,"author":{"gitId":"ChuaZiLong"},"content":" if (!file.exists()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":138,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"File not found\");","lastModifiedDate":"2024-01-30"},{"lineNumber":139,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":140,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":141,"author":{"gitId":"ChuaZiLong"},"content":" try (Scanner fileScanner \u003d new Scanner(file)) {","lastModifiedDate":"2024-01-30"},{"lineNumber":142,"author":{"gitId":"ChuaZiLong"},"content":" while (fileScanner.hasNext()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":143,"author":{"gitId":"ChuaZiLong"},"content":" String line \u003d fileScanner.nextLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":144,"author":{"gitId":"ChuaZiLong"},"content":" String[] parts \u003d line.split(\" \\\\| \");","lastModifiedDate":"2024-01-30"},{"lineNumber":145,"author":{"gitId":"ChuaZiLong"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":146,"author":{"gitId":"ChuaZiLong"},"content":" String type \u003d parts[0];","lastModifiedDate":"2024-01-30"},{"lineNumber":147,"author":{"gitId":"ChuaZiLong"},"content":" boolean isDone \u003d parts[1].equals(\"1\");","lastModifiedDate":"2024-01-30"},{"lineNumber":148,"author":{"gitId":"ChuaZiLong"},"content":" String description \u003d parts[2];","lastModifiedDate":"2024-01-30"},{"lineNumber":149,"author":{"gitId":"ChuaZiLong"},"content":" Task task \u003d null;","lastModifiedDate":"2024-01-30"},{"lineNumber":150,"author":{"gitId":"ChuaZiLong"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd HH:mm\");","lastModifiedDate":"2024-01-30"},{"lineNumber":151,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":152,"author":{"gitId":"ChuaZiLong"},"content":" switch (type) {","lastModifiedDate":"2024-01-30"},{"lineNumber":153,"author":{"gitId":"ChuaZiLong"},"content":" case \"T\":","lastModifiedDate":"2024-01-30"},{"lineNumber":154,"author":{"gitId":"ChuaZiLong"},"content":" task \u003d new Todo(description);","lastModifiedDate":"2024-01-30"},{"lineNumber":155,"author":{"gitId":"ChuaZiLong"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":156,"author":{"gitId":"ChuaZiLong"},"content":" case \"D\":","lastModifiedDate":"2024-01-30"},{"lineNumber":157,"author":{"gitId":"ChuaZiLong"},"content":" if (parts.length \u003c 4) throw new DukeException(\"Invalid deadline format in file.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":158,"author":{"gitId":"ChuaZiLong"},"content":" LocalDateTime byDate \u003d LocalDateTime.parse(parts[3], formatter);","lastModifiedDate":"2024-01-30"},{"lineNumber":159,"author":{"gitId":"ChuaZiLong"},"content":" task \u003d new Deadline(description, byDate);","lastModifiedDate":"2024-01-30"},{"lineNumber":160,"author":{"gitId":"ChuaZiLong"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":161,"author":{"gitId":"ChuaZiLong"},"content":" case \"E\":","lastModifiedDate":"2024-01-30"},{"lineNumber":162,"author":{"gitId":"ChuaZiLong"},"content":" if (parts.length \u003c 5) throw new DukeException(\"Invalid event format in file.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":163,"author":{"gitId":"ChuaZiLong"},"content":" LocalDateTime from \u003d LocalDateTime.parse(parts[3], formatter);","lastModifiedDate":"2024-01-30"},{"lineNumber":164,"author":{"gitId":"ChuaZiLong"},"content":" LocalDateTime to \u003d LocalDateTime.parse(parts[4], formatter);","lastModifiedDate":"2024-01-30"},{"lineNumber":165,"author":{"gitId":"ChuaZiLong"},"content":" task \u003d new Event(description, from, to);","lastModifiedDate":"2024-01-30"},{"lineNumber":166,"author":{"gitId":"ChuaZiLong"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":167,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":168,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":169,"author":{"gitId":"ChuaZiLong"},"content":" if (task !\u003d null) {","lastModifiedDate":"2024-01-30"},{"lineNumber":170,"author":{"gitId":"ChuaZiLong"},"content":" if (isDone) {","lastModifiedDate":"2024-01-30"},{"lineNumber":171,"author":{"gitId":"ChuaZiLong"},"content":" task.markAsDone();","lastModifiedDate":"2024-01-30"},{"lineNumber":172,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":173,"author":{"gitId":"ChuaZiLong"},"content":" tasks.add(task);","lastModifiedDate":"2024-01-30"},{"lineNumber":174,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":175,"author":{"gitId":"ChuaZiLong"},"content":" } catch (DukeException | DateTimeParseException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":176,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"Skipping invalid task: \" + line);","lastModifiedDate":"2024-01-30"},{"lineNumber":177,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":178,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":179,"author":{"gitId":"ChuaZiLong"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":180,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"File not found: \" + e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":181,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":182,"author":{"gitId":"ChuaZiLong"},"content":" return tasks;","lastModifiedDate":"2024-01-30"},{"lineNumber":183,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":184,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":185,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":186,"author":{"gitId":"ChuaZiLong"},"content":" public void save(TaskList tasks) {","lastModifiedDate":"2024-01-30"},{"lineNumber":187,"author":{"gitId":"ChuaZiLong"},"content":" try (PrintWriter writer \u003d new PrintWriter(new FileWriter(filePath))) {","lastModifiedDate":"2024-01-30"},{"lineNumber":188,"author":{"gitId":"ChuaZiLong"},"content":" for (int i \u003d 0; i \u003c tasks.getSize(); i++) {","lastModifiedDate":"2024-01-30"},{"lineNumber":189,"author":{"gitId":"ChuaZiLong"},"content":" Task task \u003d tasks.getTask(i);","lastModifiedDate":"2024-01-30"},{"lineNumber":190,"author":{"gitId":"ChuaZiLong"},"content":" writer.println(taskToFileString(task));","lastModifiedDate":"2024-01-30"},{"lineNumber":191,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":192,"author":{"gitId":"ChuaZiLong"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":193,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"An error occurred while saving tasks to file: \" + e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":194,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":195,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":196,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":197,"author":{"gitId":"ChuaZiLong"},"content":" private String taskToFileString(Task task) {","lastModifiedDate":"2024-01-30"},{"lineNumber":198,"author":{"gitId":"ChuaZiLong"},"content":" String type \u003d task instanceof Todo ? \"T\" :","lastModifiedDate":"2024-01-30"},{"lineNumber":199,"author":{"gitId":"ChuaZiLong"},"content":" task instanceof Deadline ? \"D\" :","lastModifiedDate":"2024-01-30"},{"lineNumber":200,"author":{"gitId":"ChuaZiLong"},"content":" task instanceof Event ? \"E\" : \"\";","lastModifiedDate":"2024-01-30"},{"lineNumber":201,"author":{"gitId":"ChuaZiLong"},"content":" String status \u003d task.isDone ? \"1\" : \"0\";","lastModifiedDate":"2024-01-30"},{"lineNumber":202,"author":{"gitId":"ChuaZiLong"},"content":" String details \u003d task.getDescription();","lastModifiedDate":"2024-01-30"},{"lineNumber":203,"author":{"gitId":"ChuaZiLong"},"content":" String additionalInfo \u003d \"\";","lastModifiedDate":"2024-01-30"},{"lineNumber":204,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":205,"author":{"gitId":"ChuaZiLong"},"content":" if (task instanceof Deadline) {","lastModifiedDate":"2024-01-30"},{"lineNumber":206,"author":{"gitId":"ChuaZiLong"},"content":" Deadline deadline \u003d (Deadline) task;","lastModifiedDate":"2024-01-30"},{"lineNumber":207,"author":{"gitId":"ChuaZiLong"},"content":" additionalInfo \u003d \" | \" + deadline.getBy().format(DateTimeFormatter.ofPattern(\"yyyy-MM-dd HH:mm\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":208,"author":{"gitId":"ChuaZiLong"},"content":" } else if (task instanceof Event) {","lastModifiedDate":"2024-01-30"},{"lineNumber":209,"author":{"gitId":"ChuaZiLong"},"content":" Event event \u003d (Event) task;","lastModifiedDate":"2024-01-30"},{"lineNumber":210,"author":{"gitId":"ChuaZiLong"},"content":" additionalInfo \u003d \" | \" + event.getFrom().format(DateTimeFormatter.ofPattern(\"yyyy-MM-dd HH:mm\")) +","lastModifiedDate":"2024-01-30"},{"lineNumber":211,"author":{"gitId":"ChuaZiLong"},"content":" \" | \" + event.getTo().format(DateTimeFormatter.ofPattern(\"yyyy-MM-dd HH:mm\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":212,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":213,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":214,"author":{"gitId":"ChuaZiLong"},"content":" return type + \" | \" + status + \" | \" + details + additionalInfo;","lastModifiedDate":"2024-01-30"},{"lineNumber":215,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":216,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":217,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":218,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":219,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":220,"author":{"gitId":"ChuaZiLong"},"content":"class Parser {","lastModifiedDate":"2024-01-30"},{"lineNumber":221,"author":{"gitId":"ChuaZiLong"},"content":" private static final DateTimeFormatter dateTimeFormatter \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd HHmm\");","lastModifiedDate":"2024-01-30"},{"lineNumber":222,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":223,"author":{"gitId":"ChuaZiLong"},"content":" public static Command parse(String fullCommand) throws DukeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":224,"author":{"gitId":"ChuaZiLong"},"content":" String[] commandParts \u003d fullCommand.split(\" \", 2);","lastModifiedDate":"2024-01-30"},{"lineNumber":225,"author":{"gitId":"ChuaZiLong"},"content":" String commandType \u003d commandParts[0];","lastModifiedDate":"2024-01-30"},{"lineNumber":226,"author":{"gitId":"ChuaZiLong"},"content":" String commandArgs \u003d commandParts.length \u003e 1 ? commandParts[1] : \"\";","lastModifiedDate":"2024-01-30"},{"lineNumber":227,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":228,"author":{"gitId":"ChuaZiLong"},"content":" switch (commandType) {","lastModifiedDate":"2024-01-30"},{"lineNumber":229,"author":{"gitId":"ChuaZiLong"},"content":" case \"todo\":","lastModifiedDate":"2024-01-30"},{"lineNumber":230,"author":{"gitId":"ChuaZiLong"},"content":" if (commandArgs.isEmpty()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":231,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"The description of a todo cannot be empty.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":232,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":233,"author":{"gitId":"ChuaZiLong"},"content":" return new AddTodoCommand(commandArgs);","lastModifiedDate":"2024-01-30"},{"lineNumber":234,"author":{"gitId":"ChuaZiLong"},"content":" case \"deadline\":","lastModifiedDate":"2024-01-30"},{"lineNumber":235,"author":{"gitId":"ChuaZiLong"},"content":" return parseAddDeadlineCommand(commandArgs);","lastModifiedDate":"2024-01-30"},{"lineNumber":236,"author":{"gitId":"ChuaZiLong"},"content":" case \"event\":","lastModifiedDate":"2024-01-30"},{"lineNumber":237,"author":{"gitId":"ChuaZiLong"},"content":" return parseAddEventCommand(commandArgs);","lastModifiedDate":"2024-01-30"},{"lineNumber":238,"author":{"gitId":"ChuaZiLong"},"content":" case \"list\":","lastModifiedDate":"2024-01-30"},{"lineNumber":239,"author":{"gitId":"ChuaZiLong"},"content":" return new ListCommand();","lastModifiedDate":"2024-01-30"},{"lineNumber":240,"author":{"gitId":"ChuaZiLong"},"content":" case \"mark\":","lastModifiedDate":"2024-01-30"},{"lineNumber":241,"author":{"gitId":"ChuaZiLong"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":242,"author":{"gitId":"ChuaZiLong"},"content":" int index \u003d Integer.parseInt(commandArgs) - 1;","lastModifiedDate":"2024-01-30"},{"lineNumber":243,"author":{"gitId":"ChuaZiLong"},"content":" return new MarkCommand(index);","lastModifiedDate":"2024-01-30"},{"lineNumber":244,"author":{"gitId":"ChuaZiLong"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":245,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"Invalid task number format.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":246,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":247,"author":{"gitId":"ChuaZiLong"},"content":" case \"unmark\":","lastModifiedDate":"2024-01-30"},{"lineNumber":248,"author":{"gitId":"ChuaZiLong"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":249,"author":{"gitId":"ChuaZiLong"},"content":" int index \u003d Integer.parseInt(commandArgs) - 1;","lastModifiedDate":"2024-01-30"},{"lineNumber":250,"author":{"gitId":"ChuaZiLong"},"content":" return new UnmarkCommand(index);","lastModifiedDate":"2024-01-30"},{"lineNumber":251,"author":{"gitId":"ChuaZiLong"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":252,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"Invalid task number format.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":253,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":254,"author":{"gitId":"ChuaZiLong"},"content":" case \"delete\":","lastModifiedDate":"2024-01-30"},{"lineNumber":255,"author":{"gitId":"ChuaZiLong"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":256,"author":{"gitId":"ChuaZiLong"},"content":" int index \u003d Integer.parseInt(commandArgs) - 1;","lastModifiedDate":"2024-01-30"},{"lineNumber":257,"author":{"gitId":"ChuaZiLong"},"content":" return new DeleteCommand(index);","lastModifiedDate":"2024-01-30"},{"lineNumber":258,"author":{"gitId":"ChuaZiLong"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":259,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"Invalid task number format.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":260,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":261,"author":{"gitId":"ChuaZiLong"},"content":" case \"bye\":","lastModifiedDate":"2024-01-30"},{"lineNumber":262,"author":{"gitId":"ChuaZiLong"},"content":" return new ExitCommand();","lastModifiedDate":"2024-01-30"},{"lineNumber":263,"author":{"gitId":"ChuaZiLong"},"content":" default:","lastModifiedDate":"2024-01-30"},{"lineNumber":264,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"Unknown command\");","lastModifiedDate":"2024-01-30"},{"lineNumber":265,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":266,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":267,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":268,"author":{"gitId":"ChuaZiLong"},"content":" private static Command parseAddDeadlineCommand(String commandArgs) throws DukeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":269,"author":{"gitId":"ChuaZiLong"},"content":" String[] parts \u003d commandArgs.split(\"/by\", 2);","lastModifiedDate":"2024-01-30"},{"lineNumber":270,"author":{"gitId":"ChuaZiLong"},"content":" if (parts.length \u003c 2 || parts[0].trim().isEmpty() || parts[1].trim().isEmpty()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":271,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"Invalid deadline command format.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":272,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":273,"author":{"gitId":"ChuaZiLong"},"content":" String description \u003d parts[0].trim();","lastModifiedDate":"2024-01-30"},{"lineNumber":274,"author":{"gitId":"ChuaZiLong"},"content":" String by \u003d parts[1].trim();","lastModifiedDate":"2024-01-30"},{"lineNumber":275,"author":{"gitId":"ChuaZiLong"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":276,"author":{"gitId":"ChuaZiLong"},"content":" LocalDateTime byDate \u003d LocalDateTime.parse(by, dateTimeFormatter);","lastModifiedDate":"2024-01-30"},{"lineNumber":277,"author":{"gitId":"ChuaZiLong"},"content":" return new AddDeadlineCommand(description, byDate);","lastModifiedDate":"2024-01-30"},{"lineNumber":278,"author":{"gitId":"ChuaZiLong"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":279,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"Invalid date format. Please use yyyy-MM-dd HHmm format.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":280,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":281,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":282,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":283,"author":{"gitId":"ChuaZiLong"},"content":" private static Command parseAddEventCommand(String commandArgs) throws DukeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":284,"author":{"gitId":"ChuaZiLong"},"content":" String[] parts \u003d commandArgs.split(\"/at\", 2);","lastModifiedDate":"2024-01-30"},{"lineNumber":285,"author":{"gitId":"ChuaZiLong"},"content":" if (parts.length \u003c 2 || parts[0].trim().isEmpty() || parts[1].trim().isEmpty()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":286,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"Invalid event command format.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":287,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":288,"author":{"gitId":"ChuaZiLong"},"content":" String description \u003d parts[0].trim();","lastModifiedDate":"2024-01-30"},{"lineNumber":289,"author":{"gitId":"ChuaZiLong"},"content":" String at \u003d parts[1].trim();","lastModifiedDate":"2024-01-30"},{"lineNumber":290,"author":{"gitId":"ChuaZiLong"},"content":" String[] timeParts \u003d at.split(\"-\", 2);","lastModifiedDate":"2024-01-30"},{"lineNumber":291,"author":{"gitId":"ChuaZiLong"},"content":" if (timeParts.length \u003c 2 || timeParts[0].trim().isEmpty() || timeParts[1].trim().isEmpty()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":292,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"Invalid time format for event command.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":293,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":294,"author":{"gitId":"ChuaZiLong"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":295,"author":{"gitId":"ChuaZiLong"},"content":" LocalDateTime startTime \u003d LocalDateTime.parse(timeParts[0].trim(), dateTimeFormatter);","lastModifiedDate":"2024-01-30"},{"lineNumber":296,"author":{"gitId":"ChuaZiLong"},"content":" LocalDateTime endTime \u003d LocalDateTime.parse(timeParts[1].trim(), dateTimeFormatter);","lastModifiedDate":"2024-01-30"},{"lineNumber":297,"author":{"gitId":"ChuaZiLong"},"content":" return new AddEventCommand(description, startTime, endTime);","lastModifiedDate":"2024-01-30"},{"lineNumber":298,"author":{"gitId":"ChuaZiLong"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":299,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"Invalid date format. Please use yyyy-MM-dd HHmm format.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":300,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":301,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":302,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":303,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":304,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":305,"author":{"gitId":"ChuaZiLong"},"content":"class TaskList {","lastModifiedDate":"2024-01-30"},{"lineNumber":306,"author":{"gitId":"ChuaZiLong"},"content":" private ArrayList\u003cTask\u003e tasks;","lastModifiedDate":"2024-01-30"},{"lineNumber":307,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":308,"author":{"gitId":"ChuaZiLong"},"content":" public TaskList(ArrayList\u003cTask\u003e tasks) {","lastModifiedDate":"2024-01-30"},{"lineNumber":309,"author":{"gitId":"ChuaZiLong"},"content":" this.tasks \u003d tasks;","lastModifiedDate":"2024-01-30"},{"lineNumber":310,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":311,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":312,"author":{"gitId":"ChuaZiLong"},"content":" public TaskList() {","lastModifiedDate":"2024-01-30"},{"lineNumber":313,"author":{"gitId":"ChuaZiLong"},"content":" this(new ArrayList\u003c\u003e());","lastModifiedDate":"2024-01-30"},{"lineNumber":314,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":315,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":316,"author":{"gitId":"ChuaZiLong"},"content":" public void addTask(Task task) {","lastModifiedDate":"2024-01-30"},{"lineNumber":317,"author":{"gitId":"ChuaZiLong"},"content":" tasks.add(task);","lastModifiedDate":"2024-01-30"},{"lineNumber":318,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":319,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":320,"author":{"gitId":"ChuaZiLong"},"content":" public Task removeTask(int index) {","lastModifiedDate":"2024-01-30"},{"lineNumber":321,"author":{"gitId":"ChuaZiLong"},"content":" return tasks.remove(index);","lastModifiedDate":"2024-01-30"},{"lineNumber":322,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":323,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":324,"author":{"gitId":"ChuaZiLong"},"content":" public Task getTask(int index) {","lastModifiedDate":"2024-01-30"},{"lineNumber":325,"author":{"gitId":"ChuaZiLong"},"content":" return tasks.get(index);","lastModifiedDate":"2024-01-30"},{"lineNumber":326,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":327,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":328,"author":{"gitId":"ChuaZiLong"},"content":" public int getSize() {","lastModifiedDate":"2024-01-30"},{"lineNumber":329,"author":{"gitId":"ChuaZiLong"},"content":" return tasks.size();","lastModifiedDate":"2024-01-30"},{"lineNumber":330,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":331,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":332,"author":{"gitId":"ChuaZiLong"},"content":" // ... any other methods needed for task management ...","lastModifiedDate":"2024-01-30"},{"lineNumber":333,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":334,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":335,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":336,"author":{"gitId":"ChuaZiLong"},"content":"enum TaskType {","lastModifiedDate":"2024-01-30"},{"lineNumber":337,"author":{"gitId":"ChuaZiLong"},"content":" TODO,","lastModifiedDate":"2024-01-30"},{"lineNumber":338,"author":{"gitId":"ChuaZiLong"},"content":" DEADLINE,","lastModifiedDate":"2024-01-30"},{"lineNumber":339,"author":{"gitId":"ChuaZiLong"},"content":" EVENT","lastModifiedDate":"2024-01-30"},{"lineNumber":340,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":341,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":342,"author":{"gitId":"ChuaZiLong"},"content":"class Task {","lastModifiedDate":"2024-01-30"},{"lineNumber":343,"author":{"gitId":"ChuaZiLong"},"content":" protected String description;","lastModifiedDate":"2024-01-30"},{"lineNumber":344,"author":{"gitId":"ChuaZiLong"},"content":" protected boolean isDone;","lastModifiedDate":"2024-01-30"},{"lineNumber":345,"author":{"gitId":"ChuaZiLong"},"content":" protected TaskType taskType;","lastModifiedDate":"2024-01-30"},{"lineNumber":346,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":347,"author":{"gitId":"ChuaZiLong"},"content":" public Task(String description, TaskType taskType) {","lastModifiedDate":"2024-01-30"},{"lineNumber":348,"author":{"gitId":"ChuaZiLong"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-30"},{"lineNumber":349,"author":{"gitId":"ChuaZiLong"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-30"},{"lineNumber":350,"author":{"gitId":"ChuaZiLong"},"content":" this.taskType \u003d taskType;","lastModifiedDate":"2024-01-30"},{"lineNumber":351,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":352,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":353,"author":{"gitId":"ChuaZiLong"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-01-30"},{"lineNumber":354,"author":{"gitId":"ChuaZiLong"},"content":" return \"[\" + taskType + \"]\" + (isDone ? \"[X] \" : \"[ ] \");","lastModifiedDate":"2024-01-30"},{"lineNumber":355,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":356,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":357,"author":{"gitId":"ChuaZiLong"},"content":" public String getDescription() {","lastModifiedDate":"2024-01-30"},{"lineNumber":358,"author":{"gitId":"ChuaZiLong"},"content":" return description;","lastModifiedDate":"2024-01-30"},{"lineNumber":359,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":360,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":361,"author":{"gitId":"ChuaZiLong"},"content":" public void markAsDone() {","lastModifiedDate":"2024-01-30"},{"lineNumber":362,"author":{"gitId":"ChuaZiLong"},"content":" isDone \u003d true;","lastModifiedDate":"2024-01-30"},{"lineNumber":363,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":364,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":365,"author":{"gitId":"ChuaZiLong"},"content":" public void markAsNotDone() {","lastModifiedDate":"2024-01-30"},{"lineNumber":366,"author":{"gitId":"ChuaZiLong"},"content":" isDone \u003d false;","lastModifiedDate":"2024-01-30"},{"lineNumber":367,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":368,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":369,"author":{"gitId":"ChuaZiLong"},"content":" public String toString() {","lastModifiedDate":"2024-01-30"},{"lineNumber":370,"author":{"gitId":"ChuaZiLong"},"content":" return getStatusIcon() + getDescription();","lastModifiedDate":"2024-01-30"},{"lineNumber":371,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":372,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":373,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":374,"author":{"gitId":"ChuaZiLong"},"content":"class Todo extends Task {","lastModifiedDate":"2024-01-30"},{"lineNumber":375,"author":{"gitId":"ChuaZiLong"},"content":" public Todo(String description) {","lastModifiedDate":"2024-01-30"},{"lineNumber":376,"author":{"gitId":"ChuaZiLong"},"content":" super(description, TaskType.TODO);","lastModifiedDate":"2024-01-30"},{"lineNumber":377,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":378,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":379,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":380,"author":{"gitId":"ChuaZiLong"},"content":"class Deadline extends Task {","lastModifiedDate":"2024-01-30"},{"lineNumber":381,"author":{"gitId":"ChuaZiLong"},"content":" protected LocalDateTime by;","lastModifiedDate":"2024-01-30"},{"lineNumber":382,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":383,"author":{"gitId":"ChuaZiLong"},"content":" public Deadline(String description, LocalDateTime by) {","lastModifiedDate":"2024-01-30"},{"lineNumber":384,"author":{"gitId":"ChuaZiLong"},"content":" super(description, TaskType.DEADLINE);","lastModifiedDate":"2024-01-30"},{"lineNumber":385,"author":{"gitId":"ChuaZiLong"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-30"},{"lineNumber":386,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":387,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":388,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":389,"author":{"gitId":"ChuaZiLong"},"content":" public String getDescription() {","lastModifiedDate":"2024-01-30"},{"lineNumber":390,"author":{"gitId":"ChuaZiLong"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"MMM dd yyyy, HH:mm\");","lastModifiedDate":"2024-01-30"},{"lineNumber":391,"author":{"gitId":"ChuaZiLong"},"content":" return super.getDescription() + \" (by: \" + formatter.format(by) + \")\";","lastModifiedDate":"2024-01-30"},{"lineNumber":392,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":393,"author":{"gitId":"ChuaZiLong"},"content":" public LocalDateTime getBy() {","lastModifiedDate":"2024-01-30"},{"lineNumber":394,"author":{"gitId":"ChuaZiLong"},"content":" return by;","lastModifiedDate":"2024-01-30"},{"lineNumber":395,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":396,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":397,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":398,"author":{"gitId":"ChuaZiLong"},"content":"class Event extends Task {","lastModifiedDate":"2024-01-30"},{"lineNumber":399,"author":{"gitId":"ChuaZiLong"},"content":" protected LocalDateTime from;","lastModifiedDate":"2024-01-30"},{"lineNumber":400,"author":{"gitId":"ChuaZiLong"},"content":" protected LocalDateTime to;","lastModifiedDate":"2024-01-30"},{"lineNumber":401,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":402,"author":{"gitId":"ChuaZiLong"},"content":" public Event(String description, LocalDateTime from, LocalDateTime to) {","lastModifiedDate":"2024-01-30"},{"lineNumber":403,"author":{"gitId":"ChuaZiLong"},"content":" super(description, TaskType.EVENT);","lastModifiedDate":"2024-01-30"},{"lineNumber":404,"author":{"gitId":"ChuaZiLong"},"content":" this.from \u003d from;","lastModifiedDate":"2024-01-30"},{"lineNumber":405,"author":{"gitId":"ChuaZiLong"},"content":" this.to \u003d to;","lastModifiedDate":"2024-01-30"},{"lineNumber":406,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":407,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":408,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":409,"author":{"gitId":"ChuaZiLong"},"content":" public String getDescription() {","lastModifiedDate":"2024-01-30"},{"lineNumber":410,"author":{"gitId":"ChuaZiLong"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"MMM dd yyyy, HH:mm\");","lastModifiedDate":"2024-01-30"},{"lineNumber":411,"author":{"gitId":"ChuaZiLong"},"content":" return super.getDescription() + \" (from: \" + formatter.format(from) + \" to: \" + formatter.format(to) + \")\";","lastModifiedDate":"2024-01-30"},{"lineNumber":412,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":413,"author":{"gitId":"ChuaZiLong"},"content":" public LocalDateTime getFrom() {","lastModifiedDate":"2024-01-30"},{"lineNumber":414,"author":{"gitId":"ChuaZiLong"},"content":" return from;","lastModifiedDate":"2024-01-30"},{"lineNumber":415,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":416,"author":{"gitId":"ChuaZiLong"},"content":" public LocalDateTime getTo() {","lastModifiedDate":"2024-01-30"},{"lineNumber":417,"author":{"gitId":"ChuaZiLong"},"content":" return to;","lastModifiedDate":"2024-01-30"},{"lineNumber":418,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":419,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":420,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":421,"author":{"gitId":"ChuaZiLong"},"content":"abstract class Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":422,"author":{"gitId":"ChuaZiLong"},"content":" public abstract void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException;","lastModifiedDate":"2024-01-30"},{"lineNumber":423,"author":{"gitId":"ChuaZiLong"},"content":" public abstract boolean isExit();","lastModifiedDate":"2024-01-30"},{"lineNumber":424,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":425,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":426,"author":{"gitId":"ChuaZiLong"},"content":"class MarkCommand extends Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":427,"author":{"gitId":"ChuaZiLong"},"content":" private int index;","lastModifiedDate":"2024-01-30"},{"lineNumber":428,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":429,"author":{"gitId":"ChuaZiLong"},"content":" public MarkCommand(int index) {","lastModifiedDate":"2024-01-30"},{"lineNumber":430,"author":{"gitId":"ChuaZiLong"},"content":" this.index \u003d index;","lastModifiedDate":"2024-01-30"},{"lineNumber":431,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":432,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":433,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":434,"author":{"gitId":"ChuaZiLong"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":435,"author":{"gitId":"ChuaZiLong"},"content":" if (index \u003c 0 || index \u003e\u003d tasks.getSize()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":436,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"Invalid task number.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":437,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":438,"author":{"gitId":"ChuaZiLong"},"content":" Task task \u003d tasks.getTask(index);","lastModifiedDate":"2024-01-30"},{"lineNumber":439,"author":{"gitId":"ChuaZiLong"},"content":" task.markAsDone();","lastModifiedDate":"2024-01-30"},{"lineNumber":440,"author":{"gitId":"ChuaZiLong"},"content":" ui.showMarkedTask(task);","lastModifiedDate":"2024-01-30"},{"lineNumber":441,"author":{"gitId":"ChuaZiLong"},"content":" storage.save(tasks);","lastModifiedDate":"2024-01-30"},{"lineNumber":442,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":443,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":444,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":445,"author":{"gitId":"ChuaZiLong"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-30"},{"lineNumber":446,"author":{"gitId":"ChuaZiLong"},"content":" return false;","lastModifiedDate":"2024-01-30"},{"lineNumber":447,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":448,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":449,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":450,"author":{"gitId":"ChuaZiLong"},"content":"class UnmarkCommand extends Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":451,"author":{"gitId":"ChuaZiLong"},"content":" private int index;","lastModifiedDate":"2024-01-30"},{"lineNumber":452,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":453,"author":{"gitId":"ChuaZiLong"},"content":" public UnmarkCommand(int index) {","lastModifiedDate":"2024-01-30"},{"lineNumber":454,"author":{"gitId":"ChuaZiLong"},"content":" this.index \u003d index;","lastModifiedDate":"2024-01-30"},{"lineNumber":455,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":456,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":457,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":458,"author":{"gitId":"ChuaZiLong"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":459,"author":{"gitId":"ChuaZiLong"},"content":" if (index \u003c 0 || index \u003e\u003d tasks.getSize()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":460,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"Invalid task number.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":461,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":462,"author":{"gitId":"ChuaZiLong"},"content":" Task task \u003d tasks.getTask(index);","lastModifiedDate":"2024-01-30"},{"lineNumber":463,"author":{"gitId":"ChuaZiLong"},"content":" task.markAsNotDone();","lastModifiedDate":"2024-01-30"},{"lineNumber":464,"author":{"gitId":"ChuaZiLong"},"content":" ui.showUnmarkedTask(task);","lastModifiedDate":"2024-01-30"},{"lineNumber":465,"author":{"gitId":"ChuaZiLong"},"content":" storage.save(tasks);","lastModifiedDate":"2024-01-30"},{"lineNumber":466,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":467,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":468,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":469,"author":{"gitId":"ChuaZiLong"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-30"},{"lineNumber":470,"author":{"gitId":"ChuaZiLong"},"content":" return false;","lastModifiedDate":"2024-01-30"},{"lineNumber":471,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":472,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":473,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":474,"author":{"gitId":"ChuaZiLong"},"content":"class DeleteCommand extends Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":475,"author":{"gitId":"ChuaZiLong"},"content":" private int index;","lastModifiedDate":"2024-01-30"},{"lineNumber":476,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":477,"author":{"gitId":"ChuaZiLong"},"content":" public DeleteCommand(int index) {","lastModifiedDate":"2024-01-30"},{"lineNumber":478,"author":{"gitId":"ChuaZiLong"},"content":" this.index \u003d index;","lastModifiedDate":"2024-01-30"},{"lineNumber":479,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":480,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":481,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":482,"author":{"gitId":"ChuaZiLong"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":483,"author":{"gitId":"ChuaZiLong"},"content":" if (index \u003c 0 || index \u003e\u003d tasks.getSize()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":484,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"Invalid task number.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":485,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":486,"author":{"gitId":"ChuaZiLong"},"content":" Task task \u003d tasks.removeTask(index);","lastModifiedDate":"2024-01-30"},{"lineNumber":487,"author":{"gitId":"ChuaZiLong"},"content":" ui.showDeletedTask(task, tasks.getSize());","lastModifiedDate":"2024-01-30"},{"lineNumber":488,"author":{"gitId":"ChuaZiLong"},"content":" storage.save(tasks);","lastModifiedDate":"2024-01-30"},{"lineNumber":489,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":490,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":491,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":492,"author":{"gitId":"ChuaZiLong"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-30"},{"lineNumber":493,"author":{"gitId":"ChuaZiLong"},"content":" return false;","lastModifiedDate":"2024-01-30"},{"lineNumber":494,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":495,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":496,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":497,"author":{"gitId":"ChuaZiLong"},"content":"class ExitCommand extends Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":498,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":499,"author":{"gitId":"ChuaZiLong"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2024-01-30"},{"lineNumber":500,"author":{"gitId":"ChuaZiLong"},"content":" ui.showGoodbye();","lastModifiedDate":"2024-01-30"},{"lineNumber":501,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":502,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":503,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":504,"author":{"gitId":"ChuaZiLong"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-30"},{"lineNumber":505,"author":{"gitId":"ChuaZiLong"},"content":" return true; // Indicate that the application should exit","lastModifiedDate":"2024-01-30"},{"lineNumber":506,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":507,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":508,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":509,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":510,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":511,"author":{"gitId":"ChuaZiLong"},"content":"class ListCommand extends Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":512,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":513,"author":{"gitId":"ChuaZiLong"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2024-01-30"},{"lineNumber":514,"author":{"gitId":"ChuaZiLong"},"content":" ui.showTaskList(tasks);","lastModifiedDate":"2024-01-30"},{"lineNumber":515,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":516,"author":{"gitId":"ChuaZiLong"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-30"},{"lineNumber":517,"author":{"gitId":"ChuaZiLong"},"content":" return false;","lastModifiedDate":"2024-01-30"},{"lineNumber":518,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":519,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":520,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":521,"author":{"gitId":"ChuaZiLong"},"content":"class AddTodoCommand extends Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":522,"author":{"gitId":"ChuaZiLong"},"content":" private String description;","lastModifiedDate":"2024-01-30"},{"lineNumber":523,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":524,"author":{"gitId":"ChuaZiLong"},"content":" public AddTodoCommand(String description) {","lastModifiedDate":"2024-01-30"},{"lineNumber":525,"author":{"gitId":"ChuaZiLong"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-30"},{"lineNumber":526,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":527,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":528,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":529,"author":{"gitId":"ChuaZiLong"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2024-01-30"},{"lineNumber":530,"author":{"gitId":"ChuaZiLong"},"content":" Todo newTodo \u003d new Todo(description);","lastModifiedDate":"2024-01-30"},{"lineNumber":531,"author":{"gitId":"ChuaZiLong"},"content":" tasks.addTask(newTodo);","lastModifiedDate":"2024-01-30"},{"lineNumber":532,"author":{"gitId":"ChuaZiLong"},"content":" ui.showTaskAdded(newTodo, tasks.getSize());","lastModifiedDate":"2024-01-30"},{"lineNumber":533,"author":{"gitId":"ChuaZiLong"},"content":" storage.save(tasks);","lastModifiedDate":"2024-01-30"},{"lineNumber":534,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":535,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":536,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":537,"author":{"gitId":"ChuaZiLong"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-30"},{"lineNumber":538,"author":{"gitId":"ChuaZiLong"},"content":" return false;","lastModifiedDate":"2024-01-30"},{"lineNumber":539,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":540,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":541,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":542,"author":{"gitId":"ChuaZiLong"},"content":"class AddDeadlineCommand extends Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":543,"author":{"gitId":"ChuaZiLong"},"content":" private String description;","lastModifiedDate":"2024-01-30"},{"lineNumber":544,"author":{"gitId":"ChuaZiLong"},"content":" private LocalDateTime by;","lastModifiedDate":"2024-01-30"},{"lineNumber":545,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":546,"author":{"gitId":"ChuaZiLong"},"content":" public AddDeadlineCommand(String description, LocalDateTime by) {","lastModifiedDate":"2024-01-30"},{"lineNumber":547,"author":{"gitId":"ChuaZiLong"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-30"},{"lineNumber":548,"author":{"gitId":"ChuaZiLong"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-30"},{"lineNumber":549,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":550,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":551,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":552,"author":{"gitId":"ChuaZiLong"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2024-01-30"},{"lineNumber":553,"author":{"gitId":"ChuaZiLong"},"content":" Deadline newDeadline \u003d new Deadline(description, by);","lastModifiedDate":"2024-01-30"},{"lineNumber":554,"author":{"gitId":"ChuaZiLong"},"content":" tasks.addTask(newDeadline);","lastModifiedDate":"2024-01-30"},{"lineNumber":555,"author":{"gitId":"ChuaZiLong"},"content":" ui.showTaskAdded(newDeadline, tasks.getSize());","lastModifiedDate":"2024-01-30"},{"lineNumber":556,"author":{"gitId":"ChuaZiLong"},"content":" storage.save(tasks);","lastModifiedDate":"2024-01-30"},{"lineNumber":557,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":558,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":559,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":560,"author":{"gitId":"ChuaZiLong"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-30"},{"lineNumber":561,"author":{"gitId":"ChuaZiLong"},"content":" return false;","lastModifiedDate":"2024-01-30"},{"lineNumber":562,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":563,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":564,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":565,"author":{"gitId":"ChuaZiLong"},"content":"class AddEventCommand extends Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":566,"author":{"gitId":"ChuaZiLong"},"content":" private String description;","lastModifiedDate":"2024-01-30"},{"lineNumber":567,"author":{"gitId":"ChuaZiLong"},"content":" private LocalDateTime start;","lastModifiedDate":"2024-01-30"},{"lineNumber":568,"author":{"gitId":"ChuaZiLong"},"content":" private LocalDateTime end;","lastModifiedDate":"2024-01-30"},{"lineNumber":569,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":570,"author":{"gitId":"ChuaZiLong"},"content":" public AddEventCommand(String description, LocalDateTime start, LocalDateTime end) {","lastModifiedDate":"2024-01-30"},{"lineNumber":571,"author":{"gitId":"ChuaZiLong"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-30"},{"lineNumber":572,"author":{"gitId":"ChuaZiLong"},"content":" this.start \u003d start;","lastModifiedDate":"2024-01-30"},{"lineNumber":573,"author":{"gitId":"ChuaZiLong"},"content":" this.end \u003d end;","lastModifiedDate":"2024-01-30"},{"lineNumber":574,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":575,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":576,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":577,"author":{"gitId":"ChuaZiLong"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2024-01-30"},{"lineNumber":578,"author":{"gitId":"ChuaZiLong"},"content":" Event newEvent \u003d new Event(description, start, end);","lastModifiedDate":"2024-01-30"},{"lineNumber":579,"author":{"gitId":"ChuaZiLong"},"content":" tasks.addTask(newEvent);","lastModifiedDate":"2024-01-30"},{"lineNumber":580,"author":{"gitId":"ChuaZiLong"},"content":" ui.showTaskAdded(newEvent, tasks.getSize());","lastModifiedDate":"2024-01-30"},{"lineNumber":581,"author":{"gitId":"ChuaZiLong"},"content":" storage.save(tasks);","lastModifiedDate":"2024-01-30"},{"lineNumber":582,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":583,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":584,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":585,"author":{"gitId":"ChuaZiLong"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-30"},{"lineNumber":586,"author":{"gitId":"ChuaZiLong"},"content":" return false;","lastModifiedDate":"2024-01-30"},{"lineNumber":587,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":588,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"ChuaZiLong":588}},{"path":"src/main/java/seedu/duke/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ChuaZiLong"},"content":"package seedu.duke;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"ChuaZiLong"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"ChuaZiLong"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"ChuaZiLong"},"content":"import java.util.Date;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"ChuaZiLong"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"ChuaZiLong"},"content":"import java.io.File;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"ChuaZiLong"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"ChuaZiLong"},"content":"import java.io.PrintWriter;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"ChuaZiLong"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"ChuaZiLong"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"ChuaZiLong"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"ChuaZiLong"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"ChuaZiLong"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"ChuaZiLong"},"content":"class DukeException extends Exception {","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"ChuaZiLong"},"content":" public DukeException(String message) {","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"ChuaZiLong"},"content":" super(message);","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"ChuaZiLong"},"content":"/**","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"ChuaZiLong"},"content":" * Represents the user interface of the Duke application.","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"ChuaZiLong"},"content":" * Handles interactions with the user.","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"ChuaZiLong"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"ChuaZiLong"},"content":"class Ui {","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"ChuaZiLong"},"content":" private Scanner scanner;","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"ChuaZiLong"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"ChuaZiLong"},"content":" * Constructs a new Ui instance.","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"ChuaZiLong"},"content":" * Initializes the scanner used to read user input.","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"ChuaZiLong"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"ChuaZiLong"},"content":" public Ui() {","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"ChuaZiLong"},"content":" scanner \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"ChuaZiLong"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"ChuaZiLong"},"content":" * Displays the welcome message to the user at the start of the application.","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"ChuaZiLong"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"ChuaZiLong"},"content":" public void showWelcome() {","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"Hello! I\u0027m SCZL\");","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"What can I do for you?\");","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"ChuaZiLong"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"ChuaZiLong"},"content":" * Displays a goodbye message to the user before the application exits.","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"ChuaZiLong"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"ChuaZiLong"},"content":" public void showGoodbye() {","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"Bye. Hope to see you again soon!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"ChuaZiLong"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"ChuaZiLong"},"content":" * Displays an error message to the user.","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"ChuaZiLong"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"ChuaZiLong"},"content":" * @param message The error message to be displayed.","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"ChuaZiLong"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"ChuaZiLong"},"content":" public void showError(String message) {","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(message);","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":59,"author":{"gitId":"ChuaZiLong"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":60,"author":{"gitId":"ChuaZiLong"},"content":" * Informs the user that a new task has been added and displays the current number of tasks.","lastModifiedDate":"2024-01-30"},{"lineNumber":61,"author":{"gitId":"ChuaZiLong"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":62,"author":{"gitId":"ChuaZiLong"},"content":" * @param task The task that was added.","lastModifiedDate":"2024-01-30"},{"lineNumber":63,"author":{"gitId":"ChuaZiLong"},"content":" * @param taskCount The total number of tasks after adding the new task.","lastModifiedDate":"2024-01-30"},{"lineNumber":64,"author":{"gitId":"ChuaZiLong"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":65,"author":{"gitId":"ChuaZiLong"},"content":" public void showTaskAdded(Task task, int taskCount) {","lastModifiedDate":"2024-01-30"},{"lineNumber":66,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2024-01-30"},{"lineNumber":67,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\" \" + task);","lastModifiedDate":"2024-01-30"},{"lineNumber":68,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"Now you have \" + taskCount + \" tasks in the list.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":69,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":70,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":71,"author":{"gitId":"ChuaZiLong"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":72,"author":{"gitId":"ChuaZiLong"},"content":" * Displays the list of tasks to the user.","lastModifiedDate":"2024-01-30"},{"lineNumber":73,"author":{"gitId":"ChuaZiLong"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":74,"author":{"gitId":"ChuaZiLong"},"content":" * @param tasks The TaskList containing the tasks to be displayed.","lastModifiedDate":"2024-01-30"},{"lineNumber":75,"author":{"gitId":"ChuaZiLong"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":76,"author":{"gitId":"ChuaZiLong"},"content":" public void showTaskList(TaskList tasks) {","lastModifiedDate":"2024-01-30"},{"lineNumber":77,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"Here are the tasks in your list:\");","lastModifiedDate":"2024-01-30"},{"lineNumber":78,"author":{"gitId":"ChuaZiLong"},"content":" for (int i \u003d 0; i \u003c tasks.getSize(); i++) {","lastModifiedDate":"2024-01-30"},{"lineNumber":79,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println((i + 1) + \".\" + tasks.getTask(i));","lastModifiedDate":"2024-01-30"},{"lineNumber":80,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":81,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":82,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":83,"author":{"gitId":"ChuaZiLong"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":84,"author":{"gitId":"ChuaZiLong"},"content":" * Reads the next line of user input.","lastModifiedDate":"2024-01-30"},{"lineNumber":85,"author":{"gitId":"ChuaZiLong"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":86,"author":{"gitId":"ChuaZiLong"},"content":" * @return The user input as a String.","lastModifiedDate":"2024-01-30"},{"lineNumber":87,"author":{"gitId":"ChuaZiLong"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":88,"author":{"gitId":"ChuaZiLong"},"content":" public String readCommand() {","lastModifiedDate":"2024-01-30"},{"lineNumber":89,"author":{"gitId":"ChuaZiLong"},"content":" return scanner.nextLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":90,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":91,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":92,"author":{"gitId":"ChuaZiLong"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":93,"author":{"gitId":"ChuaZiLong"},"content":" * Displays a message indicating an error in loading the file.","lastModifiedDate":"2024-01-30"},{"lineNumber":94,"author":{"gitId":"ChuaZiLong"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":95,"author":{"gitId":"ChuaZiLong"},"content":" public void showLoadingError() {","lastModifiedDate":"2024-01-30"},{"lineNumber":96,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"Error loading file.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":97,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":98,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":99,"author":{"gitId":"ChuaZiLong"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":100,"author":{"gitId":"ChuaZiLong"},"content":" * Closes the scanner object used for reading user input.","lastModifiedDate":"2024-01-30"},{"lineNumber":101,"author":{"gitId":"ChuaZiLong"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":102,"author":{"gitId":"ChuaZiLong"},"content":" public void closeScanner() {","lastModifiedDate":"2024-01-30"},{"lineNumber":103,"author":{"gitId":"ChuaZiLong"},"content":" scanner.close();","lastModifiedDate":"2024-01-30"},{"lineNumber":104,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":105,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":106,"author":{"gitId":"ChuaZiLong"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":107,"author":{"gitId":"ChuaZiLong"},"content":" * Informs the user that a task has been marked as done.","lastModifiedDate":"2024-01-30"},{"lineNumber":108,"author":{"gitId":"ChuaZiLong"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":109,"author":{"gitId":"ChuaZiLong"},"content":" * @param task The task that was marked as done.","lastModifiedDate":"2024-01-30"},{"lineNumber":110,"author":{"gitId":"ChuaZiLong"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":111,"author":{"gitId":"ChuaZiLong"},"content":" public void showMarkedTask(Task task) {","lastModifiedDate":"2024-01-30"},{"lineNumber":112,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2024-01-30"},{"lineNumber":113,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\" \" + task);","lastModifiedDate":"2024-01-30"},{"lineNumber":114,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":115,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":116,"author":{"gitId":"ChuaZiLong"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":117,"author":{"gitId":"ChuaZiLong"},"content":" * Informs the user that a task has been marked as not done.","lastModifiedDate":"2024-01-30"},{"lineNumber":118,"author":{"gitId":"ChuaZiLong"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":119,"author":{"gitId":"ChuaZiLong"},"content":" * @param task The task that was marked as not done.","lastModifiedDate":"2024-01-30"},{"lineNumber":120,"author":{"gitId":"ChuaZiLong"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":121,"author":{"gitId":"ChuaZiLong"},"content":" public void showUnmarkedTask(Task task) {","lastModifiedDate":"2024-01-30"},{"lineNumber":122,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2024-01-30"},{"lineNumber":123,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\" \" + task);","lastModifiedDate":"2024-01-30"},{"lineNumber":124,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":125,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":126,"author":{"gitId":"ChuaZiLong"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":127,"author":{"gitId":"ChuaZiLong"},"content":" * Informs the user that a task has been deleted and displays the current number of tasks.","lastModifiedDate":"2024-01-30"},{"lineNumber":128,"author":{"gitId":"ChuaZiLong"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":129,"author":{"gitId":"ChuaZiLong"},"content":" * @param task The task that was deleted.","lastModifiedDate":"2024-01-30"},{"lineNumber":130,"author":{"gitId":"ChuaZiLong"},"content":" * @param taskCount The total number of tasks after deleting the task.","lastModifiedDate":"2024-01-30"},{"lineNumber":131,"author":{"gitId":"ChuaZiLong"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":132,"author":{"gitId":"ChuaZiLong"},"content":" public void showDeletedTask(Task task, int taskCount) {","lastModifiedDate":"2024-01-30"},{"lineNumber":133,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"Noted. I\u0027ve removed this task:\");","lastModifiedDate":"2024-01-30"},{"lineNumber":134,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\" \" + task);","lastModifiedDate":"2024-01-30"},{"lineNumber":135,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"Now you have \" + taskCount + \" tasks in the list.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":136,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":137,"author":{"gitId":"ChuaZiLong"},"content":" public void showFindResults(ArrayList\u003cTask\u003e tasks) {","lastModifiedDate":"2024-01-30"},{"lineNumber":138,"author":{"gitId":"ChuaZiLong"},"content":" if (tasks.isEmpty()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":139,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"No matching tasks found.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":140,"author":{"gitId":"ChuaZiLong"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":141,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"Here are the matching tasks in your list:\");","lastModifiedDate":"2024-01-30"},{"lineNumber":142,"author":{"gitId":"ChuaZiLong"},"content":" for (int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2024-01-30"},{"lineNumber":143,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println((i + 1) + \".\" + tasks.get(i));","lastModifiedDate":"2024-01-30"},{"lineNumber":144,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":145,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":146,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":147,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":148,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":149,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":150,"author":{"gitId":"ChuaZiLong"},"content":"/**","lastModifiedDate":"2024-01-30"},{"lineNumber":151,"author":{"gitId":"ChuaZiLong"},"content":" * Handles loading tasks from the file and saving tasks to the file.","lastModifiedDate":"2024-01-30"},{"lineNumber":152,"author":{"gitId":"ChuaZiLong"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":153,"author":{"gitId":"ChuaZiLong"},"content":"class Storage {","lastModifiedDate":"2024-01-30"},{"lineNumber":154,"author":{"gitId":"ChuaZiLong"},"content":" private String filePath;","lastModifiedDate":"2024-01-30"},{"lineNumber":155,"author":{"gitId":"ChuaZiLong"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":156,"author":{"gitId":"ChuaZiLong"},"content":" * Constructs a new Storage instance with the specified file path.","lastModifiedDate":"2024-01-30"},{"lineNumber":157,"author":{"gitId":"ChuaZiLong"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":158,"author":{"gitId":"ChuaZiLong"},"content":" * @param filePath The file path where tasks are loaded from and saved to.","lastModifiedDate":"2024-01-30"},{"lineNumber":159,"author":{"gitId":"ChuaZiLong"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":160,"author":{"gitId":"ChuaZiLong"},"content":" public Storage(String filePath) {","lastModifiedDate":"2024-01-30"},{"lineNumber":161,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":162,"author":{"gitId":"ChuaZiLong"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2024-01-30"},{"lineNumber":163,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":164,"author":{"gitId":"ChuaZiLong"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":165,"author":{"gitId":"ChuaZiLong"},"content":" * Loads tasks from the specified file.","lastModifiedDate":"2024-01-30"},{"lineNumber":166,"author":{"gitId":"ChuaZiLong"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":167,"author":{"gitId":"ChuaZiLong"},"content":" * @return An ArrayList of tasks loaded from the file.","lastModifiedDate":"2024-01-30"},{"lineNumber":168,"author":{"gitId":"ChuaZiLong"},"content":" * @throws DukeException If the file is not found or the tasks cannot be loaded.","lastModifiedDate":"2024-01-30"},{"lineNumber":169,"author":{"gitId":"ChuaZiLong"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":170,"author":{"gitId":"ChuaZiLong"},"content":" public ArrayList\u003cTask\u003e load() throws DukeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":171,"author":{"gitId":"ChuaZiLong"},"content":" ArrayList\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-30"},{"lineNumber":172,"author":{"gitId":"ChuaZiLong"},"content":" File file \u003d new File(filePath);","lastModifiedDate":"2024-01-30"},{"lineNumber":173,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":174,"author":{"gitId":"ChuaZiLong"},"content":" if (!file.exists()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":175,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"File not found\");","lastModifiedDate":"2024-01-30"},{"lineNumber":176,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":177,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":178,"author":{"gitId":"ChuaZiLong"},"content":" try (Scanner fileScanner \u003d new Scanner(file)) {","lastModifiedDate":"2024-01-30"},{"lineNumber":179,"author":{"gitId":"ChuaZiLong"},"content":" while (fileScanner.hasNext()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":180,"author":{"gitId":"ChuaZiLong"},"content":" String line \u003d fileScanner.nextLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":181,"author":{"gitId":"ChuaZiLong"},"content":" String[] parts \u003d line.split(\" \\\\| \");","lastModifiedDate":"2024-01-30"},{"lineNumber":182,"author":{"gitId":"ChuaZiLong"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":183,"author":{"gitId":"ChuaZiLong"},"content":" String type \u003d parts[0];","lastModifiedDate":"2024-01-30"},{"lineNumber":184,"author":{"gitId":"ChuaZiLong"},"content":" boolean isDone \u003d parts[1].equals(\"1\");","lastModifiedDate":"2024-01-30"},{"lineNumber":185,"author":{"gitId":"ChuaZiLong"},"content":" String description \u003d parts[2];","lastModifiedDate":"2024-01-30"},{"lineNumber":186,"author":{"gitId":"ChuaZiLong"},"content":" Task task \u003d null;","lastModifiedDate":"2024-01-30"},{"lineNumber":187,"author":{"gitId":"ChuaZiLong"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd HH:mm\");","lastModifiedDate":"2024-01-30"},{"lineNumber":188,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":189,"author":{"gitId":"ChuaZiLong"},"content":" switch (type) {","lastModifiedDate":"2024-01-30"},{"lineNumber":190,"author":{"gitId":"ChuaZiLong"},"content":" case \"T\":","lastModifiedDate":"2024-01-30"},{"lineNumber":191,"author":{"gitId":"ChuaZiLong"},"content":" task \u003d new Todo(description);","lastModifiedDate":"2024-01-30"},{"lineNumber":192,"author":{"gitId":"ChuaZiLong"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":193,"author":{"gitId":"ChuaZiLong"},"content":" case \"D\":","lastModifiedDate":"2024-01-30"},{"lineNumber":194,"author":{"gitId":"ChuaZiLong"},"content":" if (parts.length \u003c 4) throw new DukeException(\"Invalid deadline format in file.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":195,"author":{"gitId":"ChuaZiLong"},"content":" LocalDateTime byDate \u003d LocalDateTime.parse(parts[3], formatter);","lastModifiedDate":"2024-01-30"},{"lineNumber":196,"author":{"gitId":"ChuaZiLong"},"content":" task \u003d new Deadline(description, byDate);","lastModifiedDate":"2024-01-30"},{"lineNumber":197,"author":{"gitId":"ChuaZiLong"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":198,"author":{"gitId":"ChuaZiLong"},"content":" case \"E\":","lastModifiedDate":"2024-01-30"},{"lineNumber":199,"author":{"gitId":"ChuaZiLong"},"content":" if (parts.length \u003c 5) throw new DukeException(\"Invalid event format in file.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":200,"author":{"gitId":"ChuaZiLong"},"content":" LocalDateTime from \u003d LocalDateTime.parse(parts[3], formatter);","lastModifiedDate":"2024-01-30"},{"lineNumber":201,"author":{"gitId":"ChuaZiLong"},"content":" LocalDateTime to \u003d LocalDateTime.parse(parts[4], formatter);","lastModifiedDate":"2024-01-30"},{"lineNumber":202,"author":{"gitId":"ChuaZiLong"},"content":" task \u003d new Event(description, from, to);","lastModifiedDate":"2024-01-30"},{"lineNumber":203,"author":{"gitId":"ChuaZiLong"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":204,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":205,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":206,"author":{"gitId":"ChuaZiLong"},"content":" if (task !\u003d null) {","lastModifiedDate":"2024-01-30"},{"lineNumber":207,"author":{"gitId":"ChuaZiLong"},"content":" if (isDone) {","lastModifiedDate":"2024-01-30"},{"lineNumber":208,"author":{"gitId":"ChuaZiLong"},"content":" task.markAsDone();","lastModifiedDate":"2024-01-30"},{"lineNumber":209,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":210,"author":{"gitId":"ChuaZiLong"},"content":" tasks.add(task);","lastModifiedDate":"2024-01-30"},{"lineNumber":211,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":212,"author":{"gitId":"ChuaZiLong"},"content":" } catch (DukeException | DateTimeParseException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":213,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"Skipping invalid task: \" + line);","lastModifiedDate":"2024-01-30"},{"lineNumber":214,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":215,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":216,"author":{"gitId":"ChuaZiLong"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":217,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"File not found: \" + e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":218,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":219,"author":{"gitId":"ChuaZiLong"},"content":" return tasks;","lastModifiedDate":"2024-01-30"},{"lineNumber":220,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":221,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":222,"author":{"gitId":"ChuaZiLong"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":223,"author":{"gitId":"ChuaZiLong"},"content":" * Saves the current tasks to the file.","lastModifiedDate":"2024-01-30"},{"lineNumber":224,"author":{"gitId":"ChuaZiLong"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":225,"author":{"gitId":"ChuaZiLong"},"content":" * @param tasks The TaskList containing tasks to save.","lastModifiedDate":"2024-01-30"},{"lineNumber":226,"author":{"gitId":"ChuaZiLong"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":227,"author":{"gitId":"ChuaZiLong"},"content":" public void save(TaskList tasks) {","lastModifiedDate":"2024-01-30"},{"lineNumber":228,"author":{"gitId":"ChuaZiLong"},"content":" try (PrintWriter writer \u003d new PrintWriter(new FileWriter(filePath))) {","lastModifiedDate":"2024-01-30"},{"lineNumber":229,"author":{"gitId":"ChuaZiLong"},"content":" for (int i \u003d 0; i \u003c tasks.getSize(); i++) {","lastModifiedDate":"2024-01-30"},{"lineNumber":230,"author":{"gitId":"ChuaZiLong"},"content":" Task task \u003d tasks.getTask(i);","lastModifiedDate":"2024-01-30"},{"lineNumber":231,"author":{"gitId":"ChuaZiLong"},"content":" writer.println(taskToFileString(task));","lastModifiedDate":"2024-01-30"},{"lineNumber":232,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":233,"author":{"gitId":"ChuaZiLong"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":234,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"An error occurred while saving tasks to file: \" + e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":235,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":236,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":237,"author":{"gitId":"ChuaZiLong"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":238,"author":{"gitId":"ChuaZiLong"},"content":" * Converts a task to a formatted string for saving to the file.","lastModifiedDate":"2024-01-30"},{"lineNumber":239,"author":{"gitId":"ChuaZiLong"},"content":" * The format includes the task type, status, description, and any additional information.","lastModifiedDate":"2024-01-30"},{"lineNumber":240,"author":{"gitId":"ChuaZiLong"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":241,"author":{"gitId":"ChuaZiLong"},"content":" * @param task The task to be converted to a string.","lastModifiedDate":"2024-01-30"},{"lineNumber":242,"author":{"gitId":"ChuaZiLong"},"content":" * @return A formatted string representing the task.","lastModifiedDate":"2024-01-30"},{"lineNumber":243,"author":{"gitId":"ChuaZiLong"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":244,"author":{"gitId":"ChuaZiLong"},"content":" private String taskToFileString(Task task) {","lastModifiedDate":"2024-01-30"},{"lineNumber":245,"author":{"gitId":"ChuaZiLong"},"content":" String type \u003d task instanceof Todo ? \"T\" :","lastModifiedDate":"2024-01-30"},{"lineNumber":246,"author":{"gitId":"ChuaZiLong"},"content":" task instanceof Deadline ? \"D\" :","lastModifiedDate":"2024-01-30"},{"lineNumber":247,"author":{"gitId":"ChuaZiLong"},"content":" task instanceof Event ? \"E\" : \"\";","lastModifiedDate":"2024-01-30"},{"lineNumber":248,"author":{"gitId":"ChuaZiLong"},"content":" String status \u003d task.isDone ? \"1\" : \"0\";","lastModifiedDate":"2024-01-30"},{"lineNumber":249,"author":{"gitId":"ChuaZiLong"},"content":" String details \u003d task.getDescription();","lastModifiedDate":"2024-01-30"},{"lineNumber":250,"author":{"gitId":"ChuaZiLong"},"content":" String additionalInfo \u003d \"\";","lastModifiedDate":"2024-01-30"},{"lineNumber":251,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":252,"author":{"gitId":"ChuaZiLong"},"content":" if (task instanceof Deadline) {","lastModifiedDate":"2024-01-30"},{"lineNumber":253,"author":{"gitId":"ChuaZiLong"},"content":" Deadline deadline \u003d (Deadline) task;","lastModifiedDate":"2024-01-30"},{"lineNumber":254,"author":{"gitId":"ChuaZiLong"},"content":" additionalInfo \u003d \" | \" + deadline.getBy().format(DateTimeFormatter.ofPattern(\"yyyy-MM-dd HH:mm\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":255,"author":{"gitId":"ChuaZiLong"},"content":" } else if (task instanceof Event) {","lastModifiedDate":"2024-01-30"},{"lineNumber":256,"author":{"gitId":"ChuaZiLong"},"content":" Event event \u003d (Event) task;","lastModifiedDate":"2024-01-30"},{"lineNumber":257,"author":{"gitId":"ChuaZiLong"},"content":" additionalInfo \u003d \" | \" + event.getFrom().format(DateTimeFormatter.ofPattern(\"yyyy-MM-dd HH:mm\")) +","lastModifiedDate":"2024-01-30"},{"lineNumber":258,"author":{"gitId":"ChuaZiLong"},"content":" \" | \" + event.getTo().format(DateTimeFormatter.ofPattern(\"yyyy-MM-dd HH:mm\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":259,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":260,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":261,"author":{"gitId":"ChuaZiLong"},"content":" return type + \" | \" + status + \" | \" + details + additionalInfo;","lastModifiedDate":"2024-01-30"},{"lineNumber":262,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":263,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":264,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":265,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":266,"author":{"gitId":"ChuaZiLong"},"content":"/**","lastModifiedDate":"2024-01-30"},{"lineNumber":267,"author":{"gitId":"ChuaZiLong"},"content":" * Handles parsing of user input commands and converting them into Command objects.","lastModifiedDate":"2024-01-30"},{"lineNumber":268,"author":{"gitId":"ChuaZiLong"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":269,"author":{"gitId":"ChuaZiLong"},"content":"class Parser {","lastModifiedDate":"2024-01-30"},{"lineNumber":270,"author":{"gitId":"ChuaZiLong"},"content":" private static final DateTimeFormatter dateTimeFormatter \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd HHmm\");","lastModifiedDate":"2024-01-30"},{"lineNumber":271,"author":{"gitId":"ChuaZiLong"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":272,"author":{"gitId":"ChuaZiLong"},"content":" * Parses user input and returns the appropriate Command object.","lastModifiedDate":"2024-01-30"},{"lineNumber":273,"author":{"gitId":"ChuaZiLong"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":274,"author":{"gitId":"ChuaZiLong"},"content":" * @param fullCommand The full user input command.","lastModifiedDate":"2024-01-30"},{"lineNumber":275,"author":{"gitId":"ChuaZiLong"},"content":" * @return The command object corresponding to the user input.","lastModifiedDate":"2024-01-30"},{"lineNumber":276,"author":{"gitId":"ChuaZiLong"},"content":" * @throws DukeException If the command is invalid or if the input format is incorrect.","lastModifiedDate":"2024-01-30"},{"lineNumber":277,"author":{"gitId":"ChuaZiLong"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":278,"author":{"gitId":"ChuaZiLong"},"content":" public static Command parse(String fullCommand) throws DukeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":279,"author":{"gitId":"ChuaZiLong"},"content":" String[] commandParts \u003d fullCommand.split(\" \", 2);","lastModifiedDate":"2024-01-30"},{"lineNumber":280,"author":{"gitId":"ChuaZiLong"},"content":" String commandType \u003d commandParts[0];","lastModifiedDate":"2024-01-30"},{"lineNumber":281,"author":{"gitId":"ChuaZiLong"},"content":" String commandArgs \u003d commandParts.length \u003e 1 ? commandParts[1] : \"\";","lastModifiedDate":"2024-01-30"},{"lineNumber":282,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":283,"author":{"gitId":"ChuaZiLong"},"content":" switch (commandType) {","lastModifiedDate":"2024-01-30"},{"lineNumber":284,"author":{"gitId":"ChuaZiLong"},"content":" case \"todo\":","lastModifiedDate":"2024-01-30"},{"lineNumber":285,"author":{"gitId":"ChuaZiLong"},"content":" if (commandArgs.isEmpty()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":286,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"The description of a todo cannot be empty.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":287,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":288,"author":{"gitId":"ChuaZiLong"},"content":" return new AddTodoCommand(commandArgs);","lastModifiedDate":"2024-01-30"},{"lineNumber":289,"author":{"gitId":"ChuaZiLong"},"content":" case \"deadline\":","lastModifiedDate":"2024-01-30"},{"lineNumber":290,"author":{"gitId":"ChuaZiLong"},"content":" return parseAddDeadlineCommand(commandArgs);","lastModifiedDate":"2024-01-30"},{"lineNumber":291,"author":{"gitId":"ChuaZiLong"},"content":" case \"event\":","lastModifiedDate":"2024-01-30"},{"lineNumber":292,"author":{"gitId":"ChuaZiLong"},"content":" return parseAddEventCommand(commandArgs);","lastModifiedDate":"2024-01-30"},{"lineNumber":293,"author":{"gitId":"ChuaZiLong"},"content":" case \"list\":","lastModifiedDate":"2024-01-30"},{"lineNumber":294,"author":{"gitId":"ChuaZiLong"},"content":" return new ListCommand();","lastModifiedDate":"2024-01-30"},{"lineNumber":295,"author":{"gitId":"ChuaZiLong"},"content":" case \"mark\":","lastModifiedDate":"2024-01-30"},{"lineNumber":296,"author":{"gitId":"ChuaZiLong"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":297,"author":{"gitId":"ChuaZiLong"},"content":" int index \u003d Integer.parseInt(commandArgs) - 1;","lastModifiedDate":"2024-01-30"},{"lineNumber":298,"author":{"gitId":"ChuaZiLong"},"content":" return new MarkCommand(index);","lastModifiedDate":"2024-01-30"},{"lineNumber":299,"author":{"gitId":"ChuaZiLong"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":300,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"Invalid task number format.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":301,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":302,"author":{"gitId":"ChuaZiLong"},"content":" case \"unmark\":","lastModifiedDate":"2024-01-30"},{"lineNumber":303,"author":{"gitId":"ChuaZiLong"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":304,"author":{"gitId":"ChuaZiLong"},"content":" int index \u003d Integer.parseInt(commandArgs) - 1;","lastModifiedDate":"2024-01-30"},{"lineNumber":305,"author":{"gitId":"ChuaZiLong"},"content":" return new UnmarkCommand(index);","lastModifiedDate":"2024-01-30"},{"lineNumber":306,"author":{"gitId":"ChuaZiLong"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":307,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"Invalid task number format.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":308,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":309,"author":{"gitId":"ChuaZiLong"},"content":" case \"delete\":","lastModifiedDate":"2024-01-30"},{"lineNumber":310,"author":{"gitId":"ChuaZiLong"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":311,"author":{"gitId":"ChuaZiLong"},"content":" int index \u003d Integer.parseInt(commandArgs) - 1;","lastModifiedDate":"2024-01-30"},{"lineNumber":312,"author":{"gitId":"ChuaZiLong"},"content":" return new DeleteCommand(index);","lastModifiedDate":"2024-01-30"},{"lineNumber":313,"author":{"gitId":"ChuaZiLong"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":314,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"Invalid task number format.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":315,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":316,"author":{"gitId":"ChuaZiLong"},"content":" case \"bye\":","lastModifiedDate":"2024-01-30"},{"lineNumber":317,"author":{"gitId":"ChuaZiLong"},"content":" return new ExitCommand();","lastModifiedDate":"2024-01-30"},{"lineNumber":318,"author":{"gitId":"ChuaZiLong"},"content":" case \"find\":","lastModifiedDate":"2024-01-30"},{"lineNumber":319,"author":{"gitId":"ChuaZiLong"},"content":" if (commandArgs.isEmpty()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":320,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"The search keyword cannot be empty.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":321,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":322,"author":{"gitId":"ChuaZiLong"},"content":" return new FindCommand(commandArgs);","lastModifiedDate":"2024-01-30"},{"lineNumber":323,"author":{"gitId":"ChuaZiLong"},"content":" default:","lastModifiedDate":"2024-01-30"},{"lineNumber":324,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"Unknown command\");","lastModifiedDate":"2024-01-30"},{"lineNumber":325,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":326,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":327,"author":{"gitId":"ChuaZiLong"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":328,"author":{"gitId":"ChuaZiLong"},"content":" * Parses the input for adding a deadline task and returns an AddDeadlineCommand object.","lastModifiedDate":"2024-01-30"},{"lineNumber":329,"author":{"gitId":"ChuaZiLong"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":330,"author":{"gitId":"ChuaZiLong"},"content":" * @param commandArgs The argument string for the deadline command.","lastModifiedDate":"2024-01-30"},{"lineNumber":331,"author":{"gitId":"ChuaZiLong"},"content":" * @return An AddDeadlineCommand object representing the deadline task to be added.","lastModifiedDate":"2024-01-30"},{"lineNumber":332,"author":{"gitId":"ChuaZiLong"},"content":" * @throws DukeException If the input format for the deadline is incorrect.","lastModifiedDate":"2024-01-30"},{"lineNumber":333,"author":{"gitId":"ChuaZiLong"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":334,"author":{"gitId":"ChuaZiLong"},"content":" private static Command parseAddDeadlineCommand(String commandArgs) throws DukeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":335,"author":{"gitId":"ChuaZiLong"},"content":" String[] parts \u003d commandArgs.split(\"/by\", 2);","lastModifiedDate":"2024-01-30"},{"lineNumber":336,"author":{"gitId":"ChuaZiLong"},"content":" if (parts.length \u003c 2 || parts[0].trim().isEmpty() || parts[1].trim().isEmpty()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":337,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"Invalid deadline command format.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":338,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":339,"author":{"gitId":"ChuaZiLong"},"content":" String description \u003d parts[0].trim();","lastModifiedDate":"2024-01-30"},{"lineNumber":340,"author":{"gitId":"ChuaZiLong"},"content":" String by \u003d parts[1].trim();","lastModifiedDate":"2024-01-30"},{"lineNumber":341,"author":{"gitId":"ChuaZiLong"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":342,"author":{"gitId":"ChuaZiLong"},"content":" LocalDateTime byDate \u003d LocalDateTime.parse(by, dateTimeFormatter);","lastModifiedDate":"2024-01-30"},{"lineNumber":343,"author":{"gitId":"ChuaZiLong"},"content":" return new AddDeadlineCommand(description, byDate);","lastModifiedDate":"2024-01-30"},{"lineNumber":344,"author":{"gitId":"ChuaZiLong"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":345,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"Invalid date format. Please use yyyy-MM-dd HHmm format.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":346,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":347,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":348,"author":{"gitId":"ChuaZiLong"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":349,"author":{"gitId":"ChuaZiLong"},"content":" * Parses the input for adding an event task and returns an AddEventCommand object.","lastModifiedDate":"2024-01-30"},{"lineNumber":350,"author":{"gitId":"ChuaZiLong"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":351,"author":{"gitId":"ChuaZiLong"},"content":" * @param commandArgs The argument string for the event command.","lastModifiedDate":"2024-01-30"},{"lineNumber":352,"author":{"gitId":"ChuaZiLong"},"content":" * @return An AddEventCommand object representing the event task to be added.","lastModifiedDate":"2024-01-30"},{"lineNumber":353,"author":{"gitId":"ChuaZiLong"},"content":" * @throws DukeException If the input format for the event is incorrect.","lastModifiedDate":"2024-01-30"},{"lineNumber":354,"author":{"gitId":"ChuaZiLong"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":355,"author":{"gitId":"ChuaZiLong"},"content":" private static Command parseAddEventCommand(String commandArgs) throws DukeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":356,"author":{"gitId":"ChuaZiLong"},"content":" String[] parts \u003d commandArgs.split(\"/at\", 2);","lastModifiedDate":"2024-01-30"},{"lineNumber":357,"author":{"gitId":"ChuaZiLong"},"content":" if (parts.length \u003c 2 || parts[0].trim().isEmpty() || parts[1].trim().isEmpty()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":358,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"Invalid event command format.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":359,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":360,"author":{"gitId":"ChuaZiLong"},"content":" String description \u003d parts[0].trim();","lastModifiedDate":"2024-01-30"},{"lineNumber":361,"author":{"gitId":"ChuaZiLong"},"content":" String at \u003d parts[1].trim();","lastModifiedDate":"2024-01-30"},{"lineNumber":362,"author":{"gitId":"ChuaZiLong"},"content":" String[] timeParts \u003d at.split(\"-\", 2);","lastModifiedDate":"2024-01-30"},{"lineNumber":363,"author":{"gitId":"ChuaZiLong"},"content":" if (timeParts.length \u003c 2 || timeParts[0].trim().isEmpty() || timeParts[1].trim().isEmpty()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":364,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"Invalid time format for event command.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":365,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":366,"author":{"gitId":"ChuaZiLong"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":367,"author":{"gitId":"ChuaZiLong"},"content":" LocalDateTime startTime \u003d LocalDateTime.parse(timeParts[0].trim(), dateTimeFormatter);","lastModifiedDate":"2024-01-30"},{"lineNumber":368,"author":{"gitId":"ChuaZiLong"},"content":" LocalDateTime endTime \u003d LocalDateTime.parse(timeParts[1].trim(), dateTimeFormatter);","lastModifiedDate":"2024-01-30"},{"lineNumber":369,"author":{"gitId":"ChuaZiLong"},"content":" return new AddEventCommand(description, startTime, endTime);","lastModifiedDate":"2024-01-30"},{"lineNumber":370,"author":{"gitId":"ChuaZiLong"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":371,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"Invalid date format. Please use yyyy-MM-dd HHmm format.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":372,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":373,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":374,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":375,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":376,"author":{"gitId":"ChuaZiLong"},"content":"/**","lastModifiedDate":"2024-01-30"},{"lineNumber":377,"author":{"gitId":"ChuaZiLong"},"content":" * Represents the list of tasks in the Duke application.","lastModifiedDate":"2024-01-30"},{"lineNumber":378,"author":{"gitId":"ChuaZiLong"},"content":" * Handles operations like adding, removing, and retrieving tasks from the list.","lastModifiedDate":"2024-01-30"},{"lineNumber":379,"author":{"gitId":"ChuaZiLong"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":380,"author":{"gitId":"ChuaZiLong"},"content":"class TaskList {","lastModifiedDate":"2024-01-30"},{"lineNumber":381,"author":{"gitId":"ChuaZiLong"},"content":" private ArrayList\u003cTask\u003e tasks;","lastModifiedDate":"2024-01-30"},{"lineNumber":382,"author":{"gitId":"ChuaZiLong"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":383,"author":{"gitId":"ChuaZiLong"},"content":" * Constructs a new TaskList instance with a pre-defined list of tasks.","lastModifiedDate":"2024-01-30"},{"lineNumber":384,"author":{"gitId":"ChuaZiLong"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":385,"author":{"gitId":"ChuaZiLong"},"content":" * @param tasks The ArrayList of tasks to initialize the task list with.","lastModifiedDate":"2024-01-30"},{"lineNumber":386,"author":{"gitId":"ChuaZiLong"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":387,"author":{"gitId":"ChuaZiLong"},"content":" public TaskList(ArrayList\u003cTask\u003e tasks) {","lastModifiedDate":"2024-01-30"},{"lineNumber":388,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":389,"author":{"gitId":"ChuaZiLong"},"content":" this.tasks \u003d tasks;","lastModifiedDate":"2024-01-30"},{"lineNumber":390,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":391,"author":{"gitId":"ChuaZiLong"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":392,"author":{"gitId":"ChuaZiLong"},"content":" * Constructs a new TaskList instance. Initializes the task list.","lastModifiedDate":"2024-01-30"},{"lineNumber":393,"author":{"gitId":"ChuaZiLong"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":394,"author":{"gitId":"ChuaZiLong"},"content":" public TaskList() {","lastModifiedDate":"2024-01-30"},{"lineNumber":395,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":396,"author":{"gitId":"ChuaZiLong"},"content":" this(new ArrayList\u003c\u003e());","lastModifiedDate":"2024-01-30"},{"lineNumber":397,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":398,"author":{"gitId":"ChuaZiLong"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":399,"author":{"gitId":"ChuaZiLong"},"content":" * Adds a task to the task list.","lastModifiedDate":"2024-01-30"},{"lineNumber":400,"author":{"gitId":"ChuaZiLong"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":401,"author":{"gitId":"ChuaZiLong"},"content":" * @param task The task to be added.","lastModifiedDate":"2024-01-30"},{"lineNumber":402,"author":{"gitId":"ChuaZiLong"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":403,"author":{"gitId":"ChuaZiLong"},"content":" public void addTask(Task task) {","lastModifiedDate":"2024-01-30"},{"lineNumber":404,"author":{"gitId":"ChuaZiLong"},"content":" tasks.add(task);","lastModifiedDate":"2024-01-30"},{"lineNumber":405,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":406,"author":{"gitId":"ChuaZiLong"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":407,"author":{"gitId":"ChuaZiLong"},"content":" * Removes and returns a task from the task list at the specified index.","lastModifiedDate":"2024-01-30"},{"lineNumber":408,"author":{"gitId":"ChuaZiLong"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":409,"author":{"gitId":"ChuaZiLong"},"content":" * @param index The index of the task to be removed.","lastModifiedDate":"2024-01-30"},{"lineNumber":410,"author":{"gitId":"ChuaZiLong"},"content":" * @return The removed task.","lastModifiedDate":"2024-01-30"},{"lineNumber":411,"author":{"gitId":"ChuaZiLong"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":412,"author":{"gitId":"ChuaZiLong"},"content":" public Task removeTask(int index) {","lastModifiedDate":"2024-01-30"},{"lineNumber":413,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":414,"author":{"gitId":"ChuaZiLong"},"content":" return tasks.remove(index);","lastModifiedDate":"2024-01-30"},{"lineNumber":415,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":416,"author":{"gitId":"ChuaZiLong"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":417,"author":{"gitId":"ChuaZiLong"},"content":" * Retrieves a task from the task list at the specified index.","lastModifiedDate":"2024-01-30"},{"lineNumber":418,"author":{"gitId":"ChuaZiLong"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":419,"author":{"gitId":"ChuaZiLong"},"content":" * @param index The index of the task to be retrieved.","lastModifiedDate":"2024-01-30"},{"lineNumber":420,"author":{"gitId":"ChuaZiLong"},"content":" * @return The task at the specified index.","lastModifiedDate":"2024-01-30"},{"lineNumber":421,"author":{"gitId":"ChuaZiLong"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":422,"author":{"gitId":"ChuaZiLong"},"content":" public Task getTask(int index) {","lastModifiedDate":"2024-01-30"},{"lineNumber":423,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":424,"author":{"gitId":"ChuaZiLong"},"content":" return tasks.get(index);","lastModifiedDate":"2024-01-30"},{"lineNumber":425,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":426,"author":{"gitId":"ChuaZiLong"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":427,"author":{"gitId":"ChuaZiLong"},"content":" * Returns the number of tasks in the task list.","lastModifiedDate":"2024-01-30"},{"lineNumber":428,"author":{"gitId":"ChuaZiLong"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":429,"author":{"gitId":"ChuaZiLong"},"content":" * @return The size of the task list.","lastModifiedDate":"2024-01-30"},{"lineNumber":430,"author":{"gitId":"ChuaZiLong"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":431,"author":{"gitId":"ChuaZiLong"},"content":" public int getSize() {","lastModifiedDate":"2024-01-30"},{"lineNumber":432,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":433,"author":{"gitId":"ChuaZiLong"},"content":" return tasks.size();","lastModifiedDate":"2024-01-30"},{"lineNumber":434,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":435,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":436,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":437,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":438,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":439,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":440,"author":{"gitId":"ChuaZiLong"},"content":"enum TaskType {","lastModifiedDate":"2024-01-30"},{"lineNumber":441,"author":{"gitId":"ChuaZiLong"},"content":" TODO,","lastModifiedDate":"2024-01-30"},{"lineNumber":442,"author":{"gitId":"ChuaZiLong"},"content":" DEADLINE,","lastModifiedDate":"2024-01-30"},{"lineNumber":443,"author":{"gitId":"ChuaZiLong"},"content":" EVENT","lastModifiedDate":"2024-01-30"},{"lineNumber":444,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":445,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":446,"author":{"gitId":"ChuaZiLong"},"content":"class Task {","lastModifiedDate":"2024-01-30"},{"lineNumber":447,"author":{"gitId":"ChuaZiLong"},"content":" protected String description;","lastModifiedDate":"2024-01-30"},{"lineNumber":448,"author":{"gitId":"ChuaZiLong"},"content":" protected boolean isDone;","lastModifiedDate":"2024-01-30"},{"lineNumber":449,"author":{"gitId":"ChuaZiLong"},"content":" protected TaskType taskType;","lastModifiedDate":"2024-01-30"},{"lineNumber":450,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":451,"author":{"gitId":"ChuaZiLong"},"content":" public Task(String description, TaskType taskType) {","lastModifiedDate":"2024-01-30"},{"lineNumber":452,"author":{"gitId":"ChuaZiLong"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-30"},{"lineNumber":453,"author":{"gitId":"ChuaZiLong"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-30"},{"lineNumber":454,"author":{"gitId":"ChuaZiLong"},"content":" this.taskType \u003d taskType;","lastModifiedDate":"2024-01-30"},{"lineNumber":455,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":456,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":457,"author":{"gitId":"ChuaZiLong"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-01-30"},{"lineNumber":458,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":459,"author":{"gitId":"ChuaZiLong"},"content":" return \"[\" + taskType + \"]\" + (isDone ? \"[X] \" : \"[ ] \");","lastModifiedDate":"2024-01-30"},{"lineNumber":460,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":461,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":462,"author":{"gitId":"ChuaZiLong"},"content":" public String getDescription() {","lastModifiedDate":"2024-01-30"},{"lineNumber":463,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":464,"author":{"gitId":"ChuaZiLong"},"content":" return description;","lastModifiedDate":"2024-01-30"},{"lineNumber":465,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":466,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":467,"author":{"gitId":"ChuaZiLong"},"content":" public void markAsDone() {","lastModifiedDate":"2024-01-30"},{"lineNumber":468,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":469,"author":{"gitId":"ChuaZiLong"},"content":" isDone \u003d true;","lastModifiedDate":"2024-01-30"},{"lineNumber":470,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":471,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":472,"author":{"gitId":"ChuaZiLong"},"content":" public void markAsNotDone() {","lastModifiedDate":"2024-01-30"},{"lineNumber":473,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":474,"author":{"gitId":"ChuaZiLong"},"content":" isDone \u003d false;","lastModifiedDate":"2024-01-30"},{"lineNumber":475,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":476,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":477,"author":{"gitId":"ChuaZiLong"},"content":" public String toString() {","lastModifiedDate":"2024-01-30"},{"lineNumber":478,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":479,"author":{"gitId":"ChuaZiLong"},"content":" return getStatusIcon() + getDescription();","lastModifiedDate":"2024-01-30"},{"lineNumber":480,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":481,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":482,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":483,"author":{"gitId":"ChuaZiLong"},"content":"class Todo extends Task {","lastModifiedDate":"2024-01-30"},{"lineNumber":484,"author":{"gitId":"ChuaZiLong"},"content":" public Todo(String description) {","lastModifiedDate":"2024-01-30"},{"lineNumber":485,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":486,"author":{"gitId":"ChuaZiLong"},"content":" super(description, TaskType.TODO);","lastModifiedDate":"2024-01-30"},{"lineNumber":487,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":488,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":489,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":490,"author":{"gitId":"ChuaZiLong"},"content":"class Deadline extends Task {","lastModifiedDate":"2024-01-30"},{"lineNumber":491,"author":{"gitId":"ChuaZiLong"},"content":" protected LocalDateTime by;","lastModifiedDate":"2024-01-30"},{"lineNumber":492,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":493,"author":{"gitId":"ChuaZiLong"},"content":" public Deadline(String description, LocalDateTime by) {","lastModifiedDate":"2024-01-30"},{"lineNumber":494,"author":{"gitId":"ChuaZiLong"},"content":" super(description, TaskType.DEADLINE);","lastModifiedDate":"2024-01-30"},{"lineNumber":495,"author":{"gitId":"ChuaZiLong"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-30"},{"lineNumber":496,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":497,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":498,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":499,"author":{"gitId":"ChuaZiLong"},"content":" public String getDescription() {","lastModifiedDate":"2024-01-30"},{"lineNumber":500,"author":{"gitId":"ChuaZiLong"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"MMM dd yyyy, HH:mm\");","lastModifiedDate":"2024-01-30"},{"lineNumber":501,"author":{"gitId":"ChuaZiLong"},"content":" return super.getDescription() + \" (by: \" + formatter.format(by) + \")\";","lastModifiedDate":"2024-01-30"},{"lineNumber":502,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":503,"author":{"gitId":"ChuaZiLong"},"content":" public LocalDateTime getBy() {","lastModifiedDate":"2024-01-30"},{"lineNumber":504,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":505,"author":{"gitId":"ChuaZiLong"},"content":" return by;","lastModifiedDate":"2024-01-30"},{"lineNumber":506,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":507,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":508,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":509,"author":{"gitId":"ChuaZiLong"},"content":"class Event extends Task {","lastModifiedDate":"2024-01-30"},{"lineNumber":510,"author":{"gitId":"ChuaZiLong"},"content":" protected LocalDateTime from;","lastModifiedDate":"2024-01-30"},{"lineNumber":511,"author":{"gitId":"ChuaZiLong"},"content":" protected LocalDateTime to;","lastModifiedDate":"2024-01-30"},{"lineNumber":512,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":513,"author":{"gitId":"ChuaZiLong"},"content":" public Event(String description, LocalDateTime from, LocalDateTime to) {","lastModifiedDate":"2024-01-30"},{"lineNumber":514,"author":{"gitId":"ChuaZiLong"},"content":" super(description, TaskType.EVENT);","lastModifiedDate":"2024-01-30"},{"lineNumber":515,"author":{"gitId":"ChuaZiLong"},"content":" this.from \u003d from;","lastModifiedDate":"2024-01-30"},{"lineNumber":516,"author":{"gitId":"ChuaZiLong"},"content":" this.to \u003d to;","lastModifiedDate":"2024-01-30"},{"lineNumber":517,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":518,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":519,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":520,"author":{"gitId":"ChuaZiLong"},"content":" public String getDescription() {","lastModifiedDate":"2024-01-30"},{"lineNumber":521,"author":{"gitId":"ChuaZiLong"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"MMM dd yyyy, HH:mm\");","lastModifiedDate":"2024-01-30"},{"lineNumber":522,"author":{"gitId":"ChuaZiLong"},"content":" return super.getDescription() + \" (from: \" + formatter.format(from) + \" to: \" + formatter.format(to) + \")\";","lastModifiedDate":"2024-01-30"},{"lineNumber":523,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":524,"author":{"gitId":"ChuaZiLong"},"content":" public LocalDateTime getFrom() {","lastModifiedDate":"2024-01-30"},{"lineNumber":525,"author":{"gitId":"ChuaZiLong"},"content":" return from;","lastModifiedDate":"2024-01-30"},{"lineNumber":526,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":527,"author":{"gitId":"ChuaZiLong"},"content":" public LocalDateTime getTo() {","lastModifiedDate":"2024-01-30"},{"lineNumber":528,"author":{"gitId":"ChuaZiLong"},"content":" return to;","lastModifiedDate":"2024-01-30"},{"lineNumber":529,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":530,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":531,"author":{"gitId":"ChuaZiLong"},"content":"/**","lastModifiedDate":"2024-01-30"},{"lineNumber":532,"author":{"gitId":"ChuaZiLong"},"content":" * Represents the main class for the Duke application.","lastModifiedDate":"2024-01-30"},{"lineNumber":533,"author":{"gitId":"ChuaZiLong"},"content":" * Initializes the application and starts the interaction with the user.","lastModifiedDate":"2024-01-30"},{"lineNumber":534,"author":{"gitId":"ChuaZiLong"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":535,"author":{"gitId":"ChuaZiLong"},"content":"public class Duke {","lastModifiedDate":"2024-01-30"},{"lineNumber":536,"author":{"gitId":"ChuaZiLong"},"content":" private Storage storage;","lastModifiedDate":"2024-01-30"},{"lineNumber":537,"author":{"gitId":"ChuaZiLong"},"content":" private TaskList tasks;","lastModifiedDate":"2024-01-30"},{"lineNumber":538,"author":{"gitId":"ChuaZiLong"},"content":" private Ui ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":539,"author":{"gitId":"ChuaZiLong"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":540,"author":{"gitId":"ChuaZiLong"},"content":" * Constructs a new Duke instance with the specified file path for data storage.","lastModifiedDate":"2024-01-30"},{"lineNumber":541,"author":{"gitId":"ChuaZiLong"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":542,"author":{"gitId":"ChuaZiLong"},"content":" * @param filePath The file path used for storing task data.","lastModifiedDate":"2024-01-30"},{"lineNumber":543,"author":{"gitId":"ChuaZiLong"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":544,"author":{"gitId":"ChuaZiLong"},"content":" public Duke(String filePath) {","lastModifiedDate":"2024-01-30"},{"lineNumber":545,"author":{"gitId":"ChuaZiLong"},"content":" ui \u003d new Ui();","lastModifiedDate":"2024-01-30"},{"lineNumber":546,"author":{"gitId":"ChuaZiLong"},"content":" storage \u003d new Storage(filePath);","lastModifiedDate":"2024-01-30"},{"lineNumber":547,"author":{"gitId":"ChuaZiLong"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":548,"author":{"gitId":"ChuaZiLong"},"content":" tasks \u003d new TaskList(storage.load());","lastModifiedDate":"2024-01-30"},{"lineNumber":549,"author":{"gitId":"ChuaZiLong"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":550,"author":{"gitId":"ChuaZiLong"},"content":" ui.showLoadingError();","lastModifiedDate":"2024-01-30"},{"lineNumber":551,"author":{"gitId":"ChuaZiLong"},"content":" tasks \u003d new TaskList();","lastModifiedDate":"2024-01-30"},{"lineNumber":552,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":553,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":554,"author":{"gitId":"ChuaZiLong"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":555,"author":{"gitId":"ChuaZiLong"},"content":" * Runs the Duke application. Initializes the necessary components and starts","lastModifiedDate":"2024-01-30"},{"lineNumber":556,"author":{"gitId":"ChuaZiLong"},"content":" * the command loop to receive and process user input.","lastModifiedDate":"2024-01-30"},{"lineNumber":557,"author":{"gitId":"ChuaZiLong"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":558,"author":{"gitId":"ChuaZiLong"},"content":" public void run() {","lastModifiedDate":"2024-01-30"},{"lineNumber":559,"author":{"gitId":"ChuaZiLong"},"content":" ui.showWelcome();","lastModifiedDate":"2024-01-30"},{"lineNumber":560,"author":{"gitId":"ChuaZiLong"},"content":" boolean isExit \u003d false;","lastModifiedDate":"2024-01-30"},{"lineNumber":561,"author":{"gitId":"ChuaZiLong"},"content":" while (!isExit) {","lastModifiedDate":"2024-01-30"},{"lineNumber":562,"author":{"gitId":"ChuaZiLong"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":563,"author":{"gitId":"ChuaZiLong"},"content":" String fullCommand \u003d ui.readCommand();","lastModifiedDate":"2024-01-30"},{"lineNumber":564,"author":{"gitId":"ChuaZiLong"},"content":" Command command \u003d Parser.parse(fullCommand);","lastModifiedDate":"2024-01-30"},{"lineNumber":565,"author":{"gitId":"ChuaZiLong"},"content":" command.execute(tasks, ui, storage);","lastModifiedDate":"2024-01-30"},{"lineNumber":566,"author":{"gitId":"ChuaZiLong"},"content":" isExit \u003d command.isExit(); // Check if the command signals to exit","lastModifiedDate":"2024-01-30"},{"lineNumber":567,"author":{"gitId":"ChuaZiLong"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":568,"author":{"gitId":"ChuaZiLong"},"content":" ui.showError(e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":569,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":570,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":571,"author":{"gitId":"ChuaZiLong"},"content":" ui.closeScanner();","lastModifiedDate":"2024-01-30"},{"lineNumber":572,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":573,"author":{"gitId":"ChuaZiLong"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":574,"author":{"gitId":"ChuaZiLong"},"content":" * The entry point of the application.","lastModifiedDate":"2024-01-30"},{"lineNumber":575,"author":{"gitId":"ChuaZiLong"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":576,"author":{"gitId":"ChuaZiLong"},"content":" * @param args Command line arguments.","lastModifiedDate":"2024-01-30"},{"lineNumber":577,"author":{"gitId":"ChuaZiLong"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":578,"author":{"gitId":"ChuaZiLong"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-01-30"},{"lineNumber":579,"author":{"gitId":"ChuaZiLong"},"content":" new Duke(\"./data/duke.txt/duke.txt\").run();","lastModifiedDate":"2024-01-30"},{"lineNumber":580,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":581,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":582,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":583,"author":{"gitId":"ChuaZiLong"},"content":"abstract class Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":584,"author":{"gitId":"ChuaZiLong"},"content":" public abstract void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException;","lastModifiedDate":"2024-01-30"},{"lineNumber":585,"author":{"gitId":"ChuaZiLong"},"content":" public abstract boolean isExit();","lastModifiedDate":"2024-01-30"},{"lineNumber":586,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":587,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":588,"author":{"gitId":"ChuaZiLong"},"content":"class MarkCommand extends Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":589,"author":{"gitId":"ChuaZiLong"},"content":" private int index;","lastModifiedDate":"2024-01-30"},{"lineNumber":590,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":591,"author":{"gitId":"ChuaZiLong"},"content":" public MarkCommand(int index) {","lastModifiedDate":"2024-01-30"},{"lineNumber":592,"author":{"gitId":"ChuaZiLong"},"content":" this.index \u003d index;","lastModifiedDate":"2024-01-30"},{"lineNumber":593,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":594,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":595,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":596,"author":{"gitId":"ChuaZiLong"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":597,"author":{"gitId":"ChuaZiLong"},"content":" if (index \u003c 0 || index \u003e\u003d tasks.getSize()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":598,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"Invalid task number.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":599,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":600,"author":{"gitId":"ChuaZiLong"},"content":" Task task \u003d tasks.getTask(index);","lastModifiedDate":"2024-01-30"},{"lineNumber":601,"author":{"gitId":"ChuaZiLong"},"content":" task.markAsDone();","lastModifiedDate":"2024-01-30"},{"lineNumber":602,"author":{"gitId":"ChuaZiLong"},"content":" ui.showMarkedTask(task);","lastModifiedDate":"2024-01-30"},{"lineNumber":603,"author":{"gitId":"ChuaZiLong"},"content":" storage.save(tasks);","lastModifiedDate":"2024-01-30"},{"lineNumber":604,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":605,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":606,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":607,"author":{"gitId":"ChuaZiLong"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-30"},{"lineNumber":608,"author":{"gitId":"ChuaZiLong"},"content":" return false;","lastModifiedDate":"2024-01-30"},{"lineNumber":609,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":610,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":611,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":612,"author":{"gitId":"ChuaZiLong"},"content":"class UnmarkCommand extends Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":613,"author":{"gitId":"ChuaZiLong"},"content":" private int index;","lastModifiedDate":"2024-01-30"},{"lineNumber":614,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":615,"author":{"gitId":"ChuaZiLong"},"content":" public UnmarkCommand(int index) {","lastModifiedDate":"2024-01-30"},{"lineNumber":616,"author":{"gitId":"ChuaZiLong"},"content":" this.index \u003d index;","lastModifiedDate":"2024-01-30"},{"lineNumber":617,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":618,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":619,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":620,"author":{"gitId":"ChuaZiLong"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":621,"author":{"gitId":"ChuaZiLong"},"content":" if (index \u003c 0 || index \u003e\u003d tasks.getSize()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":622,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"Invalid task number.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":623,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":624,"author":{"gitId":"ChuaZiLong"},"content":" Task task \u003d tasks.getTask(index);","lastModifiedDate":"2024-01-30"},{"lineNumber":625,"author":{"gitId":"ChuaZiLong"},"content":" task.markAsNotDone();","lastModifiedDate":"2024-01-30"},{"lineNumber":626,"author":{"gitId":"ChuaZiLong"},"content":" ui.showUnmarkedTask(task);","lastModifiedDate":"2024-01-30"},{"lineNumber":627,"author":{"gitId":"ChuaZiLong"},"content":" storage.save(tasks);","lastModifiedDate":"2024-01-30"},{"lineNumber":628,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":629,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":630,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":631,"author":{"gitId":"ChuaZiLong"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-30"},{"lineNumber":632,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":633,"author":{"gitId":"ChuaZiLong"},"content":" return false;","lastModifiedDate":"2024-01-30"},{"lineNumber":634,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":635,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":636,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":637,"author":{"gitId":"ChuaZiLong"},"content":"class DeleteCommand extends Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":638,"author":{"gitId":"ChuaZiLong"},"content":" private int index;","lastModifiedDate":"2024-01-30"},{"lineNumber":639,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":640,"author":{"gitId":"ChuaZiLong"},"content":" public DeleteCommand(int index) {","lastModifiedDate":"2024-01-30"},{"lineNumber":641,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":642,"author":{"gitId":"ChuaZiLong"},"content":" this.index \u003d index;","lastModifiedDate":"2024-01-30"},{"lineNumber":643,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":644,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":645,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":646,"author":{"gitId":"ChuaZiLong"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":647,"author":{"gitId":"ChuaZiLong"},"content":" if (index \u003c 0 || index \u003e\u003d tasks.getSize()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":648,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"Invalid task number.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":649,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":650,"author":{"gitId":"ChuaZiLong"},"content":" Task task \u003d tasks.removeTask(index);","lastModifiedDate":"2024-01-30"},{"lineNumber":651,"author":{"gitId":"ChuaZiLong"},"content":" ui.showDeletedTask(task, tasks.getSize());","lastModifiedDate":"2024-01-30"},{"lineNumber":652,"author":{"gitId":"ChuaZiLong"},"content":" storage.save(tasks);","lastModifiedDate":"2024-01-30"},{"lineNumber":653,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":654,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":655,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":656,"author":{"gitId":"ChuaZiLong"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-30"},{"lineNumber":657,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":658,"author":{"gitId":"ChuaZiLong"},"content":" return false;","lastModifiedDate":"2024-01-30"},{"lineNumber":659,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":660,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":661,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":662,"author":{"gitId":"ChuaZiLong"},"content":"class ExitCommand extends Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":663,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":664,"author":{"gitId":"ChuaZiLong"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2024-01-30"},{"lineNumber":665,"author":{"gitId":"ChuaZiLong"},"content":" ui.showGoodbye();","lastModifiedDate":"2024-01-30"},{"lineNumber":666,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":667,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":668,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":669,"author":{"gitId":"ChuaZiLong"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-30"},{"lineNumber":670,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":671,"author":{"gitId":"ChuaZiLong"},"content":" return true; // Indicate that the application should exit","lastModifiedDate":"2024-01-30"},{"lineNumber":672,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":673,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":674,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":675,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":676,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":677,"author":{"gitId":"ChuaZiLong"},"content":"class ListCommand extends Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":678,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":679,"author":{"gitId":"ChuaZiLong"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2024-01-30"},{"lineNumber":680,"author":{"gitId":"ChuaZiLong"},"content":" ui.showTaskList(tasks);","lastModifiedDate":"2024-01-30"},{"lineNumber":681,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":682,"author":{"gitId":"ChuaZiLong"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-30"},{"lineNumber":683,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":684,"author":{"gitId":"ChuaZiLong"},"content":" return false;","lastModifiedDate":"2024-01-30"},{"lineNumber":685,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":686,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":687,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":688,"author":{"gitId":"ChuaZiLong"},"content":"class AddTodoCommand extends Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":689,"author":{"gitId":"ChuaZiLong"},"content":" private String description;","lastModifiedDate":"2024-01-30"},{"lineNumber":690,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":691,"author":{"gitId":"ChuaZiLong"},"content":" public AddTodoCommand(String description) {","lastModifiedDate":"2024-01-30"},{"lineNumber":692,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":693,"author":{"gitId":"ChuaZiLong"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-30"},{"lineNumber":694,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":695,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":696,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":697,"author":{"gitId":"ChuaZiLong"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2024-01-30"},{"lineNumber":698,"author":{"gitId":"ChuaZiLong"},"content":" Todo newTodo \u003d new Todo(description);","lastModifiedDate":"2024-01-30"},{"lineNumber":699,"author":{"gitId":"ChuaZiLong"},"content":" tasks.addTask(newTodo);","lastModifiedDate":"2024-01-30"},{"lineNumber":700,"author":{"gitId":"ChuaZiLong"},"content":" ui.showTaskAdded(newTodo, tasks.getSize());","lastModifiedDate":"2024-01-30"},{"lineNumber":701,"author":{"gitId":"ChuaZiLong"},"content":" storage.save(tasks);","lastModifiedDate":"2024-01-30"},{"lineNumber":702,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":703,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":704,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":705,"author":{"gitId":"ChuaZiLong"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-30"},{"lineNumber":706,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":707,"author":{"gitId":"ChuaZiLong"},"content":" return false;","lastModifiedDate":"2024-01-30"},{"lineNumber":708,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":709,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":710,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":711,"author":{"gitId":"ChuaZiLong"},"content":"class AddDeadlineCommand extends Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":712,"author":{"gitId":"ChuaZiLong"},"content":" private String description;","lastModifiedDate":"2024-01-30"},{"lineNumber":713,"author":{"gitId":"ChuaZiLong"},"content":" private LocalDateTime by;","lastModifiedDate":"2024-01-30"},{"lineNumber":714,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":715,"author":{"gitId":"ChuaZiLong"},"content":" public AddDeadlineCommand(String description, LocalDateTime by) {","lastModifiedDate":"2024-01-30"},{"lineNumber":716,"author":{"gitId":"ChuaZiLong"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-30"},{"lineNumber":717,"author":{"gitId":"ChuaZiLong"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-30"},{"lineNumber":718,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":719,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":720,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":721,"author":{"gitId":"ChuaZiLong"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2024-01-30"},{"lineNumber":722,"author":{"gitId":"ChuaZiLong"},"content":" Deadline newDeadline \u003d new Deadline(description, by);","lastModifiedDate":"2024-01-30"},{"lineNumber":723,"author":{"gitId":"ChuaZiLong"},"content":" tasks.addTask(newDeadline);","lastModifiedDate":"2024-01-30"},{"lineNumber":724,"author":{"gitId":"ChuaZiLong"},"content":" ui.showTaskAdded(newDeadline, tasks.getSize());","lastModifiedDate":"2024-01-30"},{"lineNumber":725,"author":{"gitId":"ChuaZiLong"},"content":" storage.save(tasks);","lastModifiedDate":"2024-01-30"},{"lineNumber":726,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":727,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":728,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":729,"author":{"gitId":"ChuaZiLong"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-30"},{"lineNumber":730,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":731,"author":{"gitId":"ChuaZiLong"},"content":" return false;","lastModifiedDate":"2024-01-30"},{"lineNumber":732,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":733,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":734,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":735,"author":{"gitId":"ChuaZiLong"},"content":"class AddEventCommand extends Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":736,"author":{"gitId":"ChuaZiLong"},"content":" private String description;","lastModifiedDate":"2024-01-30"},{"lineNumber":737,"author":{"gitId":"ChuaZiLong"},"content":" private LocalDateTime start;","lastModifiedDate":"2024-01-30"},{"lineNumber":738,"author":{"gitId":"ChuaZiLong"},"content":" private LocalDateTime end;","lastModifiedDate":"2024-01-30"},{"lineNumber":739,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":740,"author":{"gitId":"ChuaZiLong"},"content":" public AddEventCommand(String description, LocalDateTime start, LocalDateTime end) {","lastModifiedDate":"2024-01-30"},{"lineNumber":741,"author":{"gitId":"ChuaZiLong"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-30"},{"lineNumber":742,"author":{"gitId":"ChuaZiLong"},"content":" this.start \u003d start;","lastModifiedDate":"2024-01-30"},{"lineNumber":743,"author":{"gitId":"ChuaZiLong"},"content":" this.end \u003d end;","lastModifiedDate":"2024-01-30"},{"lineNumber":744,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":745,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":746,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":747,"author":{"gitId":"ChuaZiLong"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2024-01-30"},{"lineNumber":748,"author":{"gitId":"ChuaZiLong"},"content":" Event newEvent \u003d new Event(description, start, end);","lastModifiedDate":"2024-01-30"},{"lineNumber":749,"author":{"gitId":"ChuaZiLong"},"content":" tasks.addTask(newEvent);","lastModifiedDate":"2024-01-30"},{"lineNumber":750,"author":{"gitId":"ChuaZiLong"},"content":" ui.showTaskAdded(newEvent, tasks.getSize());","lastModifiedDate":"2024-01-30"},{"lineNumber":751,"author":{"gitId":"ChuaZiLong"},"content":" storage.save(tasks);","lastModifiedDate":"2024-01-30"},{"lineNumber":752,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":753,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":754,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":755,"author":{"gitId":"ChuaZiLong"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-30"},{"lineNumber":756,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":757,"author":{"gitId":"ChuaZiLong"},"content":" return false;","lastModifiedDate":"2024-01-30"},{"lineNumber":758,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":759,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":760,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":761,"author":{"gitId":"ChuaZiLong"},"content":"class FindCommand extends Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":762,"author":{"gitId":"ChuaZiLong"},"content":" private String keyword;","lastModifiedDate":"2024-01-30"},{"lineNumber":763,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":764,"author":{"gitId":"ChuaZiLong"},"content":" public FindCommand(String keyword) {","lastModifiedDate":"2024-01-30"},{"lineNumber":765,"author":{"gitId":"ChuaZiLong"},"content":" this.keyword \u003d keyword.toLowerCase(); // convert to lowercase for case-insensitive search","lastModifiedDate":"2024-01-30"},{"lineNumber":766,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":767,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":768,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":769,"author":{"gitId":"ChuaZiLong"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2024-01-30"},{"lineNumber":770,"author":{"gitId":"ChuaZiLong"},"content":" ArrayList\u003cTask\u003e matchingTasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-30"},{"lineNumber":771,"author":{"gitId":"ChuaZiLong"},"content":" for (int i \u003d 0; i \u003c tasks.getSize(); i++) {","lastModifiedDate":"2024-01-30"},{"lineNumber":772,"author":{"gitId":"ChuaZiLong"},"content":" Task task \u003d tasks.getTask(i);","lastModifiedDate":"2024-01-30"},{"lineNumber":773,"author":{"gitId":"ChuaZiLong"},"content":" if (task.getDescription().toLowerCase().contains(keyword)) {","lastModifiedDate":"2024-01-30"},{"lineNumber":774,"author":{"gitId":"ChuaZiLong"},"content":" matchingTasks.add(task);","lastModifiedDate":"2024-01-30"},{"lineNumber":775,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":776,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":777,"author":{"gitId":"ChuaZiLong"},"content":" ui.showFindResults(matchingTasks);","lastModifiedDate":"2024-01-30"},{"lineNumber":778,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":779,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":780,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":781,"author":{"gitId":"ChuaZiLong"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-30"},{"lineNumber":782,"author":{"gitId":"ChuaZiLong"},"content":" return false;","lastModifiedDate":"2024-01-30"},{"lineNumber":783,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":784,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"ChuaZiLong":784}},{"path":"src/src/duke/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ChuaZiLong"},"content":"package src.duke;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"ChuaZiLong"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"ChuaZiLong"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"ChuaZiLong"},"content":"import java.util.Date;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"ChuaZiLong"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"ChuaZiLong"},"content":"import java.io.File;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"ChuaZiLong"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"ChuaZiLong"},"content":"import java.io.PrintWriter;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"ChuaZiLong"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"ChuaZiLong"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"ChuaZiLong"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"ChuaZiLong"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"ChuaZiLong"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"ChuaZiLong"},"content":"public class Duke {","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"ChuaZiLong"},"content":" private Storage storage;","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"ChuaZiLong"},"content":" private TaskList tasks;","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"ChuaZiLong"},"content":" private Ui ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"ChuaZiLong"},"content":" public Duke(String filePath) {","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"ChuaZiLong"},"content":" ui \u003d new Ui();","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"ChuaZiLong"},"content":" storage \u003d new Storage(filePath);","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"ChuaZiLong"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"ChuaZiLong"},"content":" tasks \u003d new TaskList(storage.load());","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"ChuaZiLong"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"ChuaZiLong"},"content":" ui.showLoadingError();","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"ChuaZiLong"},"content":" tasks \u003d new TaskList();","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"ChuaZiLong"},"content":" public void run() {","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"ChuaZiLong"},"content":" ui.showWelcome();","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"ChuaZiLong"},"content":" boolean isExit \u003d false;","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"ChuaZiLong"},"content":" while (!isExit) {","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"ChuaZiLong"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"ChuaZiLong"},"content":" String fullCommand \u003d ui.readCommand();","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"ChuaZiLong"},"content":" Command command \u003d Parser.parse(fullCommand);","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"ChuaZiLong"},"content":" command.execute(tasks, ui, storage);","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"ChuaZiLong"},"content":" isExit \u003d command.isExit(); // Check if the command signals to exit","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"ChuaZiLong"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"ChuaZiLong"},"content":" ui.showError(e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"ChuaZiLong"},"content":" ui.closeScanner();","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"ChuaZiLong"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"ChuaZiLong"},"content":" new Duke(\"./data/duke.txt/duke.txt\").run();","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"ChuaZiLong"},"content":"class DukeException extends Exception {","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"ChuaZiLong"},"content":" public DukeException(String message) {","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"ChuaZiLong"},"content":" super(message);","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":59,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":60,"author":{"gitId":"ChuaZiLong"},"content":"class Ui {","lastModifiedDate":"2024-01-30"},{"lineNumber":61,"author":{"gitId":"ChuaZiLong"},"content":" private Scanner scanner;","lastModifiedDate":"2024-01-30"},{"lineNumber":62,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":63,"author":{"gitId":"ChuaZiLong"},"content":" public Ui() {","lastModifiedDate":"2024-01-30"},{"lineNumber":64,"author":{"gitId":"ChuaZiLong"},"content":" scanner \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-30"},{"lineNumber":65,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":66,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":67,"author":{"gitId":"ChuaZiLong"},"content":" public void showWelcome() {","lastModifiedDate":"2024-01-30"},{"lineNumber":68,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"Hello! I\u0027m SCZL\");","lastModifiedDate":"2024-01-30"},{"lineNumber":69,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"What can I do for you?\");","lastModifiedDate":"2024-01-30"},{"lineNumber":70,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":71,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":72,"author":{"gitId":"ChuaZiLong"},"content":" public void showGoodbye() {","lastModifiedDate":"2024-01-30"},{"lineNumber":73,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"Bye. Hope to see you again soon!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":74,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":75,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":76,"author":{"gitId":"ChuaZiLong"},"content":" public void showError(String message) {","lastModifiedDate":"2024-01-30"},{"lineNumber":77,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(message);","lastModifiedDate":"2024-01-30"},{"lineNumber":78,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":79,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":80,"author":{"gitId":"ChuaZiLong"},"content":" public void showTaskAdded(Task task, int taskCount) {","lastModifiedDate":"2024-01-30"},{"lineNumber":81,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2024-01-30"},{"lineNumber":82,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\" \" + task);","lastModifiedDate":"2024-01-30"},{"lineNumber":83,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"Now you have \" + taskCount + \" tasks in the list.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":84,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":85,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":86,"author":{"gitId":"ChuaZiLong"},"content":" public void showTaskList(TaskList tasks) {","lastModifiedDate":"2024-01-30"},{"lineNumber":87,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"Here are the tasks in your list:\");","lastModifiedDate":"2024-01-30"},{"lineNumber":88,"author":{"gitId":"ChuaZiLong"},"content":" for (int i \u003d 0; i \u003c tasks.getSize(); i++) {","lastModifiedDate":"2024-01-30"},{"lineNumber":89,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println((i + 1) + \".\" + tasks.getTask(i));","lastModifiedDate":"2024-01-30"},{"lineNumber":90,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":91,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":92,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":93,"author":{"gitId":"ChuaZiLong"},"content":" public String readCommand() {","lastModifiedDate":"2024-01-30"},{"lineNumber":94,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":95,"author":{"gitId":"ChuaZiLong"},"content":" return scanner.nextLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":96,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":97,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":98,"author":{"gitId":"ChuaZiLong"},"content":" public void showLoadingError() {","lastModifiedDate":"2024-01-30"},{"lineNumber":99,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":100,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"Error loading file.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":101,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":102,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":103,"author":{"gitId":"ChuaZiLong"},"content":" public void closeScanner() {","lastModifiedDate":"2024-01-30"},{"lineNumber":104,"author":{"gitId":"ChuaZiLong"},"content":" scanner.close();","lastModifiedDate":"2024-01-30"},{"lineNumber":105,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":106,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":107,"author":{"gitId":"ChuaZiLong"},"content":" public void showMarkedTask(Task task) {","lastModifiedDate":"2024-01-30"},{"lineNumber":108,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2024-01-30"},{"lineNumber":109,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\" \" + task);","lastModifiedDate":"2024-01-30"},{"lineNumber":110,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":111,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":112,"author":{"gitId":"ChuaZiLong"},"content":" public void showUnmarkedTask(Task task) {","lastModifiedDate":"2024-01-30"},{"lineNumber":113,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2024-01-30"},{"lineNumber":114,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\" \" + task);","lastModifiedDate":"2024-01-30"},{"lineNumber":115,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":116,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":117,"author":{"gitId":"ChuaZiLong"},"content":" public void showDeletedTask(Task task, int taskCount) {","lastModifiedDate":"2024-01-30"},{"lineNumber":118,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"Noted. I\u0027ve removed this task:\");","lastModifiedDate":"2024-01-30"},{"lineNumber":119,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\" \" + task);","lastModifiedDate":"2024-01-30"},{"lineNumber":120,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"Now you have \" + taskCount + \" tasks in the list.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":121,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":122,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":123,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":124,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":125,"author":{"gitId":"ChuaZiLong"},"content":"class Storage {","lastModifiedDate":"2024-01-30"},{"lineNumber":126,"author":{"gitId":"ChuaZiLong"},"content":" private String filePath;","lastModifiedDate":"2024-01-30"},{"lineNumber":127,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":128,"author":{"gitId":"ChuaZiLong"},"content":" public Storage(String filePath) {","lastModifiedDate":"2024-01-30"},{"lineNumber":129,"author":{"gitId":"ChuaZiLong"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2024-01-30"},{"lineNumber":130,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":131,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":132,"author":{"gitId":"ChuaZiLong"},"content":" public ArrayList\u003cTask\u003e load() throws DukeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":133,"author":{"gitId":"ChuaZiLong"},"content":" ArrayList\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-30"},{"lineNumber":134,"author":{"gitId":"ChuaZiLong"},"content":" File file \u003d new File(filePath);","lastModifiedDate":"2024-01-30"},{"lineNumber":135,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":136,"author":{"gitId":"ChuaZiLong"},"content":" if (!file.exists()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":137,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"File not found\");","lastModifiedDate":"2024-01-30"},{"lineNumber":138,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":139,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":140,"author":{"gitId":"ChuaZiLong"},"content":" try (Scanner fileScanner \u003d new Scanner(file)) {","lastModifiedDate":"2024-01-30"},{"lineNumber":141,"author":{"gitId":"ChuaZiLong"},"content":" while (fileScanner.hasNext()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":142,"author":{"gitId":"ChuaZiLong"},"content":" String line \u003d fileScanner.nextLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":143,"author":{"gitId":"ChuaZiLong"},"content":" String[] parts \u003d line.split(\" \\\\| \");","lastModifiedDate":"2024-01-30"},{"lineNumber":144,"author":{"gitId":"ChuaZiLong"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":145,"author":{"gitId":"ChuaZiLong"},"content":" String type \u003d parts[0];","lastModifiedDate":"2024-01-30"},{"lineNumber":146,"author":{"gitId":"ChuaZiLong"},"content":" boolean isDone \u003d parts[1].equals(\"1\");","lastModifiedDate":"2024-01-30"},{"lineNumber":147,"author":{"gitId":"ChuaZiLong"},"content":" String description \u003d parts[2];","lastModifiedDate":"2024-01-30"},{"lineNumber":148,"author":{"gitId":"ChuaZiLong"},"content":" Task task \u003d null;","lastModifiedDate":"2024-01-30"},{"lineNumber":149,"author":{"gitId":"ChuaZiLong"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd HH:mm\");","lastModifiedDate":"2024-01-30"},{"lineNumber":150,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":151,"author":{"gitId":"ChuaZiLong"},"content":" switch (type) {","lastModifiedDate":"2024-01-30"},{"lineNumber":152,"author":{"gitId":"ChuaZiLong"},"content":" case \"T\":","lastModifiedDate":"2024-01-30"},{"lineNumber":153,"author":{"gitId":"ChuaZiLong"},"content":" task \u003d new Todo(description);","lastModifiedDate":"2024-01-30"},{"lineNumber":154,"author":{"gitId":"ChuaZiLong"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":155,"author":{"gitId":"ChuaZiLong"},"content":" case \"D\":","lastModifiedDate":"2024-01-30"},{"lineNumber":156,"author":{"gitId":"ChuaZiLong"},"content":" if (parts.length \u003c 4) throw new DukeException(\"Invalid deadline format in file.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":157,"author":{"gitId":"ChuaZiLong"},"content":" LocalDateTime byDate \u003d LocalDateTime.parse(parts[3], formatter);","lastModifiedDate":"2024-01-30"},{"lineNumber":158,"author":{"gitId":"ChuaZiLong"},"content":" task \u003d new Deadline(description, byDate);","lastModifiedDate":"2024-01-30"},{"lineNumber":159,"author":{"gitId":"ChuaZiLong"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":160,"author":{"gitId":"ChuaZiLong"},"content":" case \"E\":","lastModifiedDate":"2024-01-30"},{"lineNumber":161,"author":{"gitId":"ChuaZiLong"},"content":" if (parts.length \u003c 5) throw new DukeException(\"Invalid event format in file.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":162,"author":{"gitId":"ChuaZiLong"},"content":" LocalDateTime from \u003d LocalDateTime.parse(parts[3], formatter);","lastModifiedDate":"2024-01-30"},{"lineNumber":163,"author":{"gitId":"ChuaZiLong"},"content":" LocalDateTime to \u003d LocalDateTime.parse(parts[4], formatter);","lastModifiedDate":"2024-01-30"},{"lineNumber":164,"author":{"gitId":"ChuaZiLong"},"content":" task \u003d new Event(description, from, to);","lastModifiedDate":"2024-01-30"},{"lineNumber":165,"author":{"gitId":"ChuaZiLong"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":166,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":167,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":168,"author":{"gitId":"ChuaZiLong"},"content":" if (task !\u003d null) {","lastModifiedDate":"2024-01-30"},{"lineNumber":169,"author":{"gitId":"ChuaZiLong"},"content":" if (isDone) {","lastModifiedDate":"2024-01-30"},{"lineNumber":170,"author":{"gitId":"ChuaZiLong"},"content":" task.markAsDone();","lastModifiedDate":"2024-01-30"},{"lineNumber":171,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":172,"author":{"gitId":"ChuaZiLong"},"content":" tasks.add(task);","lastModifiedDate":"2024-01-30"},{"lineNumber":173,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":174,"author":{"gitId":"ChuaZiLong"},"content":" } catch (DukeException | DateTimeParseException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":175,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"Skipping invalid task: \" + line);","lastModifiedDate":"2024-01-30"},{"lineNumber":176,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":177,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":178,"author":{"gitId":"ChuaZiLong"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":179,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"File not found: \" + e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":180,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":181,"author":{"gitId":"ChuaZiLong"},"content":" return tasks;","lastModifiedDate":"2024-01-30"},{"lineNumber":182,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":183,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":184,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":185,"author":{"gitId":"ChuaZiLong"},"content":" public void save(TaskList tasks) {","lastModifiedDate":"2024-01-30"},{"lineNumber":186,"author":{"gitId":"ChuaZiLong"},"content":" try (PrintWriter writer \u003d new PrintWriter(new FileWriter(filePath))) {","lastModifiedDate":"2024-01-30"},{"lineNumber":187,"author":{"gitId":"ChuaZiLong"},"content":" for (int i \u003d 0; i \u003c tasks.getSize(); i++) {","lastModifiedDate":"2024-01-30"},{"lineNumber":188,"author":{"gitId":"ChuaZiLong"},"content":" Task task \u003d tasks.getTask(i);","lastModifiedDate":"2024-01-30"},{"lineNumber":189,"author":{"gitId":"ChuaZiLong"},"content":" writer.println(taskToFileString(task));","lastModifiedDate":"2024-01-30"},{"lineNumber":190,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":191,"author":{"gitId":"ChuaZiLong"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":192,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"An error occurred while saving tasks to file: \" + e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":193,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":194,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":195,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":196,"author":{"gitId":"ChuaZiLong"},"content":" private String taskToFileString(Task task) {","lastModifiedDate":"2024-01-30"},{"lineNumber":197,"author":{"gitId":"ChuaZiLong"},"content":" String type \u003d task instanceof Todo ? \"T\" :","lastModifiedDate":"2024-01-30"},{"lineNumber":198,"author":{"gitId":"ChuaZiLong"},"content":" task instanceof Deadline ? \"D\" :","lastModifiedDate":"2024-01-30"},{"lineNumber":199,"author":{"gitId":"ChuaZiLong"},"content":" task instanceof Event ? \"E\" : \"\";","lastModifiedDate":"2024-01-30"},{"lineNumber":200,"author":{"gitId":"ChuaZiLong"},"content":" String status \u003d task.isDone ? \"1\" : \"0\";","lastModifiedDate":"2024-01-30"},{"lineNumber":201,"author":{"gitId":"ChuaZiLong"},"content":" String details \u003d task.getDescription();","lastModifiedDate":"2024-01-30"},{"lineNumber":202,"author":{"gitId":"ChuaZiLong"},"content":" String additionalInfo \u003d \"\";","lastModifiedDate":"2024-01-30"},{"lineNumber":203,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":204,"author":{"gitId":"ChuaZiLong"},"content":" if (task instanceof Deadline) {","lastModifiedDate":"2024-01-30"},{"lineNumber":205,"author":{"gitId":"ChuaZiLong"},"content":" Deadline deadline \u003d (Deadline) task;","lastModifiedDate":"2024-01-30"},{"lineNumber":206,"author":{"gitId":"ChuaZiLong"},"content":" additionalInfo \u003d \" | \" + deadline.getBy().format(DateTimeFormatter.ofPattern(\"yyyy-MM-dd HH:mm\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":207,"author":{"gitId":"ChuaZiLong"},"content":" } else if (task instanceof Event) {","lastModifiedDate":"2024-01-30"},{"lineNumber":208,"author":{"gitId":"ChuaZiLong"},"content":" Event event \u003d (Event) task;","lastModifiedDate":"2024-01-30"},{"lineNumber":209,"author":{"gitId":"ChuaZiLong"},"content":" additionalInfo \u003d \" | \" + event.getFrom().format(DateTimeFormatter.ofPattern(\"yyyy-MM-dd HH:mm\")) +","lastModifiedDate":"2024-01-30"},{"lineNumber":210,"author":{"gitId":"ChuaZiLong"},"content":" \" | \" + event.getTo().format(DateTimeFormatter.ofPattern(\"yyyy-MM-dd HH:mm\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":211,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":212,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":213,"author":{"gitId":"ChuaZiLong"},"content":" return type + \" | \" + status + \" | \" + details + additionalInfo;","lastModifiedDate":"2024-01-30"},{"lineNumber":214,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":215,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":216,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":217,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":218,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":219,"author":{"gitId":"ChuaZiLong"},"content":"class Parser {","lastModifiedDate":"2024-01-30"},{"lineNumber":220,"author":{"gitId":"ChuaZiLong"},"content":" private static final DateTimeFormatter dateTimeFormatter \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd HHmm\");","lastModifiedDate":"2024-01-30"},{"lineNumber":221,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":222,"author":{"gitId":"ChuaZiLong"},"content":" public static Command parse(String fullCommand) throws DukeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":223,"author":{"gitId":"ChuaZiLong"},"content":" String[] commandParts \u003d fullCommand.split(\" \", 2);","lastModifiedDate":"2024-01-30"},{"lineNumber":224,"author":{"gitId":"ChuaZiLong"},"content":" String commandType \u003d commandParts[0];","lastModifiedDate":"2024-01-30"},{"lineNumber":225,"author":{"gitId":"ChuaZiLong"},"content":" String commandArgs \u003d commandParts.length \u003e 1 ? commandParts[1] : \"\";","lastModifiedDate":"2024-01-30"},{"lineNumber":226,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":227,"author":{"gitId":"ChuaZiLong"},"content":" switch (commandType) {","lastModifiedDate":"2024-01-30"},{"lineNumber":228,"author":{"gitId":"ChuaZiLong"},"content":" case \"todo\":","lastModifiedDate":"2024-01-30"},{"lineNumber":229,"author":{"gitId":"ChuaZiLong"},"content":" if (commandArgs.isEmpty()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":230,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"The description of a todo cannot be empty.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":231,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":232,"author":{"gitId":"ChuaZiLong"},"content":" return new AddTodoCommand(commandArgs);","lastModifiedDate":"2024-01-30"},{"lineNumber":233,"author":{"gitId":"ChuaZiLong"},"content":" case \"deadline\":","lastModifiedDate":"2024-01-30"},{"lineNumber":234,"author":{"gitId":"ChuaZiLong"},"content":" return parseAddDeadlineCommand(commandArgs);","lastModifiedDate":"2024-01-30"},{"lineNumber":235,"author":{"gitId":"ChuaZiLong"},"content":" case \"event\":","lastModifiedDate":"2024-01-30"},{"lineNumber":236,"author":{"gitId":"ChuaZiLong"},"content":" return parseAddEventCommand(commandArgs);","lastModifiedDate":"2024-01-30"},{"lineNumber":237,"author":{"gitId":"ChuaZiLong"},"content":" case \"list\":","lastModifiedDate":"2024-01-30"},{"lineNumber":238,"author":{"gitId":"ChuaZiLong"},"content":" return new ListCommand();","lastModifiedDate":"2024-01-30"},{"lineNumber":239,"author":{"gitId":"ChuaZiLong"},"content":" case \"mark\":","lastModifiedDate":"2024-01-30"},{"lineNumber":240,"author":{"gitId":"ChuaZiLong"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":241,"author":{"gitId":"ChuaZiLong"},"content":" int index \u003d Integer.parseInt(commandArgs) - 1;","lastModifiedDate":"2024-01-30"},{"lineNumber":242,"author":{"gitId":"ChuaZiLong"},"content":" return new MarkCommand(index);","lastModifiedDate":"2024-01-30"},{"lineNumber":243,"author":{"gitId":"ChuaZiLong"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":244,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"Invalid task number format.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":245,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":246,"author":{"gitId":"ChuaZiLong"},"content":" case \"unmark\":","lastModifiedDate":"2024-01-30"},{"lineNumber":247,"author":{"gitId":"ChuaZiLong"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":248,"author":{"gitId":"ChuaZiLong"},"content":" int index \u003d Integer.parseInt(commandArgs) - 1;","lastModifiedDate":"2024-01-30"},{"lineNumber":249,"author":{"gitId":"ChuaZiLong"},"content":" return new UnmarkCommand(index);","lastModifiedDate":"2024-01-30"},{"lineNumber":250,"author":{"gitId":"ChuaZiLong"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":251,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"Invalid task number format.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":252,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":253,"author":{"gitId":"ChuaZiLong"},"content":" case \"delete\":","lastModifiedDate":"2024-01-30"},{"lineNumber":254,"author":{"gitId":"ChuaZiLong"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":255,"author":{"gitId":"ChuaZiLong"},"content":" int index \u003d Integer.parseInt(commandArgs) - 1;","lastModifiedDate":"2024-01-30"},{"lineNumber":256,"author":{"gitId":"ChuaZiLong"},"content":" return new DeleteCommand(index);","lastModifiedDate":"2024-01-30"},{"lineNumber":257,"author":{"gitId":"ChuaZiLong"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":258,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"Invalid task number format.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":259,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":260,"author":{"gitId":"ChuaZiLong"},"content":" case \"bye\":","lastModifiedDate":"2024-01-30"},{"lineNumber":261,"author":{"gitId":"ChuaZiLong"},"content":" return new ExitCommand();","lastModifiedDate":"2024-01-30"},{"lineNumber":262,"author":{"gitId":"ChuaZiLong"},"content":" default:","lastModifiedDate":"2024-01-30"},{"lineNumber":263,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"Unknown command\");","lastModifiedDate":"2024-01-30"},{"lineNumber":264,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":265,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":266,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":267,"author":{"gitId":"ChuaZiLong"},"content":" private static Command parseAddDeadlineCommand(String commandArgs) throws DukeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":268,"author":{"gitId":"ChuaZiLong"},"content":" String[] parts \u003d commandArgs.split(\"/by\", 2);","lastModifiedDate":"2024-01-30"},{"lineNumber":269,"author":{"gitId":"ChuaZiLong"},"content":" if (parts.length \u003c 2 || parts[0].trim().isEmpty() || parts[1].trim().isEmpty()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":270,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"Invalid deadline command format.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":271,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":272,"author":{"gitId":"ChuaZiLong"},"content":" String description \u003d parts[0].trim();","lastModifiedDate":"2024-01-30"},{"lineNumber":273,"author":{"gitId":"ChuaZiLong"},"content":" String by \u003d parts[1].trim();","lastModifiedDate":"2024-01-30"},{"lineNumber":274,"author":{"gitId":"ChuaZiLong"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":275,"author":{"gitId":"ChuaZiLong"},"content":" LocalDateTime byDate \u003d LocalDateTime.parse(by, dateTimeFormatter);","lastModifiedDate":"2024-01-30"},{"lineNumber":276,"author":{"gitId":"ChuaZiLong"},"content":" return new AddDeadlineCommand(description, byDate);","lastModifiedDate":"2024-01-30"},{"lineNumber":277,"author":{"gitId":"ChuaZiLong"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":278,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"Invalid date format. Please use yyyy-MM-dd HHmm format.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":279,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":280,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":281,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":282,"author":{"gitId":"ChuaZiLong"},"content":" private static Command parseAddEventCommand(String commandArgs) throws DukeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":283,"author":{"gitId":"ChuaZiLong"},"content":" String[] parts \u003d commandArgs.split(\"/at\", 2);","lastModifiedDate":"2024-01-30"},{"lineNumber":284,"author":{"gitId":"ChuaZiLong"},"content":" if (parts.length \u003c 2 || parts[0].trim().isEmpty() || parts[1].trim().isEmpty()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":285,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"Invalid event command format.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":286,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":287,"author":{"gitId":"ChuaZiLong"},"content":" String description \u003d parts[0].trim();","lastModifiedDate":"2024-01-30"},{"lineNumber":288,"author":{"gitId":"ChuaZiLong"},"content":" String at \u003d parts[1].trim();","lastModifiedDate":"2024-01-30"},{"lineNumber":289,"author":{"gitId":"ChuaZiLong"},"content":" String[] timeParts \u003d at.split(\"-\", 2);","lastModifiedDate":"2024-01-30"},{"lineNumber":290,"author":{"gitId":"ChuaZiLong"},"content":" if (timeParts.length \u003c 2 || timeParts[0].trim().isEmpty() || timeParts[1].trim().isEmpty()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":291,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"Invalid time format for event command.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":292,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":293,"author":{"gitId":"ChuaZiLong"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":294,"author":{"gitId":"ChuaZiLong"},"content":" LocalDateTime startTime \u003d LocalDateTime.parse(timeParts[0].trim(), dateTimeFormatter);","lastModifiedDate":"2024-01-30"},{"lineNumber":295,"author":{"gitId":"ChuaZiLong"},"content":" LocalDateTime endTime \u003d LocalDateTime.parse(timeParts[1].trim(), dateTimeFormatter);","lastModifiedDate":"2024-01-30"},{"lineNumber":296,"author":{"gitId":"ChuaZiLong"},"content":" return new AddEventCommand(description, startTime, endTime);","lastModifiedDate":"2024-01-30"},{"lineNumber":297,"author":{"gitId":"ChuaZiLong"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":298,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"Invalid date format. Please use yyyy-MM-dd HHmm format.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":299,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":300,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":301,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":302,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":303,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":304,"author":{"gitId":"ChuaZiLong"},"content":"class TaskList {","lastModifiedDate":"2024-01-30"},{"lineNumber":305,"author":{"gitId":"ChuaZiLong"},"content":" private ArrayList\u003cTask\u003e tasks;","lastModifiedDate":"2024-01-30"},{"lineNumber":306,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":307,"author":{"gitId":"ChuaZiLong"},"content":" public TaskList(ArrayList\u003cTask\u003e tasks) {","lastModifiedDate":"2024-01-30"},{"lineNumber":308,"author":{"gitId":"ChuaZiLong"},"content":" this.tasks \u003d tasks;","lastModifiedDate":"2024-01-30"},{"lineNumber":309,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":310,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":311,"author":{"gitId":"ChuaZiLong"},"content":" public TaskList() {","lastModifiedDate":"2024-01-30"},{"lineNumber":312,"author":{"gitId":"ChuaZiLong"},"content":" this(new ArrayList\u003c\u003e());","lastModifiedDate":"2024-01-30"},{"lineNumber":313,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":314,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":315,"author":{"gitId":"ChuaZiLong"},"content":" public void addTask(Task task) {","lastModifiedDate":"2024-01-30"},{"lineNumber":316,"author":{"gitId":"ChuaZiLong"},"content":" tasks.add(task);","lastModifiedDate":"2024-01-30"},{"lineNumber":317,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":318,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":319,"author":{"gitId":"ChuaZiLong"},"content":" public Task removeTask(int index) {","lastModifiedDate":"2024-01-30"},{"lineNumber":320,"author":{"gitId":"ChuaZiLong"},"content":" return tasks.remove(index);","lastModifiedDate":"2024-01-30"},{"lineNumber":321,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":322,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":323,"author":{"gitId":"ChuaZiLong"},"content":" public Task getTask(int index) {","lastModifiedDate":"2024-01-30"},{"lineNumber":324,"author":{"gitId":"ChuaZiLong"},"content":" return tasks.get(index);","lastModifiedDate":"2024-01-30"},{"lineNumber":325,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":326,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":327,"author":{"gitId":"ChuaZiLong"},"content":" public int getSize() {","lastModifiedDate":"2024-01-30"},{"lineNumber":328,"author":{"gitId":"ChuaZiLong"},"content":" return tasks.size();","lastModifiedDate":"2024-01-30"},{"lineNumber":329,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":330,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":331,"author":{"gitId":"ChuaZiLong"},"content":" // ... any other methods needed for task management ...","lastModifiedDate":"2024-01-30"},{"lineNumber":332,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":333,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":334,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":335,"author":{"gitId":"ChuaZiLong"},"content":"enum TaskType {","lastModifiedDate":"2024-01-30"},{"lineNumber":336,"author":{"gitId":"ChuaZiLong"},"content":" TODO,","lastModifiedDate":"2024-01-30"},{"lineNumber":337,"author":{"gitId":"ChuaZiLong"},"content":" DEADLINE,","lastModifiedDate":"2024-01-30"},{"lineNumber":338,"author":{"gitId":"ChuaZiLong"},"content":" EVENT","lastModifiedDate":"2024-01-30"},{"lineNumber":339,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":340,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":341,"author":{"gitId":"ChuaZiLong"},"content":"class Task {","lastModifiedDate":"2024-01-30"},{"lineNumber":342,"author":{"gitId":"ChuaZiLong"},"content":" protected String description;","lastModifiedDate":"2024-01-30"},{"lineNumber":343,"author":{"gitId":"ChuaZiLong"},"content":" protected boolean isDone;","lastModifiedDate":"2024-01-30"},{"lineNumber":344,"author":{"gitId":"ChuaZiLong"},"content":" protected TaskType taskType;","lastModifiedDate":"2024-01-30"},{"lineNumber":345,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":346,"author":{"gitId":"ChuaZiLong"},"content":" public Task(String description, TaskType taskType) {","lastModifiedDate":"2024-01-30"},{"lineNumber":347,"author":{"gitId":"ChuaZiLong"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-30"},{"lineNumber":348,"author":{"gitId":"ChuaZiLong"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-30"},{"lineNumber":349,"author":{"gitId":"ChuaZiLong"},"content":" this.taskType \u003d taskType;","lastModifiedDate":"2024-01-30"},{"lineNumber":350,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":351,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":352,"author":{"gitId":"ChuaZiLong"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-01-30"},{"lineNumber":353,"author":{"gitId":"ChuaZiLong"},"content":" return \"[\" + taskType + \"]\" + (isDone ? \"[X] \" : \"[ ] \");","lastModifiedDate":"2024-01-30"},{"lineNumber":354,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":355,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":356,"author":{"gitId":"ChuaZiLong"},"content":" public String getDescription() {","lastModifiedDate":"2024-01-30"},{"lineNumber":357,"author":{"gitId":"ChuaZiLong"},"content":" return description;","lastModifiedDate":"2024-01-30"},{"lineNumber":358,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":359,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":360,"author":{"gitId":"ChuaZiLong"},"content":" public void markAsDone() {","lastModifiedDate":"2024-01-30"},{"lineNumber":361,"author":{"gitId":"ChuaZiLong"},"content":" isDone \u003d true;","lastModifiedDate":"2024-01-30"},{"lineNumber":362,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":363,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":364,"author":{"gitId":"ChuaZiLong"},"content":" public void markAsNotDone() {","lastModifiedDate":"2024-01-30"},{"lineNumber":365,"author":{"gitId":"ChuaZiLong"},"content":" isDone \u003d false;","lastModifiedDate":"2024-01-30"},{"lineNumber":366,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":367,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":368,"author":{"gitId":"ChuaZiLong"},"content":" public String toString() {","lastModifiedDate":"2024-01-30"},{"lineNumber":369,"author":{"gitId":"ChuaZiLong"},"content":" return getStatusIcon() + getDescription();","lastModifiedDate":"2024-01-30"},{"lineNumber":370,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":371,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":372,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":373,"author":{"gitId":"ChuaZiLong"},"content":"class Todo extends Task {","lastModifiedDate":"2024-01-30"},{"lineNumber":374,"author":{"gitId":"ChuaZiLong"},"content":" public Todo(String description) {","lastModifiedDate":"2024-01-30"},{"lineNumber":375,"author":{"gitId":"ChuaZiLong"},"content":" super(description, TaskType.TODO);","lastModifiedDate":"2024-01-30"},{"lineNumber":376,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":377,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":378,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":379,"author":{"gitId":"ChuaZiLong"},"content":"class Deadline extends Task {","lastModifiedDate":"2024-01-30"},{"lineNumber":380,"author":{"gitId":"ChuaZiLong"},"content":" protected LocalDateTime by;","lastModifiedDate":"2024-01-30"},{"lineNumber":381,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":382,"author":{"gitId":"ChuaZiLong"},"content":" public Deadline(String description, LocalDateTime by) {","lastModifiedDate":"2024-01-30"},{"lineNumber":383,"author":{"gitId":"ChuaZiLong"},"content":" super(description, TaskType.DEADLINE);","lastModifiedDate":"2024-01-30"},{"lineNumber":384,"author":{"gitId":"ChuaZiLong"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-30"},{"lineNumber":385,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":386,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":387,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":388,"author":{"gitId":"ChuaZiLong"},"content":" public String getDescription() {","lastModifiedDate":"2024-01-30"},{"lineNumber":389,"author":{"gitId":"ChuaZiLong"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"MMM dd yyyy, HH:mm\");","lastModifiedDate":"2024-01-30"},{"lineNumber":390,"author":{"gitId":"ChuaZiLong"},"content":" return super.getDescription() + \" (by: \" + formatter.format(by) + \")\";","lastModifiedDate":"2024-01-30"},{"lineNumber":391,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":392,"author":{"gitId":"ChuaZiLong"},"content":" public LocalDateTime getBy() {","lastModifiedDate":"2024-01-30"},{"lineNumber":393,"author":{"gitId":"ChuaZiLong"},"content":" return by;","lastModifiedDate":"2024-01-30"},{"lineNumber":394,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":395,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":396,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":397,"author":{"gitId":"ChuaZiLong"},"content":"class Event extends Task {","lastModifiedDate":"2024-01-30"},{"lineNumber":398,"author":{"gitId":"ChuaZiLong"},"content":" protected LocalDateTime from;","lastModifiedDate":"2024-01-30"},{"lineNumber":399,"author":{"gitId":"ChuaZiLong"},"content":" protected LocalDateTime to;","lastModifiedDate":"2024-01-30"},{"lineNumber":400,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":401,"author":{"gitId":"ChuaZiLong"},"content":" public Event(String description, LocalDateTime from, LocalDateTime to) {","lastModifiedDate":"2024-01-30"},{"lineNumber":402,"author":{"gitId":"ChuaZiLong"},"content":" super(description, TaskType.EVENT);","lastModifiedDate":"2024-01-30"},{"lineNumber":403,"author":{"gitId":"ChuaZiLong"},"content":" this.from \u003d from;","lastModifiedDate":"2024-01-30"},{"lineNumber":404,"author":{"gitId":"ChuaZiLong"},"content":" this.to \u003d to;","lastModifiedDate":"2024-01-30"},{"lineNumber":405,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":406,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":407,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":408,"author":{"gitId":"ChuaZiLong"},"content":" public String getDescription() {","lastModifiedDate":"2024-01-30"},{"lineNumber":409,"author":{"gitId":"ChuaZiLong"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"MMM dd yyyy, HH:mm\");","lastModifiedDate":"2024-01-30"},{"lineNumber":410,"author":{"gitId":"ChuaZiLong"},"content":" return super.getDescription() + \" (from: \" + formatter.format(from) + \" to: \" + formatter.format(to) + \")\";","lastModifiedDate":"2024-01-30"},{"lineNumber":411,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":412,"author":{"gitId":"ChuaZiLong"},"content":" public LocalDateTime getFrom() {","lastModifiedDate":"2024-01-30"},{"lineNumber":413,"author":{"gitId":"ChuaZiLong"},"content":" return from;","lastModifiedDate":"2024-01-30"},{"lineNumber":414,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":415,"author":{"gitId":"ChuaZiLong"},"content":" public LocalDateTime getTo() {","lastModifiedDate":"2024-01-30"},{"lineNumber":416,"author":{"gitId":"ChuaZiLong"},"content":" return to;","lastModifiedDate":"2024-01-30"},{"lineNumber":417,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":418,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":419,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":420,"author":{"gitId":"ChuaZiLong"},"content":"abstract class Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":421,"author":{"gitId":"ChuaZiLong"},"content":" public abstract void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException;","lastModifiedDate":"2024-01-30"},{"lineNumber":422,"author":{"gitId":"ChuaZiLong"},"content":" public abstract boolean isExit();","lastModifiedDate":"2024-01-30"},{"lineNumber":423,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":424,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":425,"author":{"gitId":"ChuaZiLong"},"content":"class MarkCommand extends Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":426,"author":{"gitId":"ChuaZiLong"},"content":" private int index;","lastModifiedDate":"2024-01-30"},{"lineNumber":427,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":428,"author":{"gitId":"ChuaZiLong"},"content":" public MarkCommand(int index) {","lastModifiedDate":"2024-01-30"},{"lineNumber":429,"author":{"gitId":"ChuaZiLong"},"content":" this.index \u003d index;","lastModifiedDate":"2024-01-30"},{"lineNumber":430,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":431,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":432,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":433,"author":{"gitId":"ChuaZiLong"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":434,"author":{"gitId":"ChuaZiLong"},"content":" if (index \u003c 0 || index \u003e\u003d tasks.getSize()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":435,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"Invalid task number.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":436,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":437,"author":{"gitId":"ChuaZiLong"},"content":" Task task \u003d tasks.getTask(index);","lastModifiedDate":"2024-01-30"},{"lineNumber":438,"author":{"gitId":"ChuaZiLong"},"content":" task.markAsDone();","lastModifiedDate":"2024-01-30"},{"lineNumber":439,"author":{"gitId":"ChuaZiLong"},"content":" ui.showMarkedTask(task);","lastModifiedDate":"2024-01-30"},{"lineNumber":440,"author":{"gitId":"ChuaZiLong"},"content":" storage.save(tasks);","lastModifiedDate":"2024-01-30"},{"lineNumber":441,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":442,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":443,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":444,"author":{"gitId":"ChuaZiLong"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-30"},{"lineNumber":445,"author":{"gitId":"ChuaZiLong"},"content":" return false;","lastModifiedDate":"2024-01-30"},{"lineNumber":446,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":447,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":448,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":449,"author":{"gitId":"ChuaZiLong"},"content":"class UnmarkCommand extends Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":450,"author":{"gitId":"ChuaZiLong"},"content":" private int index;","lastModifiedDate":"2024-01-30"},{"lineNumber":451,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":452,"author":{"gitId":"ChuaZiLong"},"content":" public UnmarkCommand(int index) {","lastModifiedDate":"2024-01-30"},{"lineNumber":453,"author":{"gitId":"ChuaZiLong"},"content":" this.index \u003d index;","lastModifiedDate":"2024-01-30"},{"lineNumber":454,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":455,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":456,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":457,"author":{"gitId":"ChuaZiLong"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":458,"author":{"gitId":"ChuaZiLong"},"content":" if (index \u003c 0 || index \u003e\u003d tasks.getSize()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":459,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"Invalid task number.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":460,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":461,"author":{"gitId":"ChuaZiLong"},"content":" Task task \u003d tasks.getTask(index);","lastModifiedDate":"2024-01-30"},{"lineNumber":462,"author":{"gitId":"ChuaZiLong"},"content":" task.markAsNotDone();","lastModifiedDate":"2024-01-30"},{"lineNumber":463,"author":{"gitId":"ChuaZiLong"},"content":" ui.showUnmarkedTask(task);","lastModifiedDate":"2024-01-30"},{"lineNumber":464,"author":{"gitId":"ChuaZiLong"},"content":" storage.save(tasks);","lastModifiedDate":"2024-01-30"},{"lineNumber":465,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":466,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":467,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":468,"author":{"gitId":"ChuaZiLong"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-30"},{"lineNumber":469,"author":{"gitId":"ChuaZiLong"},"content":" return false;","lastModifiedDate":"2024-01-30"},{"lineNumber":470,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":471,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":472,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":473,"author":{"gitId":"ChuaZiLong"},"content":"class DeleteCommand extends Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":474,"author":{"gitId":"ChuaZiLong"},"content":" private int index;","lastModifiedDate":"2024-01-30"},{"lineNumber":475,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":476,"author":{"gitId":"ChuaZiLong"},"content":" public DeleteCommand(int index) {","lastModifiedDate":"2024-01-30"},{"lineNumber":477,"author":{"gitId":"ChuaZiLong"},"content":" this.index \u003d index;","lastModifiedDate":"2024-01-30"},{"lineNumber":478,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":479,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":480,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":481,"author":{"gitId":"ChuaZiLong"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":482,"author":{"gitId":"ChuaZiLong"},"content":" if (index \u003c 0 || index \u003e\u003d tasks.getSize()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":483,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"Invalid task number.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":484,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":485,"author":{"gitId":"ChuaZiLong"},"content":" Task task \u003d tasks.removeTask(index);","lastModifiedDate":"2024-01-30"},{"lineNumber":486,"author":{"gitId":"ChuaZiLong"},"content":" ui.showDeletedTask(task, tasks.getSize());","lastModifiedDate":"2024-01-30"},{"lineNumber":487,"author":{"gitId":"ChuaZiLong"},"content":" storage.save(tasks);","lastModifiedDate":"2024-01-30"},{"lineNumber":488,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":489,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":490,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":491,"author":{"gitId":"ChuaZiLong"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-30"},{"lineNumber":492,"author":{"gitId":"ChuaZiLong"},"content":" return false;","lastModifiedDate":"2024-01-30"},{"lineNumber":493,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":494,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":495,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":496,"author":{"gitId":"ChuaZiLong"},"content":"class ExitCommand extends Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":497,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":498,"author":{"gitId":"ChuaZiLong"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2024-01-30"},{"lineNumber":499,"author":{"gitId":"ChuaZiLong"},"content":" ui.showGoodbye();","lastModifiedDate":"2024-01-30"},{"lineNumber":500,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":501,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":502,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":503,"author":{"gitId":"ChuaZiLong"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-30"},{"lineNumber":504,"author":{"gitId":"ChuaZiLong"},"content":" return true; // Indicate that the application should exit","lastModifiedDate":"2024-01-30"},{"lineNumber":505,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":506,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":507,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":508,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":509,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":510,"author":{"gitId":"ChuaZiLong"},"content":"class ListCommand extends Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":511,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":512,"author":{"gitId":"ChuaZiLong"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2024-01-30"},{"lineNumber":513,"author":{"gitId":"ChuaZiLong"},"content":" ui.showTaskList(tasks);","lastModifiedDate":"2024-01-30"},{"lineNumber":514,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":515,"author":{"gitId":"ChuaZiLong"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-30"},{"lineNumber":516,"author":{"gitId":"ChuaZiLong"},"content":" return false;","lastModifiedDate":"2024-01-30"},{"lineNumber":517,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":518,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":519,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":520,"author":{"gitId":"ChuaZiLong"},"content":"class AddTodoCommand extends Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":521,"author":{"gitId":"ChuaZiLong"},"content":" private String description;","lastModifiedDate":"2024-01-30"},{"lineNumber":522,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":523,"author":{"gitId":"ChuaZiLong"},"content":" public AddTodoCommand(String description) {","lastModifiedDate":"2024-01-30"},{"lineNumber":524,"author":{"gitId":"ChuaZiLong"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-30"},{"lineNumber":525,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":526,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":527,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":528,"author":{"gitId":"ChuaZiLong"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2024-01-30"},{"lineNumber":529,"author":{"gitId":"ChuaZiLong"},"content":" Todo newTodo \u003d new Todo(description);","lastModifiedDate":"2024-01-30"},{"lineNumber":530,"author":{"gitId":"ChuaZiLong"},"content":" tasks.addTask(newTodo);","lastModifiedDate":"2024-01-30"},{"lineNumber":531,"author":{"gitId":"ChuaZiLong"},"content":" ui.showTaskAdded(newTodo, tasks.getSize());","lastModifiedDate":"2024-01-30"},{"lineNumber":532,"author":{"gitId":"ChuaZiLong"},"content":" storage.save(tasks);","lastModifiedDate":"2024-01-30"},{"lineNumber":533,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":534,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":535,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":536,"author":{"gitId":"ChuaZiLong"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-30"},{"lineNumber":537,"author":{"gitId":"ChuaZiLong"},"content":" return false;","lastModifiedDate":"2024-01-30"},{"lineNumber":538,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":539,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":540,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":541,"author":{"gitId":"ChuaZiLong"},"content":"class AddDeadlineCommand extends Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":542,"author":{"gitId":"ChuaZiLong"},"content":" private String description;","lastModifiedDate":"2024-01-30"},{"lineNumber":543,"author":{"gitId":"ChuaZiLong"},"content":" private LocalDateTime by;","lastModifiedDate":"2024-01-30"},{"lineNumber":544,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":545,"author":{"gitId":"ChuaZiLong"},"content":" public AddDeadlineCommand(String description, LocalDateTime by) {","lastModifiedDate":"2024-01-30"},{"lineNumber":546,"author":{"gitId":"ChuaZiLong"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-30"},{"lineNumber":547,"author":{"gitId":"ChuaZiLong"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-30"},{"lineNumber":548,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":549,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":550,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":551,"author":{"gitId":"ChuaZiLong"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2024-01-30"},{"lineNumber":552,"author":{"gitId":"ChuaZiLong"},"content":" Deadline newDeadline \u003d new Deadline(description, by);","lastModifiedDate":"2024-01-30"},{"lineNumber":553,"author":{"gitId":"ChuaZiLong"},"content":" tasks.addTask(newDeadline);","lastModifiedDate":"2024-01-30"},{"lineNumber":554,"author":{"gitId":"ChuaZiLong"},"content":" ui.showTaskAdded(newDeadline, tasks.getSize());","lastModifiedDate":"2024-01-30"},{"lineNumber":555,"author":{"gitId":"ChuaZiLong"},"content":" storage.save(tasks);","lastModifiedDate":"2024-01-30"},{"lineNumber":556,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":557,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":558,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":559,"author":{"gitId":"ChuaZiLong"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-30"},{"lineNumber":560,"author":{"gitId":"ChuaZiLong"},"content":" return false;","lastModifiedDate":"2024-01-30"},{"lineNumber":561,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":562,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":563,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":564,"author":{"gitId":"ChuaZiLong"},"content":"class AddEventCommand extends Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":565,"author":{"gitId":"ChuaZiLong"},"content":" private String description;","lastModifiedDate":"2024-01-30"},{"lineNumber":566,"author":{"gitId":"ChuaZiLong"},"content":" private LocalDateTime start;","lastModifiedDate":"2024-01-30"},{"lineNumber":567,"author":{"gitId":"ChuaZiLong"},"content":" private LocalDateTime end;","lastModifiedDate":"2024-01-30"},{"lineNumber":568,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":569,"author":{"gitId":"ChuaZiLong"},"content":" public AddEventCommand(String description, LocalDateTime start, LocalDateTime end) {","lastModifiedDate":"2024-01-30"},{"lineNumber":570,"author":{"gitId":"ChuaZiLong"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-30"},{"lineNumber":571,"author":{"gitId":"ChuaZiLong"},"content":" this.start \u003d start;","lastModifiedDate":"2024-01-30"},{"lineNumber":572,"author":{"gitId":"ChuaZiLong"},"content":" this.end \u003d end;","lastModifiedDate":"2024-01-30"},{"lineNumber":573,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":574,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":575,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":576,"author":{"gitId":"ChuaZiLong"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2024-01-30"},{"lineNumber":577,"author":{"gitId":"ChuaZiLong"},"content":" Event newEvent \u003d new Event(description, start, end);","lastModifiedDate":"2024-01-30"},{"lineNumber":578,"author":{"gitId":"ChuaZiLong"},"content":" tasks.addTask(newEvent);","lastModifiedDate":"2024-01-30"},{"lineNumber":579,"author":{"gitId":"ChuaZiLong"},"content":" ui.showTaskAdded(newEvent, tasks.getSize());","lastModifiedDate":"2024-01-30"},{"lineNumber":580,"author":{"gitId":"ChuaZiLong"},"content":" storage.save(tasks);","lastModifiedDate":"2024-01-30"},{"lineNumber":581,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":582,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":583,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":584,"author":{"gitId":"ChuaZiLong"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-30"},{"lineNumber":585,"author":{"gitId":"ChuaZiLong"},"content":" return false;","lastModifiedDate":"2024-01-30"},{"lineNumber":586,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":587,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"ChuaZiLong":587}},{"path":"src/test/java/seedu/duke/ParserTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ChuaZiLong"},"content":"package seedu.duke;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"ChuaZiLong"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"ChuaZiLong"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"ChuaZiLong"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"ChuaZiLong"},"content":"public class ParserTest {","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"ChuaZiLong"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"ChuaZiLong"},"content":" public void parse_addTodoCommand() throws DukeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"ChuaZiLong"},"content":" Command command \u003d Parser.parse(\"todo read book\");","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"ChuaZiLong"},"content":" assertTrue(command instanceof AddTodoCommand, \"Parser should return AddTodoCommand for \u0027todo\u0027 input.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"ChuaZiLong"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"ChuaZiLong"},"content":" public void parse_invalidCommand() {","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"ChuaZiLong"},"content":" assertThrows(DukeException.class, () -\u003e {","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"ChuaZiLong"},"content":" Parser.parse(\"invalid command\");","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"ChuaZiLong"},"content":" });","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"ChuaZiLong"},"content":" // ... add more test methods if necessary ...","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"ChuaZiLong":23}},{"path":"src/test/java/seedu/duke/TaskListTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ChuaZiLong"},"content":"package seedu.duke;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"ChuaZiLong"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"ChuaZiLong"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"ChuaZiLong"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"ChuaZiLong"},"content":"public class TaskListTest {","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"ChuaZiLong"},"content":" private TaskList taskList;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"ChuaZiLong"},"content":" @BeforeEach","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"ChuaZiLong"},"content":" public void setUp() {","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"ChuaZiLong"},"content":" taskList \u003d new TaskList();","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"ChuaZiLong"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"ChuaZiLong"},"content":" public void addTask_and_getSize() {","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"ChuaZiLong"},"content":" Task task \u003d new Todo(\"Read book\");","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"ChuaZiLong"},"content":" taskList.addTask(task);","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"ChuaZiLong"},"content":" assertEquals(1, taskList.getSize(), \"TaskList size should increase after adding a task.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"ChuaZiLong"},"content":" assertEquals(task, taskList.getTask(0), \"Added task should match the retrieved task.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"ChuaZiLong"},"content":" // ... add more test methods if necessary ...","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"ChuaZiLong":26}}] diff --git a/ChuaZiLong_ip_master/commits.json b/ChuaZiLong_ip_master/commits.json index 1ccd569e..7feaf7e3 100644 --- a/ChuaZiLong_ip_master/commits.json +++ b/ChuaZiLong_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"ChuaZiLong":[{"date":"2024-01-24","commitResults":[{"hash":"fd3f99fb596f998f2487e68efc8b5d2f7f350e7e","isMergeCommit":false,"messageTitle":"Level-0","messageBody":"","tags":["Level-2","Level-1","Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":6}}},{"hash":"dd89622fc701f0bddd2dbf55f083b66a9e53174d","isMergeCommit":false,"messageTitle":"no message","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":44,"deletions":2}}},{"hash":"c6b08c34427581e95e0116644cfd45d526c4b526","isMergeCommit":false,"messageTitle":"no message","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":39,"deletions":1}}},{"hash":"16d59cf35e9dedb09a88d89de11a21af6ab8d21e","isMergeCommit":false,"messageTitle":"no message","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":145,"deletions":25}}},{"hash":"2a85b68c30ab1c6e2d8939e4762cf547227fb438","isMergeCommit":false,"messageTitle":"no message","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"java":{"insertions":6,"deletions":0}}},{"hash":"c55f6371ce0501bd85b9d72ccfc70cb9e4b4d0a6","isMergeCommit":false,"messageTitle":"no message","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":61,"deletions":26}}},{"hash":"5267dc4dfceea9e571bc031d406cfb1c65473a07","isMergeCommit":false,"messageTitle":"no message","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":53,"deletions":59}}},{"hash":"242e73e4992665462773773acde21be7dcfe67cb","isMergeCommit":false,"messageTitle":"no message","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}}]},{"date":"2024-01-28","commitResults":[{"hash":"56c3caadae335aa3c11ad6c5d87f2da6d6a3f61d","isMergeCommit":false,"messageTitle":"Save tasks in the hard disk automatically","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"java":{"insertions":85,"deletions":0}}},{"hash":"091ddb4beb72db255a471226f6ec69a17d1213d5","isMergeCommit":false,"messageTitle":"no message","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"96a0d97164262badbf6c7d87fc6583704be36551","isMergeCommit":false,"messageTitle":"no message","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":72,"deletions":22}}},{"hash":"b9bd9ec011f461dab8ffc492286d59b004c48a47","isMergeCommit":false,"messageTitle":"no message","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":335,"deletions":253}}}]},{"date":"2024-01-30","commitResults":[{"hash":"c0e5ae6a44d1b38923aa58d99cde5a2f67e734e4","isMergeCommit":false,"messageTitle":"no message","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":142,"deletions":17}}},{"hash":"a49a99daf39b3c3e6fa93a602a861de30885edc2","isMergeCommit":false,"messageTitle":"Package duke","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":587,"deletions":0}}},{"hash":"e0addcd37aa499f35c71c79591228933525e8c6b","isMergeCommit":false,"messageTitle":"Add Gradle","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"6f18bc54c059f660f76d2b4b6f9e29ba77020575","isMergeCommit":false,"messageTitle":"Add Gradle","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":588,"deletions":0}}}]}]},"authorFileTypeContributionMap":{"ChuaZiLong":{"java":1754,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":0,"txt":0}},"authorContributionVariance":{"ChuaZiLong":170469.19},"authorDisplayNameMap":{"ChuaZiLong":"CS2103T-W08-3 CHUA..LONG"}} +{"authorDailyContributionsMap":{"ChuaZiLong":[{"date":"2024-01-24","commitResults":[{"hash":"fd3f99fb596f998f2487e68efc8b5d2f7f350e7e","isMergeCommit":false,"messageTitle":"Level-0","messageBody":"","tags":["Level-2","Level-1","Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":6}}},{"hash":"dd89622fc701f0bddd2dbf55f083b66a9e53174d","isMergeCommit":false,"messageTitle":"no message","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":44,"deletions":2}}},{"hash":"c6b08c34427581e95e0116644cfd45d526c4b526","isMergeCommit":false,"messageTitle":"no message","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":39,"deletions":1}}},{"hash":"16d59cf35e9dedb09a88d89de11a21af6ab8d21e","isMergeCommit":false,"messageTitle":"no message","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":145,"deletions":25}}},{"hash":"2a85b68c30ab1c6e2d8939e4762cf547227fb438","isMergeCommit":false,"messageTitle":"no message","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"java":{"insertions":6,"deletions":0}}},{"hash":"c55f6371ce0501bd85b9d72ccfc70cb9e4b4d0a6","isMergeCommit":false,"messageTitle":"no message","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":61,"deletions":26}}},{"hash":"5267dc4dfceea9e571bc031d406cfb1c65473a07","isMergeCommit":false,"messageTitle":"no message","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":53,"deletions":59}}},{"hash":"242e73e4992665462773773acde21be7dcfe67cb","isMergeCommit":false,"messageTitle":"no message","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}}]},{"date":"2024-01-28","commitResults":[{"hash":"56c3caadae335aa3c11ad6c5d87f2da6d6a3f61d","isMergeCommit":false,"messageTitle":"Save tasks in the hard disk automatically","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"java":{"insertions":85,"deletions":0}}},{"hash":"091ddb4beb72db255a471226f6ec69a17d1213d5","isMergeCommit":false,"messageTitle":"no message","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"96a0d97164262badbf6c7d87fc6583704be36551","isMergeCommit":false,"messageTitle":"no message","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":72,"deletions":22}}},{"hash":"b9bd9ec011f461dab8ffc492286d59b004c48a47","isMergeCommit":false,"messageTitle":"no message","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":335,"deletions":253}}}]},{"date":"2024-01-30","commitResults":[{"hash":"c0e5ae6a44d1b38923aa58d99cde5a2f67e734e4","isMergeCommit":false,"messageTitle":"no message","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":142,"deletions":17}}},{"hash":"a49a99daf39b3c3e6fa93a602a861de30885edc2","isMergeCommit":false,"messageTitle":"Package duke","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":587,"deletions":0}}},{"hash":"e0addcd37aa499f35c71c79591228933525e8c6b","isMergeCommit":false,"messageTitle":"Add Gradle","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"6f18bc54c059f660f76d2b4b6f9e29ba77020575","isMergeCommit":false,"messageTitle":"Add Gradle","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":588,"deletions":0}}},{"hash":"be7405a76e7fe7b74326e78a34fe39970e76b9fb","isMergeCommit":false,"messageTitle":"no message","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":15,"deletions":0},"java":{"insertions":585,"deletions":0}}},{"hash":"524455c4cb5f9807130511830e4eebabec1dfff3","isMergeCommit":false,"messageTitle":"Add tests","messageBody":"","tags":["A-JUnit"],"fileTypesAndContributionMap":{"gradle":{"insertions":9,"deletions":0},"java":{"insertions":28,"deletions":0},"md":{"insertions":33,"deletions":0}}},{"hash":"cfef695cc95a7d9fe9336b7fc7e134cab4952039","isMergeCommit":false,"messageTitle":"no message","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{"java":{"insertions":22,"deletions":1}}},{"hash":"752a52cf3d364ecbba03c190886fa9b6e1b23360","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/ChuaZiLong/ip # Please enter a commit message to explain why this merge is necessary, # especially if it merges an updated upstream into a topic branch. # # Lines starting with \u0027#\u0027 will be ignored, and an empty message aborts # the commit.","messageBody":"","tags":["A-Jar"],"fileTypesAndContributionMap":{}},{"hash":"a9e7b1b8259d763d247065685970b77fad2f48aa","isMergeCommit":false,"messageTitle":"no message","messageBody":"","tags":["A-JavaDoc"],"fileTypesAndContributionMap":{"gradle":{"insertions":19,"deletions":0}}},{"hash":"2dd3a4a2f115c2578b51419b5f626e233c49b4f6","isMergeCommit":false,"messageTitle":"no message","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":169,"deletions":23}}},{"hash":"292e4aaaf0ce76aab20a287edb9430a5bee05383","isMergeCommit":false,"messageTitle":"Add JavaDocs","messageBody":"","tags":["Level-9"],"fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":2}}},{"hash":"e6bd45df835755371e7d650684f0a12d3070eea7","isMergeCommit":false,"messageTitle":"Add a way to find todos, deadlines and events with an inputted keyword","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":55,"deletions":2}}}]}]},"authorFileTypeContributionMap":{"ChuaZiLong":{"java":2587,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":43,"txt":0}},"authorContributionVariance":{"ChuaZiLong":421938.84},"authorDisplayNameMap":{"ChuaZiLong":"CS2103T-W08-3 CHUA..LONG"}} diff --git a/Derekljh_ip_master/authorship.json b/Derekljh_ip_master/authorship.json index 49800a48..96438cfa 100644 --- a/Derekljh_ip_master/authorship.json +++ b/Derekljh_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Derekljh"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"Derekljh"},"content":" protected String by;","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"Derekljh"},"content":" public Deadline(String description, String by) {","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"Derekljh"},"content":" super(description);","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"Derekljh"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"Derekljh"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"Derekljh"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"Derekljh"},"content":" return \"[D]\" + super.toString() + \" (by: \" + by + \")\";","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"Derekljh"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"Derekljh":14}},{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Derekljh"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Derekljh"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":4,"author":{"gitId":"Derekljh"},"content":" static String name \u003d \"Lunaris\";","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"Derekljh"},"content":" static String indentation \u003d \" \";","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"Derekljh"},"content":" static String indentedLine \u003d \" _________________________________________________________\";","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"Derekljh"},"content":" // Just for convenience of copy paste.","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"Derekljh"},"content":" // System.out.println(indentedLine);","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"Derekljh"},"content":" static ArrayList\u003cTask\u003e inputList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"Derekljh"},"content":" public enum Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"Derekljh"},"content":" BYE, LIST, UNMARK, MARK, DELETE, TODO, DEADLINE, EVENT, UNKNOWN","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"Derekljh"},"content":" // Print out greeting message","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentedLine);","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentation + \"Hey! I\u0027m \" + name + \"\\n\"","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"Derekljh"},"content":" + indentation + \"Is there anything I can do for you?\");","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentedLine);","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"Derekljh"},"content":" Scanner sc \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"Derekljh"},"content":" while (true) {","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"Derekljh"},"content":" Command category \u003d getCommand(sc.next());","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"Derekljh"},"content":" switch (category) {","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"Derekljh"},"content":" case BYE:","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentedLine);","lastModifiedDate":"2024-01-25"},{"lineNumber":31,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentation +","lastModifiedDate":"2024-01-25"},{"lineNumber":32,"author":{"gitId":"Derekljh"},"content":" \"Leaving so soon? Alright, have a great day ahead!\");","lastModifiedDate":"2024-01-25"},{"lineNumber":33,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentedLine);","lastModifiedDate":"2024-01-25"},{"lineNumber":34,"author":{"gitId":"Derekljh"},"content":" return;","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"Derekljh"},"content":" case LIST:","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentedLine);","lastModifiedDate":"2024-01-25"},{"lineNumber":37,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentation + \"Here are the tasks in your list:\");","lastModifiedDate":"2024-01-25"},{"lineNumber":38,"author":{"gitId":"Derekljh"},"content":" for (int i \u003d 0; i \u003c inputList.size(); i++) {","lastModifiedDate":"2024-01-25"},{"lineNumber":39,"author":{"gitId":"Derekljh"},"content":" Task currTask \u003d inputList.get(i);","lastModifiedDate":"2024-01-25"},{"lineNumber":40,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentation + (i + 1) + \".\" + currTask.toString());","lastModifiedDate":"2024-01-25"},{"lineNumber":41,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":42,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentedLine);","lastModifiedDate":"2024-01-25"},{"lineNumber":43,"author":{"gitId":"Derekljh"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"Derekljh"},"content":" default:","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"Derekljh"},"content":" addTask(inputList, category, sc);","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":47,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":48,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"Derekljh"},"content":" public static Command getCommand(String input) {","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"Derekljh"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"Derekljh"},"content":" return Command.valueOf(input.toUpperCase());","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"Derekljh"},"content":" } catch (IllegalArgumentException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"Derekljh"},"content":" return Command.UNKNOWN;","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"Derekljh"},"content":" public static void addTask(ArrayList\u003cTask\u003e inputList, Command category, Scanner sc) {","lastModifiedDate":"2024-01-30"},{"lineNumber":59,"author":{"gitId":"Derekljh"},"content":" switch (category) {","lastModifiedDate":"2024-01-30"},{"lineNumber":60,"author":{"gitId":"Derekljh"},"content":" case UNMARK:","lastModifiedDate":"2024-01-30"},{"lineNumber":61,"author":{"gitId":"Derekljh"},"content":" if (sc.hasNextInt()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":62,"author":{"gitId":"Derekljh"},"content":" int taskId \u003d sc.nextInt();","lastModifiedDate":"2024-01-30"},{"lineNumber":63,"author":{"gitId":"Derekljh"},"content":" inputList.get(taskId - 1).markNotDone();","lastModifiedDate":"2024-01-30"},{"lineNumber":64,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentedLine);","lastModifiedDate":"2024-01-25"},{"lineNumber":65,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentation + \"Ok, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2024-01-25"},{"lineNumber":66,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentation + inputList.get(taskId - 1).toString());","lastModifiedDate":"2024-01-30"},{"lineNumber":67,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentedLine);","lastModifiedDate":"2024-01-25"},{"lineNumber":68,"author":{"gitId":"Derekljh"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":69,"author":{"gitId":"Derekljh"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":70,"author":{"gitId":"Derekljh"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":71,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentedLine);","lastModifiedDate":"2024-01-25"},{"lineNumber":72,"author":{"gitId":"Derekljh"},"content":" throw new DukeException(\"Sorry, but which task do you want me to unmark?\");","lastModifiedDate":"2024-01-30"},{"lineNumber":73,"author":{"gitId":"Derekljh"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":74,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentation + e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":75,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentedLine);","lastModifiedDate":"2024-01-30"},{"lineNumber":76,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":77,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":78,"author":{"gitId":"Derekljh"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":79,"author":{"gitId":"Derekljh"},"content":" case MARK:","lastModifiedDate":"2024-01-30"},{"lineNumber":80,"author":{"gitId":"Derekljh"},"content":" if (sc.hasNextInt()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":81,"author":{"gitId":"Derekljh"},"content":" int taskId \u003d sc.nextInt();","lastModifiedDate":"2024-01-30"},{"lineNumber":82,"author":{"gitId":"Derekljh"},"content":" inputList.get(taskId - 1).markDone();","lastModifiedDate":"2024-01-30"},{"lineNumber":83,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentedLine);","lastModifiedDate":"2024-01-25"},{"lineNumber":84,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentation + \"Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2024-01-25"},{"lineNumber":85,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentation + inputList.get(taskId - 1).toString());","lastModifiedDate":"2024-01-30"},{"lineNumber":86,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentedLine);","lastModifiedDate":"2024-01-25"},{"lineNumber":87,"author":{"gitId":"Derekljh"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":88,"author":{"gitId":"Derekljh"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":89,"author":{"gitId":"Derekljh"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":90,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentedLine);","lastModifiedDate":"2024-01-25"},{"lineNumber":91,"author":{"gitId":"Derekljh"},"content":" throw new DukeException(\"Sorry, but which task do you want me to mark?\");","lastModifiedDate":"2024-01-30"},{"lineNumber":92,"author":{"gitId":"Derekljh"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":93,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentation + e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":94,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentedLine);","lastModifiedDate":"2024-01-30"},{"lineNumber":95,"author":{"gitId":"Derekljh"},"content":" sc.next();","lastModifiedDate":"2024-01-30"},{"lineNumber":96,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":97,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":98,"author":{"gitId":"Derekljh"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":99,"author":{"gitId":"Derekljh"},"content":" case DELETE:","lastModifiedDate":"2024-01-30"},{"lineNumber":100,"author":{"gitId":"Derekljh"},"content":" if (sc.hasNextInt()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":101,"author":{"gitId":"Derekljh"},"content":" int taskId \u003d sc.nextInt();","lastModifiedDate":"2024-01-30"},{"lineNumber":102,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentedLine);","lastModifiedDate":"2024-01-25"},{"lineNumber":103,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentation + \"Noted. I\u0027ve removed this task:\");","lastModifiedDate":"2024-01-25"},{"lineNumber":104,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentation + inputList.get(taskId - 1).toString());","lastModifiedDate":"2024-01-25"},{"lineNumber":105,"author":{"gitId":"Derekljh"},"content":" inputList.remove(taskId - 1);","lastModifiedDate":"2024-01-30"},{"lineNumber":106,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentation + \"Now you have \" + inputList.size() + \" tasks in the list.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":107,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentedLine);","lastModifiedDate":"2024-01-25"},{"lineNumber":108,"author":{"gitId":"Derekljh"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":109,"author":{"gitId":"Derekljh"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":110,"author":{"gitId":"Derekljh"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":111,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentedLine);","lastModifiedDate":"2024-01-30"},{"lineNumber":112,"author":{"gitId":"Derekljh"},"content":" throw new DukeException(\"Sorry, but which task do you want me to delete?\");","lastModifiedDate":"2024-01-30"},{"lineNumber":113,"author":{"gitId":"Derekljh"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":114,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentation + e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":115,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentedLine);","lastModifiedDate":"2024-01-30"},{"lineNumber":116,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":117,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":118,"author":{"gitId":"Derekljh"},"content":" case TODO:","lastModifiedDate":"2024-01-30"},{"lineNumber":119,"author":{"gitId":"Derekljh"},"content":" String toDoDescription \u003d sc.nextLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":120,"author":{"gitId":"Derekljh"},"content":" if (toDoDescription.isEmpty()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":121,"author":{"gitId":"Derekljh"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":122,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentedLine);","lastModifiedDate":"2024-01-25"},{"lineNumber":123,"author":{"gitId":"Derekljh"},"content":" throw new DukeException(\"Sorry, please give me a description of the todo as well! \u003e.\u003c\\n\" +","lastModifiedDate":"2024-01-25"},{"lineNumber":124,"author":{"gitId":"Derekljh"},"content":" indentation + \"Format should be todo (description)!\");","lastModifiedDate":"2024-01-25"},{"lineNumber":125,"author":{"gitId":"Derekljh"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":126,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentation + e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":127,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentedLine);","lastModifiedDate":"2024-01-25"},{"lineNumber":128,"author":{"gitId":"Derekljh"},"content":" return;","lastModifiedDate":"2024-01-30"},{"lineNumber":129,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":130,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":131,"author":{"gitId":"Derekljh"},"content":" ToDo toDo \u003d new ToDo(toDoDescription);","lastModifiedDate":"2024-01-30"},{"lineNumber":132,"author":{"gitId":"Derekljh"},"content":" inputList.add(toDo);","lastModifiedDate":"2024-01-25"},{"lineNumber":133,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentation + toDo);","lastModifiedDate":"2024-01-25"},{"lineNumber":134,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentation + \"Now you have \" + inputList.size() + \" tasks in the list.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":135,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentedLine);","lastModifiedDate":"2024-01-25"},{"lineNumber":136,"author":{"gitId":"Derekljh"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":137,"author":{"gitId":"Derekljh"},"content":" case DEADLINE:","lastModifiedDate":"2024-01-30"},{"lineNumber":138,"author":{"gitId":"Derekljh"},"content":" String deadlineDescription \u003d sc.nextLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":139,"author":{"gitId":"Derekljh"},"content":" if (!deadlineDescription.contains(\" /by \")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":140,"author":{"gitId":"Derekljh"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":141,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentedLine);","lastModifiedDate":"2024-01-25"},{"lineNumber":142,"author":{"gitId":"Derekljh"},"content":" throw new DukeException(\"Sorry, please give me a description of the deadline as well! \u003e.\u003c\\n\" +","lastModifiedDate":"2024-01-25"},{"lineNumber":143,"author":{"gitId":"Derekljh"},"content":" indentation + \"Format should be deadline (description) /by (date)!\");","lastModifiedDate":"2024-01-25"},{"lineNumber":144,"author":{"gitId":"Derekljh"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":145,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentation + e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":146,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentedLine);","lastModifiedDate":"2024-01-25"},{"lineNumber":147,"author":{"gitId":"Derekljh"},"content":" return;","lastModifiedDate":"2024-01-30"},{"lineNumber":148,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":149,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":150,"author":{"gitId":"Derekljh"},"content":" String[] deadlineArguments \u003d deadlineDescription.split(\" /by \");","lastModifiedDate":"2024-01-30"},{"lineNumber":151,"author":{"gitId":"Derekljh"},"content":" Deadline deadline \u003d new Deadline(deadlineArguments[0], deadlineArguments[1]);","lastModifiedDate":"2024-01-30"},{"lineNumber":152,"author":{"gitId":"Derekljh"},"content":" inputList.add(deadline);","lastModifiedDate":"2024-01-25"},{"lineNumber":153,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentation + deadline);","lastModifiedDate":"2024-01-25"},{"lineNumber":154,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentation + \"Now you have \" + inputList.size() + \" tasks in the list.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":155,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentedLine);","lastModifiedDate":"2024-01-25"},{"lineNumber":156,"author":{"gitId":"Derekljh"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":157,"author":{"gitId":"Derekljh"},"content":" case EVENT:","lastModifiedDate":"2024-01-30"},{"lineNumber":158,"author":{"gitId":"Derekljh"},"content":" String eventDescription \u003d sc.nextLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":159,"author":{"gitId":"Derekljh"},"content":" if (!eventDescription.contains(\" /from \") || !eventDescription.contains(\" /to \")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":160,"author":{"gitId":"Derekljh"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":161,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentedLine);","lastModifiedDate":"2024-01-25"},{"lineNumber":162,"author":{"gitId":"Derekljh"},"content":" throw new DukeException(\"Sorry, please give me a description of the event as well! \u003e.\u003c\\n\" +","lastModifiedDate":"2024-01-25"},{"lineNumber":163,"author":{"gitId":"Derekljh"},"content":" indentation + \"Format should be event (description) /from (time) /to (time)!\");","lastModifiedDate":"2024-01-25"},{"lineNumber":164,"author":{"gitId":"Derekljh"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":165,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentation + e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":166,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentedLine);","lastModifiedDate":"2024-01-25"},{"lineNumber":167,"author":{"gitId":"Derekljh"},"content":" return;","lastModifiedDate":"2024-01-30"},{"lineNumber":168,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":169,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":170,"author":{"gitId":"Derekljh"},"content":" String[] eventArguments \u003d eventDescription.split(\" /from \");","lastModifiedDate":"2024-01-30"},{"lineNumber":171,"author":{"gitId":"Derekljh"},"content":" String[] eventDuration \u003d eventArguments[1].split(\" /to \");","lastModifiedDate":"2024-01-30"},{"lineNumber":172,"author":{"gitId":"Derekljh"},"content":" Event event \u003d new Event(eventArguments[0], eventDuration[0], eventDuration[1]);","lastModifiedDate":"2024-01-30"},{"lineNumber":173,"author":{"gitId":"Derekljh"},"content":" inputList.add(event);","lastModifiedDate":"2024-01-25"},{"lineNumber":174,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentation + event);","lastModifiedDate":"2024-01-25"},{"lineNumber":175,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentation + \"Now you have \" + inputList.size() + \" tasks in the list.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":176,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentedLine);","lastModifiedDate":"2024-01-25"},{"lineNumber":177,"author":{"gitId":"Derekljh"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":178,"author":{"gitId":"Derekljh"},"content":" default:","lastModifiedDate":"2024-01-30"},{"lineNumber":179,"author":{"gitId":"Derekljh"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":180,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentedLine);","lastModifiedDate":"2024-01-25"},{"lineNumber":181,"author":{"gitId":"Derekljh"},"content":" throw new DukeException(\"Sorry, I cannot understand what this is!\");","lastModifiedDate":"2024-01-25"},{"lineNumber":182,"author":{"gitId":"Derekljh"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":183,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentation + e.getMessage());","lastModifiedDate":"2024-01-25"},{"lineNumber":184,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentedLine);","lastModifiedDate":"2024-01-25"},{"lineNumber":185,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":186,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":187,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":188,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"Derekljh":184,"-":4}},{"path":"src/main/java/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Derekljh"},"content":"public class DukeException extends Exception {","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"Derekljh"},"content":" public DukeException(String message) {","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"Derekljh"},"content":" super(message);","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"Derekljh"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"Derekljh":5}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Derekljh"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"Derekljh"},"content":" protected String start;","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"Derekljh"},"content":" protected String end;","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"Derekljh"},"content":" public Event(String description, String start, String end) {","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"Derekljh"},"content":" super(description);","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"Derekljh"},"content":" this.start \u003d start;","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"Derekljh"},"content":" this.end \u003d end;","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"Derekljh"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"Derekljh"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"Derekljh"},"content":" return \"[E]\" + super.toString() + \" (from: \" + start + \" to: \" + end + \")\";","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"Derekljh"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"Derekljh":13}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Derekljh"},"content":"public class Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"Derekljh"},"content":" protected String description;","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"Derekljh"},"content":" protected boolean isDone;","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"Derekljh"},"content":" public Task(String description) {","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"Derekljh"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"Derekljh"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"Derekljh"},"content":" // Method to mark whether task is done or not.","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"Derekljh"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"Derekljh"},"content":" return (isDone ? \"X\" : \" \");","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"Derekljh"},"content":" // Mark done.","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"Derekljh"},"content":" public void markDone() {","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"Derekljh"},"content":" isDone \u003d true;","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"Derekljh"},"content":" // Unmark.","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"Derekljh"},"content":" public void markNotDone() {","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"Derekljh"},"content":" isDone \u003d false;","lastModifiedDate":"2024-01-24"},{"lineNumber":23,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":25,"author":{"gitId":"Derekljh"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"Derekljh"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":27,"author":{"gitId":"Derekljh"},"content":" return \"[\" + getStatusIcon() + \"] \" + description;","lastModifiedDate":"2024-01-24"},{"lineNumber":28,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":29,"author":{"gitId":"Derekljh"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"Derekljh":29}},{"path":"src/main/java/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Derekljh"},"content":"public class ToDo extends Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"Derekljh"},"content":" public ToDo(String description) {","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"Derekljh"},"content":" super(description);","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"Derekljh"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"Derekljh"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"Derekljh"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"Derekljh"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"Derekljh":9}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"Derekljh"},"content":"todo borrow book","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"Derekljh"},"content":"list","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"Derekljh"},"content":"deadline return book /by Sunday","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"Derekljh"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"Derekljh"},"content":"mark 1","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"Derekljh"},"content":"list","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"Derekljh"},"content":"mark 2","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"Derekljh"},"content":"unmark 1","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"Derekljh"},"content":"list","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"Derekljh"},"content":"bye","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"Derekljh":10}}] +[{"path":"data/taskList.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"Derekljh"},"content":"T | 1 | return book","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Derekljh"},"content":"E | 1 | meeting | 2pm - 3pm","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"Derekljh"},"content":"D | 0 | finish homework | monday","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"Derekljh"},"content":"T | 1 | feed dog","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"Derekljh"},"content":"E | 0 | race | 5pm - 6pm","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"Derekljh":5}},{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Derekljh"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"Derekljh"},"content":" protected String by;","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"Derekljh"},"content":" public Deadline(String description, String by) {","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"Derekljh"},"content":" super(description);","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"Derekljh"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"Derekljh"},"content":" public Deadline(String status, String description, String by) {","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"Derekljh"},"content":" super(status.equals(\"1\"), description);","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"Derekljh"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"Derekljh"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"Derekljh"},"content":" public String toFile() {","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"Derekljh"},"content":" return \"D | \" + (isDone ? \"1\" : \"0\") + \" | \" + description + \" | \" + by;","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"Derekljh"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"Derekljh"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"Derekljh"},"content":" return \"[D]\" + super.toString() + \" (by: \" + by + \")\";","lastModifiedDate":"2024-01-24"},{"lineNumber":23,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"Derekljh"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"Derekljh":24}},{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Derekljh"},"content":"import java.io.File;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Derekljh"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"Derekljh"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"Derekljh"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"Derekljh"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"Derekljh"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":8,"author":{"gitId":"Derekljh"},"content":" static String name \u003d \"Lunaris\";","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"Derekljh"},"content":" static String indentation \u003d \" \";","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"Derekljh"},"content":" static String indentedLine \u003d \" _________________________________________________________\";","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"Derekljh"},"content":" // Just for convenience of copy paste.","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"Derekljh"},"content":" // System.out.println(indentedLine);","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"Derekljh"},"content":" private static final String FILE_DIR \u003d \"./data\";","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"Derekljh"},"content":" private static final String FILE_PATH \u003d \"./data/taskList.txt\";","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"Derekljh"},"content":" public enum Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"Derekljh"},"content":" BYE, LIST, UNMARK, MARK, DELETE, TODO, DEADLINE, EVENT, UNKNOWN;","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"Derekljh"},"content":" public static Command getCategory(String input) {","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"Derekljh"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"Derekljh"},"content":" return Command.valueOf(input.toUpperCase());","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"Derekljh"},"content":" } catch (IllegalArgumentException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"Derekljh"},"content":" return UNKNOWN;","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"Derekljh"},"content":" private static ArrayList\u003cTask\u003e list;","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"Derekljh"},"content":" public static void main(String[] args) throws DukeException, IOException {","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"Derekljh"},"content":" list \u003d loadTasksFile();","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"Derekljh"},"content":" // Print out greeting message","lastModifiedDate":"2024-01-25"},{"lineNumber":37,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentedLine);","lastModifiedDate":"2024-01-25"},{"lineNumber":38,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentation + \"Hey! I\u0027m \" + name + \"\\n\"","lastModifiedDate":"2024-01-25"},{"lineNumber":39,"author":{"gitId":"Derekljh"},"content":" + indentation + \"Is there anything I can do for you?\");","lastModifiedDate":"2024-01-25"},{"lineNumber":40,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentedLine);","lastModifiedDate":"2024-01-25"},{"lineNumber":41,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":42,"author":{"gitId":"Derekljh"},"content":" Scanner sc \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":44,"author":{"gitId":"Derekljh"},"content":" while (true) {","lastModifiedDate":"2024-01-25"},{"lineNumber":45,"author":{"gitId":"Derekljh"},"content":" Command category \u003d Command.getCategory(sc.next());","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"Derekljh"},"content":" switch (category) {","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"Derekljh"},"content":" case BYE:","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentedLine);","lastModifiedDate":"2024-01-25"},{"lineNumber":49,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentation +","lastModifiedDate":"2024-01-25"},{"lineNumber":50,"author":{"gitId":"Derekljh"},"content":" \"Leaving so soon? Alright, have a great day ahead!\");","lastModifiedDate":"2024-01-25"},{"lineNumber":51,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentedLine);","lastModifiedDate":"2024-01-25"},{"lineNumber":52,"author":{"gitId":"Derekljh"},"content":" return;","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"Derekljh"},"content":" case LIST:","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentedLine);","lastModifiedDate":"2024-01-25"},{"lineNumber":55,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentation + \"Here are the tasks in your list:\");","lastModifiedDate":"2024-01-25"},{"lineNumber":56,"author":{"gitId":"Derekljh"},"content":" for (int i \u003d 0; i \u003c list.size(); i++) {","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"Derekljh"},"content":" Task currTask \u003d list.get(i);","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentation + (i + 1) + \".\" + currTask.toString());","lastModifiedDate":"2024-01-25"},{"lineNumber":59,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":60,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentedLine);","lastModifiedDate":"2024-01-25"},{"lineNumber":61,"author":{"gitId":"Derekljh"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":62,"author":{"gitId":"Derekljh"},"content":" default:","lastModifiedDate":"2024-01-30"},{"lineNumber":63,"author":{"gitId":"Derekljh"},"content":" addTask(list, category, sc);","lastModifiedDate":"2024-01-30"},{"lineNumber":64,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":65,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":66,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":67,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":68,"author":{"gitId":"Derekljh"},"content":" private static ArrayList\u003cTask\u003e loadTasksFile() throws DukeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":69,"author":{"gitId":"Derekljh"},"content":" File directory \u003d new File(FILE_DIR);","lastModifiedDate":"2024-01-30"},{"lineNumber":70,"author":{"gitId":"Derekljh"},"content":" File file \u003d new File(FILE_PATH);","lastModifiedDate":"2024-01-30"},{"lineNumber":71,"author":{"gitId":"Derekljh"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":72,"author":{"gitId":"Derekljh"},"content":" if (!directory.isDirectory()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":73,"author":{"gitId":"Derekljh"},"content":" directory.mkdirs();","lastModifiedDate":"2024-01-30"},{"lineNumber":74,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":75,"author":{"gitId":"Derekljh"},"content":" if (!file.exists()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":76,"author":{"gitId":"Derekljh"},"content":" file.createNewFile();","lastModifiedDate":"2024-01-30"},{"lineNumber":77,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":78,"author":{"gitId":"Derekljh"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":79,"author":{"gitId":"Derekljh"},"content":" throw new RuntimeException(e);","lastModifiedDate":"2024-01-30"},{"lineNumber":80,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":81,"author":{"gitId":"Derekljh"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":82,"author":{"gitId":"Derekljh"},"content":" ArrayList\u003cTask\u003e inputList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-30"},{"lineNumber":83,"author":{"gitId":"Derekljh"},"content":" Scanner fileSc \u003d new Scanner(file);","lastModifiedDate":"2024-01-30"},{"lineNumber":84,"author":{"gitId":"Derekljh"},"content":" while (fileSc.hasNext()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":85,"author":{"gitId":"Derekljh"},"content":" String task \u003d fileSc.nextLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":86,"author":{"gitId":"Derekljh"},"content":" String[] argument \u003d task.split(\" \\\\| \");","lastModifiedDate":"2024-01-30"},{"lineNumber":87,"author":{"gitId":"Derekljh"},"content":" String category \u003d argument[0];","lastModifiedDate":"2024-01-30"},{"lineNumber":88,"author":{"gitId":"Derekljh"},"content":" String status \u003d argument[1];","lastModifiedDate":"2024-01-30"},{"lineNumber":89,"author":{"gitId":"Derekljh"},"content":" String description \u003d argument[2];","lastModifiedDate":"2024-01-30"},{"lineNumber":90,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":91,"author":{"gitId":"Derekljh"},"content":" switch (category) {","lastModifiedDate":"2024-01-30"},{"lineNumber":92,"author":{"gitId":"Derekljh"},"content":" case \"T\":","lastModifiedDate":"2024-01-30"},{"lineNumber":93,"author":{"gitId":"Derekljh"},"content":" inputList.add(new ToDo(status, description));","lastModifiedDate":"2024-01-30"},{"lineNumber":94,"author":{"gitId":"Derekljh"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":95,"author":{"gitId":"Derekljh"},"content":" case \"D\":","lastModifiedDate":"2024-01-30"},{"lineNumber":96,"author":{"gitId":"Derekljh"},"content":" String by \u003d argument[3];","lastModifiedDate":"2024-01-30"},{"lineNumber":97,"author":{"gitId":"Derekljh"},"content":" inputList.add(new Deadline(status, description, by));","lastModifiedDate":"2024-01-30"},{"lineNumber":98,"author":{"gitId":"Derekljh"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":99,"author":{"gitId":"Derekljh"},"content":" case \"E\":","lastModifiedDate":"2024-01-30"},{"lineNumber":100,"author":{"gitId":"Derekljh"},"content":" String[] duration \u003d argument[3].split(\" - \");","lastModifiedDate":"2024-01-30"},{"lineNumber":101,"author":{"gitId":"Derekljh"},"content":" String start \u003d duration[0];","lastModifiedDate":"2024-01-30"},{"lineNumber":102,"author":{"gitId":"Derekljh"},"content":" String end \u003d duration[1];","lastModifiedDate":"2024-01-30"},{"lineNumber":103,"author":{"gitId":"Derekljh"},"content":" inputList.add(new Event(status, description, start, end));","lastModifiedDate":"2024-01-30"},{"lineNumber":104,"author":{"gitId":"Derekljh"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":105,"author":{"gitId":"Derekljh"},"content":" default:","lastModifiedDate":"2024-01-30"},{"lineNumber":106,"author":{"gitId":"Derekljh"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":107,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":108,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":109,"author":{"gitId":"Derekljh"},"content":" fileSc.close();","lastModifiedDate":"2024-01-30"},{"lineNumber":110,"author":{"gitId":"Derekljh"},"content":" return inputList;","lastModifiedDate":"2024-01-30"},{"lineNumber":111,"author":{"gitId":"Derekljh"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":112,"author":{"gitId":"Derekljh"},"content":" throw new DukeException(indentation + e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":113,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":114,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":115,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":116,"author":{"gitId":"Derekljh"},"content":" private static void saveTasksFile() throws IOException {","lastModifiedDate":"2024-01-30"},{"lineNumber":117,"author":{"gitId":"Derekljh"},"content":" FileWriter fw \u003d new FileWriter(FILE_PATH);","lastModifiedDate":"2024-01-30"},{"lineNumber":118,"author":{"gitId":"Derekljh"},"content":" StringBuilder msg \u003d new StringBuilder();","lastModifiedDate":"2024-01-30"},{"lineNumber":119,"author":{"gitId":"Derekljh"},"content":" for (Task task : list) {","lastModifiedDate":"2024-01-30"},{"lineNumber":120,"author":{"gitId":"Derekljh"},"content":" msg.append(task.toFile()).append(\"\\n\");","lastModifiedDate":"2024-01-30"},{"lineNumber":121,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":122,"author":{"gitId":"Derekljh"},"content":" fw.write(msg.toString());","lastModifiedDate":"2024-01-30"},{"lineNumber":123,"author":{"gitId":"Derekljh"},"content":" fw.close();","lastModifiedDate":"2024-01-30"},{"lineNumber":124,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":125,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":126,"author":{"gitId":"Derekljh"},"content":" public static void addTask(ArrayList\u003cTask\u003e taskList, Command category, Scanner sc) throws IOException {","lastModifiedDate":"2024-01-30"},{"lineNumber":127,"author":{"gitId":"Derekljh"},"content":" switch (category) {","lastModifiedDate":"2024-01-30"},{"lineNumber":128,"author":{"gitId":"Derekljh"},"content":" case UNMARK:","lastModifiedDate":"2024-01-30"},{"lineNumber":129,"author":{"gitId":"Derekljh"},"content":" int unmarkId \u003d sc.nextInt() - 1;","lastModifiedDate":"2024-01-30"},{"lineNumber":130,"author":{"gitId":"Derekljh"},"content":" if (unmarkId \u003c 0 || unmarkId \u003e\u003d list.size()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":131,"author":{"gitId":"Derekljh"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":132,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentedLine);","lastModifiedDate":"2024-01-25"},{"lineNumber":133,"author":{"gitId":"Derekljh"},"content":" throw new DukeException(\"Sorry, please select a valid task for me to unmark!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":134,"author":{"gitId":"Derekljh"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":135,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentation + e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":136,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentedLine);","lastModifiedDate":"2024-01-30"},{"lineNumber":137,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":138,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":139,"author":{"gitId":"Derekljh"},"content":" taskList.get(unmarkId).markNotDone();","lastModifiedDate":"2024-01-30"},{"lineNumber":140,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentedLine);","lastModifiedDate":"2024-01-25"},{"lineNumber":141,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentation + \"Ok, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2024-01-30"},{"lineNumber":142,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentation + taskList.get(unmarkId).toString());","lastModifiedDate":"2024-01-30"},{"lineNumber":143,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentedLine);","lastModifiedDate":"2024-01-25"},{"lineNumber":144,"author":{"gitId":"Derekljh"},"content":" saveTasksFile();","lastModifiedDate":"2024-01-30"},{"lineNumber":145,"author":{"gitId":"Derekljh"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":146,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":147,"author":{"gitId":"Derekljh"},"content":" case MARK:","lastModifiedDate":"2024-01-30"},{"lineNumber":148,"author":{"gitId":"Derekljh"},"content":" int markId \u003d sc.nextInt() - 1;","lastModifiedDate":"2024-01-30"},{"lineNumber":149,"author":{"gitId":"Derekljh"},"content":" if (markId \u003c 0 || markId \u003e\u003d list.size()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":150,"author":{"gitId":"Derekljh"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":151,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentedLine);","lastModifiedDate":"2024-01-25"},{"lineNumber":152,"author":{"gitId":"Derekljh"},"content":" throw new DukeException(\"Sorry, please select a valid task for me to mark!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":153,"author":{"gitId":"Derekljh"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":154,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentation + e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":155,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentedLine);","lastModifiedDate":"2024-01-30"},{"lineNumber":156,"author":{"gitId":"Derekljh"},"content":" sc.next();","lastModifiedDate":"2024-01-30"},{"lineNumber":157,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":158,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":159,"author":{"gitId":"Derekljh"},"content":" taskList.get(markId).markDone();","lastModifiedDate":"2024-01-30"},{"lineNumber":160,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentedLine);","lastModifiedDate":"2024-01-25"},{"lineNumber":161,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentation + \"Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2024-01-30"},{"lineNumber":162,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentation + taskList.get(markId).toString());","lastModifiedDate":"2024-01-30"},{"lineNumber":163,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentedLine);","lastModifiedDate":"2024-01-25"},{"lineNumber":164,"author":{"gitId":"Derekljh"},"content":" saveTasksFile();","lastModifiedDate":"2024-01-30"},{"lineNumber":165,"author":{"gitId":"Derekljh"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":166,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":167,"author":{"gitId":"Derekljh"},"content":" case DELETE:","lastModifiedDate":"2024-01-30"},{"lineNumber":168,"author":{"gitId":"Derekljh"},"content":" int deleteId \u003d sc.nextInt() - 1;","lastModifiedDate":"2024-01-30"},{"lineNumber":169,"author":{"gitId":"Derekljh"},"content":" if (deleteId \u003c 0 || deleteId \u003e\u003d list.size()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":170,"author":{"gitId":"Derekljh"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":171,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentedLine);","lastModifiedDate":"2024-01-30"},{"lineNumber":172,"author":{"gitId":"Derekljh"},"content":" throw new DukeException(\"Sorry, please select a valid task for me to delete!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":173,"author":{"gitId":"Derekljh"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":174,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentation + e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":175,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentedLine);","lastModifiedDate":"2024-01-30"},{"lineNumber":176,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":177,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":178,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentedLine);","lastModifiedDate":"2024-01-30"},{"lineNumber":179,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentation + \"Noted. I\u0027ve removed this task:\");","lastModifiedDate":"2024-01-30"},{"lineNumber":180,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentation + taskList.get(deleteId).toString());","lastModifiedDate":"2024-01-30"},{"lineNumber":181,"author":{"gitId":"Derekljh"},"content":" taskList.remove(deleteId);","lastModifiedDate":"2024-01-30"},{"lineNumber":182,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentation + \"Now you have \" + taskList.size() + \" tasks in the list.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":183,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentedLine);","lastModifiedDate":"2024-01-30"},{"lineNumber":184,"author":{"gitId":"Derekljh"},"content":" saveTasksFile();","lastModifiedDate":"2024-01-30"},{"lineNumber":185,"author":{"gitId":"Derekljh"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":186,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":187,"author":{"gitId":"Derekljh"},"content":" case TODO:","lastModifiedDate":"2024-01-30"},{"lineNumber":188,"author":{"gitId":"Derekljh"},"content":" String toDoDescription \u003d sc.nextLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":189,"author":{"gitId":"Derekljh"},"content":" if (toDoDescription.isEmpty()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":190,"author":{"gitId":"Derekljh"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":191,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentedLine);","lastModifiedDate":"2024-01-25"},{"lineNumber":192,"author":{"gitId":"Derekljh"},"content":" throw new DukeException(\"Sorry, please give me a description of the todo as well! \u003e.\u003c\\n\" +","lastModifiedDate":"2024-01-25"},{"lineNumber":193,"author":{"gitId":"Derekljh"},"content":" indentation + \"Format should be todo (description)!\");","lastModifiedDate":"2024-01-25"},{"lineNumber":194,"author":{"gitId":"Derekljh"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":195,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentation + e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":196,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentedLine);","lastModifiedDate":"2024-01-25"},{"lineNumber":197,"author":{"gitId":"Derekljh"},"content":" return;","lastModifiedDate":"2024-01-30"},{"lineNumber":198,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":199,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":200,"author":{"gitId":"Derekljh"},"content":" ToDo toDo \u003d new ToDo(toDoDescription);","lastModifiedDate":"2024-01-30"},{"lineNumber":201,"author":{"gitId":"Derekljh"},"content":" taskList.add(toDo);","lastModifiedDate":"2024-01-30"},{"lineNumber":202,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentation + toDo);","lastModifiedDate":"2024-01-25"},{"lineNumber":203,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentation + \"Now you have \" + taskList.size() + \" tasks in the list.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":204,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentedLine);","lastModifiedDate":"2024-01-25"},{"lineNumber":205,"author":{"gitId":"Derekljh"},"content":" saveTasksFile();","lastModifiedDate":"2024-01-30"},{"lineNumber":206,"author":{"gitId":"Derekljh"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":207,"author":{"gitId":"Derekljh"},"content":" case DEADLINE:","lastModifiedDate":"2024-01-30"},{"lineNumber":208,"author":{"gitId":"Derekljh"},"content":" String deadlineDescription \u003d sc.nextLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":209,"author":{"gitId":"Derekljh"},"content":" if (!deadlineDescription.contains(\" /by \")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":210,"author":{"gitId":"Derekljh"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":211,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentedLine);","lastModifiedDate":"2024-01-25"},{"lineNumber":212,"author":{"gitId":"Derekljh"},"content":" throw new DukeException(\"Sorry, please give me a description of the deadline as well! \u003e.\u003c\\n\" +","lastModifiedDate":"2024-01-25"},{"lineNumber":213,"author":{"gitId":"Derekljh"},"content":" indentation + \"Format should be deadline (description) /by (date)!\");","lastModifiedDate":"2024-01-25"},{"lineNumber":214,"author":{"gitId":"Derekljh"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":215,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentation + e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":216,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentedLine);","lastModifiedDate":"2024-01-25"},{"lineNumber":217,"author":{"gitId":"Derekljh"},"content":" return;","lastModifiedDate":"2024-01-30"},{"lineNumber":218,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":219,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":220,"author":{"gitId":"Derekljh"},"content":" String[] deadlineArguments \u003d deadlineDescription.split(\" /by \");","lastModifiedDate":"2024-01-30"},{"lineNumber":221,"author":{"gitId":"Derekljh"},"content":" Deadline deadline \u003d new Deadline(deadlineArguments[0], deadlineArguments[1]);","lastModifiedDate":"2024-01-30"},{"lineNumber":222,"author":{"gitId":"Derekljh"},"content":" taskList.add(deadline);","lastModifiedDate":"2024-01-30"},{"lineNumber":223,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentation + deadline);","lastModifiedDate":"2024-01-25"},{"lineNumber":224,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentation + \"Now you have \" + taskList.size() + \" tasks in the list.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":225,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentedLine);","lastModifiedDate":"2024-01-25"},{"lineNumber":226,"author":{"gitId":"Derekljh"},"content":" saveTasksFile();","lastModifiedDate":"2024-01-30"},{"lineNumber":227,"author":{"gitId":"Derekljh"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":228,"author":{"gitId":"Derekljh"},"content":" case EVENT:","lastModifiedDate":"2024-01-30"},{"lineNumber":229,"author":{"gitId":"Derekljh"},"content":" String eventDescription \u003d sc.nextLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":230,"author":{"gitId":"Derekljh"},"content":" if (!eventDescription.contains(\" /from \") || !eventDescription.contains(\" /to \")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":231,"author":{"gitId":"Derekljh"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":232,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentedLine);","lastModifiedDate":"2024-01-25"},{"lineNumber":233,"author":{"gitId":"Derekljh"},"content":" throw new DukeException(\"Sorry, please give me a description of the event as well! \u003e.\u003c\\n\" +","lastModifiedDate":"2024-01-25"},{"lineNumber":234,"author":{"gitId":"Derekljh"},"content":" indentation + \"Format should be event (description) /from (time) /to (time)!\");","lastModifiedDate":"2024-01-25"},{"lineNumber":235,"author":{"gitId":"Derekljh"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":236,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentation + e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":237,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentedLine);","lastModifiedDate":"2024-01-25"},{"lineNumber":238,"author":{"gitId":"Derekljh"},"content":" return;","lastModifiedDate":"2024-01-30"},{"lineNumber":239,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":240,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":241,"author":{"gitId":"Derekljh"},"content":" String[] eventArguments \u003d eventDescription.split(\" /from \");","lastModifiedDate":"2024-01-30"},{"lineNumber":242,"author":{"gitId":"Derekljh"},"content":" String[] eventDuration \u003d eventArguments[1].split(\" /to \");","lastModifiedDate":"2024-01-30"},{"lineNumber":243,"author":{"gitId":"Derekljh"},"content":" Event event \u003d new Event(eventArguments[0], eventDuration[0], eventDuration[1]);","lastModifiedDate":"2024-01-30"},{"lineNumber":244,"author":{"gitId":"Derekljh"},"content":" taskList.add(event);","lastModifiedDate":"2024-01-30"},{"lineNumber":245,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentation + event);","lastModifiedDate":"2024-01-25"},{"lineNumber":246,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentation + \"Now you have \" + taskList.size() + \" tasks in the list.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":247,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentedLine);","lastModifiedDate":"2024-01-25"},{"lineNumber":248,"author":{"gitId":"Derekljh"},"content":" saveTasksFile();","lastModifiedDate":"2024-01-30"},{"lineNumber":249,"author":{"gitId":"Derekljh"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":250,"author":{"gitId":"Derekljh"},"content":" default:","lastModifiedDate":"2024-01-30"},{"lineNumber":251,"author":{"gitId":"Derekljh"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":252,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentedLine);","lastModifiedDate":"2024-01-25"},{"lineNumber":253,"author":{"gitId":"Derekljh"},"content":" throw new DukeException(\"Sorry, I cannot understand what this is!\");","lastModifiedDate":"2024-01-25"},{"lineNumber":254,"author":{"gitId":"Derekljh"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":255,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentation + e.getMessage());","lastModifiedDate":"2024-01-25"},{"lineNumber":256,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentedLine);","lastModifiedDate":"2024-01-25"},{"lineNumber":257,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":258,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":259,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":260,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"Derekljh":257,"-":3}},{"path":"src/main/java/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Derekljh"},"content":"public class DukeException extends Exception {","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"Derekljh"},"content":" public DukeException(String message) {","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"Derekljh"},"content":" super(message);","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"Derekljh"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"Derekljh":5}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Derekljh"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"Derekljh"},"content":" protected String start;","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"Derekljh"},"content":" protected String end;","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"Derekljh"},"content":" public Event(String description, String start, String end) {","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"Derekljh"},"content":" super(description);","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"Derekljh"},"content":" this.start \u003d start;","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"Derekljh"},"content":" this.end \u003d end;","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"Derekljh"},"content":" public Event(String status, String description, String start, String end) {","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"Derekljh"},"content":" super(status.equals(\"1\"), description);","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"Derekljh"},"content":" this.start \u003d start;","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"Derekljh"},"content":" this.end \u003d end;","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"Derekljh"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"Derekljh"},"content":" public String toFile() {","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"Derekljh"},"content":" return \"E | \" + (isDone ? \"1\" : \"0\") + \" | \" + description","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"Derekljh"},"content":" + \" | \" + start + \" - \" + end;","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"Derekljh"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"Derekljh"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":23,"author":{"gitId":"Derekljh"},"content":" return \"[E]\" + super.toString() + \" (from: \" + start + \" to: \" + end + \")\";","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":25,"author":{"gitId":"Derekljh"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"Derekljh":25}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Derekljh"},"content":"public class Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"Derekljh"},"content":" protected String description;","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"Derekljh"},"content":" protected boolean isDone;","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"Derekljh"},"content":" public Task(String description) {","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"Derekljh"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"Derekljh"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"Derekljh"},"content":" public Task(boolean isDone, String description) {","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"Derekljh"},"content":" this.isDone \u003d isDone;","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"Derekljh"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"Derekljh"},"content":" // Method to mark whether task is done or not.","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"Derekljh"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"Derekljh"},"content":" return (isDone ? \"X\" : \" \");","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"Derekljh"},"content":" // Mark done.","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"Derekljh"},"content":" public void markDone() {","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"Derekljh"},"content":" isDone \u003d true;","lastModifiedDate":"2024-01-24"},{"lineNumber":23,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":25,"author":{"gitId":"Derekljh"},"content":" // Unmark.","lastModifiedDate":"2024-01-24"},{"lineNumber":26,"author":{"gitId":"Derekljh"},"content":" public void markNotDone() {","lastModifiedDate":"2024-01-24"},{"lineNumber":27,"author":{"gitId":"Derekljh"},"content":" isDone \u003d false;","lastModifiedDate":"2024-01-24"},{"lineNumber":28,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":29,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":30,"author":{"gitId":"Derekljh"},"content":" public String toFile() {","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"Derekljh"},"content":" return \"\";","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"Derekljh"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":35,"author":{"gitId":"Derekljh"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":36,"author":{"gitId":"Derekljh"},"content":" return \"[\" + getStatusIcon() + \"] \" + description;","lastModifiedDate":"2024-01-24"},{"lineNumber":37,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":38,"author":{"gitId":"Derekljh"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"Derekljh":38}},{"path":"src/main/java/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Derekljh"},"content":"public class ToDo extends Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"Derekljh"},"content":" public ToDo(String description) {","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"Derekljh"},"content":" super(description);","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"Derekljh"},"content":" public ToDo(String status, String description) {","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"Derekljh"},"content":" super(status.equals(\"1\"), description);","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"Derekljh"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"Derekljh"},"content":" public String toFile() {","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"Derekljh"},"content":" return \"T | \" + (isDone ? \"1\" : \"0\") + \" | \" + description;","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"Derekljh"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"Derekljh"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"Derekljh"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"Derekljh"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"Derekljh":18}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"Derekljh"},"content":"todo borrow book","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"Derekljh"},"content":"list","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"Derekljh"},"content":"deadline return book /by Sunday","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"Derekljh"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"Derekljh"},"content":"mark 1","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"Derekljh"},"content":"list","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"Derekljh"},"content":"mark 2","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"Derekljh"},"content":"unmark 1","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"Derekljh"},"content":"list","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"Derekljh"},"content":"bye","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"Derekljh":10}}] diff --git a/Derekljh_ip_master/commits.json b/Derekljh_ip_master/commits.json index 640ddfb6..24cf2ffb 100644 --- a/Derekljh_ip_master/commits.json +++ b/Derekljh_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"Derekljh":[{"date":"2024-01-24","commitResults":[{"hash":"230083587e173854f143594e5883844288ab17df","isMergeCommit":false,"messageTitle":"Add Lunaris.java","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":0}}},{"hash":"c59c980c00079d187e68a2b04c86f2a6207731ab","isMergeCommit":false,"messageTitle":"Add Lunaris.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":0}}},{"hash":"88eae7a4c90b0b622c2f7884b876dc65d755be27","isMergeCommit":false,"messageTitle":"Changed style of speech and added ability to echo","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":30,"deletions":3}}},{"hash":"a8dbed54be8b5a3f4bbeec04eac9f46d6659f34f","isMergeCommit":false,"messageTitle":"Added list functionality","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":23,"deletions":10}}},{"hash":"b4bfc58c4025a0e6745e67a12e5738f2911ae380","isMergeCommit":false,"messageTitle":"Created new Task class and added mark and unmark function","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":60,"deletions":6}}},{"hash":"5b495e9157cdfb0a3e97868f5a80b58edc16546d","isMergeCommit":false,"messageTitle":"Added 3 new classes to extend from Task and changed input to an array to separate the string input for categorizing.","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":73,"deletions":10}}}]},{"date":"2024-01-25","commitResults":[{"hash":"5985563d5eec2c3e4b79d3d6e59aefc0ae067390","isMergeCommit":false,"messageTitle":"A-TextUiTesting","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":10,"deletions":0}}},{"hash":"832d31ed8cb9ede2676dbf38ee047739c78b2a09","isMergeCommit":false,"messageTitle":"Added Exception handling and improved readability of code","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":128,"deletions":107}}},{"hash":"ef5f8f9ab1bd0e114543e5a604d70224f620aa78","isMergeCommit":false,"messageTitle":"Added Delete function and exception handling for mark, unmark, and delete","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":34,"deletions":5}}}]},{"date":"2024-01-30","commitResults":[{"hash":"620ec7fcdd0c212278d94441af67583c4f85929f","isMergeCommit":false,"messageTitle":"Change code to Enum","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":143,"deletions":110}}}]}]},"authorFileTypeContributionMap":{"Derekljh":{"java":254,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":0,"txt":10}},"authorContributionVariance":{"Derekljh":12406.167},"authorDisplayNameMap":{"Derekljh":"CS2103T-W13-2 LEON..EREK"}} +{"authorDailyContributionsMap":{"Derekljh":[{"date":"2024-01-24","commitResults":[{"hash":"230083587e173854f143594e5883844288ab17df","isMergeCommit":false,"messageTitle":"Add Lunaris.java","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":0}}},{"hash":"c59c980c00079d187e68a2b04c86f2a6207731ab","isMergeCommit":false,"messageTitle":"Add Lunaris.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":0}}},{"hash":"88eae7a4c90b0b622c2f7884b876dc65d755be27","isMergeCommit":false,"messageTitle":"Changed style of speech and added ability to echo","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":30,"deletions":3}}},{"hash":"a8dbed54be8b5a3f4bbeec04eac9f46d6659f34f","isMergeCommit":false,"messageTitle":"Added list functionality","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":23,"deletions":10}}},{"hash":"b4bfc58c4025a0e6745e67a12e5738f2911ae380","isMergeCommit":false,"messageTitle":"Created new Task class and added mark and unmark function","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":60,"deletions":6}}},{"hash":"5b495e9157cdfb0a3e97868f5a80b58edc16546d","isMergeCommit":false,"messageTitle":"Added 3 new classes to extend from Task and changed input to an array to separate the string input for categorizing.","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":73,"deletions":10}}}]},{"date":"2024-01-25","commitResults":[{"hash":"5985563d5eec2c3e4b79d3d6e59aefc0ae067390","isMergeCommit":false,"messageTitle":"A-TextUiTesting","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":10,"deletions":0}}},{"hash":"832d31ed8cb9ede2676dbf38ee047739c78b2a09","isMergeCommit":false,"messageTitle":"Added Exception handling and improved readability of code","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":128,"deletions":107}}},{"hash":"ef5f8f9ab1bd0e114543e5a604d70224f620aa78","isMergeCommit":false,"messageTitle":"Added Delete function and exception handling for mark, unmark, and delete","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":34,"deletions":5}}}]},{"date":"2024-01-30","commitResults":[{"hash":"620ec7fcdd0c212278d94441af67583c4f85929f","isMergeCommit":false,"messageTitle":"Change code to Enum","messageBody":"","tags":["A-Enum"],"fileTypesAndContributionMap":{"java":{"insertions":143,"deletions":110}}},{"hash":"f620af47c8808749d9090162173d1b83c92cabac","isMergeCommit":false,"messageTitle":"Add save and load functionalities","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"txt":{"insertions":5,"deletions":0},"java":{"insertions":161,"deletions":49}}},{"hash":"715e3dea3051b5c8204b5365234547152b19bb33","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"Derekljh":{"java":367,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":0,"txt":15}},"authorContributionVariance":{"Derekljh":22709.744},"authorDisplayNameMap":{"Derekljh":"CS2103T-W13-2 LEON..EREK"}} diff --git a/Dethada_ip_master/authorship.json b/Dethada_ip_master/authorship.json index e56e5f74..acdc9fe3 100644 --- a/Dethada_ip_master/authorship.json +++ b/Dethada_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"build.gradle","fileType":"gradle","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"plugins {","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":" id \u0027java\u0027","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":" id \u0027application\u0027","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":" id \u0027com.github.johnrengelman.shadow\u0027 version \u00277.1.2\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"repositories {","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":" mavenCentral()","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"dependencies {","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":" testImplementation group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-api\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":" testRuntimeOnly group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-engine\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"Dethada"},"content":" showStandardStreams \u003d true","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"Dethada"},"content":" mainClass.set(\"cappy.Cappy\")","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"Dethada"},"content":" archiveBaseName \u003d \"Cappy\"","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":"run{","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"Dethada":3,"-":39}},{"path":"src/main/java/cappy/Cappy.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Dethada"},"content":"package cappy;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"Dethada"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-20"},{"lineNumber":4,"author":{"gitId":"Dethada"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-20"},{"lineNumber":6,"author":{"gitId":"Dethada"},"content":"import cappy.parser.Parser;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"Dethada"},"content":"import cappy.parser.ParsedInput;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"Dethada"},"content":"import cappy.command.CommandType;","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"Dethada"},"content":"import cappy.storage.Storage;","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"Dethada"},"content":"import cappy.task.TaskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"Dethada"},"content":"import cappy.ui.Ui;","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"Dethada"},"content":"import cappy.error.CappyException;","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"Dethada"},"content":"public class Cappy {","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"Dethada"},"content":" private static final Scanner SCANNER \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-20"},{"lineNumber":16,"author":{"gitId":"Dethada"},"content":" private static TaskList TASKS;","lastModifiedDate":"2024-01-26"},{"lineNumber":17,"author":{"gitId":"Dethada"},"content":" private static final String STORAGE_PATH \u003d \"./cappy.csv\";","lastModifiedDate":"2024-01-26"},{"lineNumber":18,"author":{"gitId":"Dethada"},"content":" private static final Ui UI \u003d new Ui();","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"Dethada"},"content":" private static Storage storage;","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-20"},{"lineNumber":21,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2019-07-29"},{"lineNumber":22,"author":{"gitId":"Dethada"},"content":" UI.showBanner();","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"Dethada"},"content":" UI.showGreetings();","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"Dethada"},"content":" try {","lastModifiedDate":"2024-01-26"},{"lineNumber":25,"author":{"gitId":"Dethada"},"content":" storage \u003d new Storage(STORAGE_PATH);","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"Dethada"},"content":" TASKS \u003d TaskList.load(storage);","lastModifiedDate":"2024-01-27"},{"lineNumber":27,"author":{"gitId":"Dethada"},"content":" inputLoop();","lastModifiedDate":"2024-01-21"},{"lineNumber":28,"author":{"gitId":"Dethada"},"content":" storage.close();","lastModifiedDate":"2024-01-26"},{"lineNumber":29,"author":{"gitId":"Dethada"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-26"},{"lineNumber":30,"author":{"gitId":"Dethada"},"content":" UI.showError(e.getMessage());","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"Dethada"},"content":" Cappy.SCANNER.close();","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"Dethada"},"content":" System.exit(1);","lastModifiedDate":"2024-01-26"},{"lineNumber":33,"author":{"gitId":"Dethada"},"content":" } catch(CappyException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"Dethada"},"content":" UI.showError(e.getMessage());","lastModifiedDate":"2024-01-28"},{"lineNumber":35,"author":{"gitId":"Dethada"},"content":" Cappy.SCANNER.close();","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"Dethada"},"content":" System.exit(1);","lastModifiedDate":"2024-01-27"},{"lineNumber":37,"author":{"gitId":"Dethada"},"content":" } finally {","lastModifiedDate":"2024-01-26"},{"lineNumber":38,"author":{"gitId":"Dethada"},"content":" Cappy.SCANNER.close();","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-20"},{"lineNumber":40,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":41,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-20"},{"lineNumber":42,"author":{"gitId":"Dethada"},"content":" private static void inputLoop() {","lastModifiedDate":"2024-01-21"},{"lineNumber":43,"author":{"gitId":"Dethada"},"content":" String input \u003d \"\";","lastModifiedDate":"2024-01-21"},{"lineNumber":44,"author":{"gitId":"Dethada"},"content":" while (true) {","lastModifiedDate":"2024-01-21"},{"lineNumber":45,"author":{"gitId":"Dethada"},"content":" input \u003d SCANNER.nextLine();","lastModifiedDate":"2024-01-21"},{"lineNumber":46,"author":{"gitId":"Dethada"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":47,"author":{"gitId":"Dethada"},"content":" ParsedInput parsedInput \u003d Parser.parse(input);","lastModifiedDate":"2024-01-28"},{"lineNumber":48,"author":{"gitId":"Dethada"},"content":" parsedInput.executeCommand(TASKS, UI, storage);","lastModifiedDate":"2024-01-28"},{"lineNumber":49,"author":{"gitId":"Dethada"},"content":" if (parsedInput.getCommandType() \u003d\u003d CommandType.BYE) {","lastModifiedDate":"2024-01-28"},{"lineNumber":50,"author":{"gitId":"Dethada"},"content":" break;","lastModifiedDate":"2024-01-21"},{"lineNumber":51,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":52,"author":{"gitId":"Dethada"},"content":" } catch (CappyException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":53,"author":{"gitId":"Dethada"},"content":" UI.showError(e.getMessage());","lastModifiedDate":"2024-01-28"},{"lineNumber":54,"author":{"gitId":"Dethada"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-26"},{"lineNumber":55,"author":{"gitId":"Dethada"},"content":" UI.showError(e.getMessage());","lastModifiedDate":"2024-01-28"},{"lineNumber":56,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-20"},{"lineNumber":57,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":59,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"Dethada":56,"-":3}},{"path":"src/main/java/cappy/command/ByeCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Dethada"},"content":"package cappy.command;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"Dethada"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"Dethada"},"content":"import cappy.task.TaskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"Dethada"},"content":"import cappy.ui.Ui;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"Dethada"},"content":"import cappy.storage.Storage;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"Dethada"},"content":"import cappy.parser.ParsedInput;","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"Dethada"},"content":"import cappy.error.CappyException;","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"Dethada"},"content":"public class ByeCommand extends Command {","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"Dethada"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"Dethada"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage, ParsedInput input) throws CappyException, IOException {","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"Dethada"},"content":" ui.showExit();","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"Dethada"},"content":"}","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"Dethada":17}},{"path":"src/main/java/cappy/command/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Dethada"},"content":"package cappy.command;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"Dethada"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"Dethada"},"content":"import cappy.task.TaskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"Dethada"},"content":"import cappy.ui.Ui;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"Dethada"},"content":"import cappy.storage.Storage;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"Dethada"},"content":"import cappy.parser.ParsedInput;","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"Dethada"},"content":"import cappy.error.CappyException;","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"Dethada"},"content":"public abstract class Command {","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"Dethada"},"content":" abstract public void execute(TaskList tasks, Ui ui, Storage storage, ParsedInput input) throws CappyException, IOException;","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"Dethada"},"content":"}","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"Dethada":14}},{"path":"src/main/java/cappy/command/CommandType.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Dethada"},"content":"package cappy.command;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"Dethada"},"content":"public enum CommandType {","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"Dethada"},"content":" LIST(\"list\", new ListCommand()),","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"Dethada"},"content":" MARK(\"mark\", new MarkCommand()),","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"Dethada"},"content":" UNMARK(\"unmark\", new UnmarkCommand()),","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"Dethada"},"content":" TODO(\"todo\", new TodoCommand()),","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"Dethada"},"content":" DEADLINE(\"deadline\", new DeadlineCommand()),","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"Dethada"},"content":" EVENT(\"event\", new EventCommand()),","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"Dethada"},"content":" DELETE(\"delete\", new DeleteCommand()),","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"Dethada"},"content":" BYE(\"bye\", new ByeCommand()),","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"Dethada"},"content":" EMPTY(\"\", new EmptyCommand()),","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"Dethada"},"content":" INVALID(\"\", new InvalidCommand());","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"Dethada"},"content":" private Command command;","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"Dethada"},"content":" private String commandString;","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"Dethada"},"content":" private CommandType(String commandString, Command command) {","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"Dethada"},"content":" this.commandString \u003d commandString;","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"Dethada"},"content":" this.command \u003d command;","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"Dethada"},"content":" public String getCommandString() {","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"Dethada"},"content":" return this.commandString;","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"Dethada"},"content":" public Command getCommand() {","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"Dethada"},"content":" return this.command;","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"Dethada"},"content":" public static CommandType fromString(String commandString) {","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"Dethada"},"content":" for (CommandType command : CommandType.values()) {","lastModifiedDate":"2024-01-28"},{"lineNumber":33,"author":{"gitId":"Dethada"},"content":" if (command.getCommandString().equals(commandString)) {","lastModifiedDate":"2024-01-28"},{"lineNumber":34,"author":{"gitId":"Dethada"},"content":" return command;","lastModifiedDate":"2024-01-28"},{"lineNumber":35,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"Dethada"},"content":" return INVALID;","lastModifiedDate":"2024-01-28"},{"lineNumber":38,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":39,"author":{"gitId":"Dethada"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"Dethada":39}},{"path":"src/main/java/cappy/command/DeadlineCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Dethada"},"content":"package cappy.command;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"Dethada"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"Dethada"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"Dethada"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"Dethada"},"content":"import cappy.task.Deadline;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"Dethada"},"content":"import cappy.task.TaskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"Dethada"},"content":"import cappy.ui.Ui;","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"Dethada"},"content":"import cappy.storage.Storage;","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"Dethada"},"content":"import cappy.parser.ParsedInput;","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"Dethada"},"content":"import cappy.parser.Parser;","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"Dethada"},"content":"import cappy.error.CappyException;","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"Dethada"},"content":"public class DeadlineCommand extends Command {","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"Dethada"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"Dethada"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage, ParsedInput input) throws CappyException, IOException {","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"Dethada"},"content":" if (input.numberOfPositionalArguments() \u003c 1) {","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"Dethada"},"content":" throw new CappyException(\"Please enter the task description.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"Dethada"},"content":" } else if (!input.hasNamedArgument(\"by\")) {","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"Dethada"},"content":" throw new CappyException(\"Please specify the due date of the deadline task using /by [Date Time].\");","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"Dethada"},"content":" String description \u003d input.getPositionalArgument(0);","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"Dethada"},"content":" String dueString \u003d input.getNamedArgument(\"by\");","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"Dethada"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"Dethada"},"content":" LocalDateTime due \u003d Parser.parseDateTime(dueString);","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"Dethada"},"content":" Deadline task \u003d new Deadline(description, due);","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"Dethada"},"content":" tasks.addTask(task);","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"Dethada"},"content":" ui.showAddedTask(task, tasks);","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"Dethada"},"content":" tasks.save();","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"Dethada"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"Dethada"},"content":" throw new CappyException(\"Please use the correct datetime format.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":34,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":35,"author":{"gitId":"Dethada"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"Dethada":35}},{"path":"src/main/java/cappy/command/DeleteCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Dethada"},"content":"package cappy.command;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"Dethada"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"Dethada"},"content":"import cappy.task.Task;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"Dethada"},"content":"import cappy.task.TaskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"Dethada"},"content":"import cappy.ui.Ui;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"Dethada"},"content":"import cappy.storage.Storage;","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"Dethada"},"content":"import cappy.parser.ParsedInput;","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"Dethada"},"content":"import cappy.error.CappyException;","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"Dethada"},"content":"public class DeleteCommand extends Command {","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"Dethada"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"Dethada"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage, ParsedInput input) throws CappyException, IOException {","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"Dethada"},"content":" if (input.numberOfPositionalArguments() \u003c 1) {","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"Dethada"},"content":" throw new CappyException(\"Please enter an index.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"Dethada"},"content":" String indexStr \u003d input.getPositionalArgument(0);","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"Dethada"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"Dethada"},"content":" int index \u003d Integer.parseInt(indexStr);","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"Dethada"},"content":" if (!tasks.validIndex(index)) {","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"Dethada"},"content":" throw new CappyException(\"Please enter a valid index.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"Dethada"},"content":" Task task \u003d tasks.getTask(index);","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"Dethada"},"content":" tasks.removeTask(index);","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"Dethada"},"content":" String[] messages \u003d {","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"Dethada"},"content":" \"Noted. I\u0027ve removed this task:\", task.toString(),","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"Dethada"},"content":" \"Now you have \" + tasks.size() + \" tasks in the list.\"","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"Dethada"},"content":" };","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"Dethada"},"content":" ui.show(messages);","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"Dethada"},"content":" tasks.save();","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"Dethada"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":33,"author":{"gitId":"Dethada"},"content":" throw new CappyException(\"Please enter a valid index.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":35,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"Dethada"},"content":"}","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"Dethada":37}},{"path":"src/main/java/cappy/command/EmptyCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Dethada"},"content":"package cappy.command;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"Dethada"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"Dethada"},"content":"import cappy.task.TaskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"Dethada"},"content":"import cappy.ui.Ui;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"Dethada"},"content":"import cappy.storage.Storage;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"Dethada"},"content":"import cappy.parser.ParsedInput;","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"Dethada"},"content":"import cappy.error.CappyException;","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"Dethada"},"content":"public class EmptyCommand extends Command {","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"Dethada"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"Dethada"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage, ParsedInput input) throws CappyException, IOException {}","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"Dethada"},"content":"}","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"Dethada":15}},{"path":"src/main/java/cappy/command/EventCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Dethada"},"content":"package cappy.command;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"Dethada"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"Dethada"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"Dethada"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"Dethada"},"content":"import cappy.task.Event;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"Dethada"},"content":"import cappy.task.TaskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"Dethada"},"content":"import cappy.ui.Ui;","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"Dethada"},"content":"import cappy.storage.Storage;","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"Dethada"},"content":"import cappy.parser.ParsedInput;","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"Dethada"},"content":"import cappy.parser.Parser;","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"Dethada"},"content":"import cappy.error.CappyException;","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"Dethada"},"content":"public class EventCommand extends Command {","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"Dethada"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"Dethada"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage, ParsedInput input) throws CappyException, IOException {","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"Dethada"},"content":" if (input.numberOfPositionalArguments() \u003c 1) {","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"Dethada"},"content":" throw new CappyException(\"Please enter the task description.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"Dethada"},"content":" } else if (!input.hasNamedArgument(\"from\") || !input.hasNamedArgument(\"to\")) {","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"Dethada"},"content":" throw new CappyException(\"Please specify the duration of the event using /from [Date Time] /to [Date Time].\");","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"Dethada"},"content":" String description \u003d input.getPositionalArgument(0);","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"Dethada"},"content":" String fromString \u003d input.getNamedArgument(\"from\");","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"Dethada"},"content":" String toString \u003d input.getNamedArgument(\"to\");","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"Dethada"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"Dethada"},"content":" LocalDateTime from \u003d Parser.parseDateTime(fromString);","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"Dethada"},"content":" LocalDateTime to \u003d Parser.parseDateTime(toString);","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"Dethada"},"content":" Event task \u003d new Event(description, from, to);","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"Dethada"},"content":" tasks.addTask(task);","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"Dethada"},"content":" ui.showAddedTask(task, tasks);","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"Dethada"},"content":" tasks.save();","lastModifiedDate":"2024-01-28"},{"lineNumber":33,"author":{"gitId":"Dethada"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":34,"author":{"gitId":"Dethada"},"content":" throw new CappyException(\"Please use the correct datetime format.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"Dethada"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"Dethada":37}},{"path":"src/main/java/cappy/command/InvalidCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Dethada"},"content":"package cappy.command;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"Dethada"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"Dethada"},"content":"import cappy.task.TaskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"Dethada"},"content":"import cappy.ui.Ui;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"Dethada"},"content":"import cappy.storage.Storage;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"Dethada"},"content":"import cappy.parser.ParsedInput;","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"Dethada"},"content":"import cappy.error.CappyException;","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"Dethada"},"content":"public class InvalidCommand extends Command {","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"Dethada"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"Dethada"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage, ParsedInput input) throws CappyException, IOException {","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"Dethada"},"content":" ui.show(\"Sorry I can\u0027t help with that :(\");","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"Dethada"},"content":"}","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"Dethada":18}},{"path":"src/main/java/cappy/command/ListCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Dethada"},"content":"package cappy.command;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"Dethada"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"Dethada"},"content":"import cappy.task.Todo;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"Dethada"},"content":"import cappy.task.Task;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"Dethada"},"content":"import cappy.task.TaskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"Dethada"},"content":"import cappy.ui.Ui;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"Dethada"},"content":"import cappy.storage.Storage;","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"Dethada"},"content":"import cappy.parser.ParsedInput;","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"Dethada"},"content":"import cappy.error.CappyException;","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"Dethada"},"content":"public class ListCommand extends Command {","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"Dethada"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"Dethada"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage, ParsedInput input) throws CappyException, IOException {","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"Dethada"},"content":" String[] messages \u003d new String[tasks.size() + 1];","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"Dethada"},"content":" messages[0] \u003d \"Here are the tasks in your list:\";","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"Dethada"},"content":" System.arraycopy(tasks.toString().split(\"\\n\"), 0, messages, 1, tasks.size());","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"Dethada"},"content":" ui.show(messages);","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"Dethada"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"Dethada":20}},{"path":"src/main/java/cappy/command/MarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Dethada"},"content":"package cappy.command;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"Dethada"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"Dethada"},"content":"import cappy.task.Task;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"Dethada"},"content":"import cappy.task.TaskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"Dethada"},"content":"import cappy.ui.Ui;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"Dethada"},"content":"import cappy.storage.Storage;","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"Dethada"},"content":"import cappy.parser.ParsedInput;","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"Dethada"},"content":"import cappy.error.CappyException;","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"Dethada"},"content":"public class MarkCommand extends Command {","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"Dethada"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"Dethada"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage, ParsedInput input) throws CappyException, IOException {","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"Dethada"},"content":" if (input.numberOfPositionalArguments() \u003c 1) {","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"Dethada"},"content":" throw new CappyException(\"Please enter an index.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"Dethada"},"content":" String indexStr \u003d input.getPositionalArgument(0);","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"Dethada"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"Dethada"},"content":" int index \u003d Integer.parseInt(indexStr);","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"Dethada"},"content":" if (!tasks.validIndex(index)) {","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"Dethada"},"content":" throw new CappyException(\"Please enter a valid index.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"Dethada"},"content":" tasks.getTask(index).done();","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"Dethada"},"content":" String[] messages \u003d {","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"Dethada"},"content":" \"Nice! I\u0027ve marked this task as done:\", tasks.getTask(index).toString()","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"Dethada"},"content":" };","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"Dethada"},"content":" ui.show(messages);","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"Dethada"},"content":" tasks.save();","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"Dethada"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"Dethada"},"content":" throw new CappyException(\"Please enter a valid index.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":33,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":34,"author":{"gitId":"Dethada"},"content":"}","lastModifiedDate":"2024-01-28"},{"lineNumber":35,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"Dethada":36}},{"path":"src/main/java/cappy/command/TodoCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Dethada"},"content":"package cappy.command;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"Dethada"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"Dethada"},"content":"import cappy.task.Todo;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"Dethada"},"content":"import cappy.task.TaskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"Dethada"},"content":"import cappy.ui.Ui;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"Dethada"},"content":"import cappy.storage.Storage;","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"Dethada"},"content":"import cappy.parser.ParsedInput;","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"Dethada"},"content":"import cappy.error.CappyException;","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"Dethada"},"content":"public class TodoCommand extends Command {","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"Dethada"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"Dethada"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage, ParsedInput input) throws CappyException, IOException {","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"Dethada"},"content":" if (input.numberOfPositionalArguments() \u003c 1) {","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"Dethada"},"content":" throw new CappyException(\"Please enter the task description.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"Dethada"},"content":" String description \u003d input.getPositionalArgument(0);","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"Dethada"},"content":" Todo task \u003d new Todo(description);","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"Dethada"},"content":" tasks.addTask(task);","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"Dethada"},"content":" ui.showAddedTask(task, tasks);","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"Dethada"},"content":" tasks.save();","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"Dethada"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"Dethada":24}},{"path":"src/main/java/cappy/command/UnmarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Dethada"},"content":"package cappy.command;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"Dethada"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"Dethada"},"content":"import cappy.task.TaskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"Dethada"},"content":"import cappy.ui.Ui;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"Dethada"},"content":"import cappy.storage.Storage;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"Dethada"},"content":"import cappy.parser.ParsedInput;","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"Dethada"},"content":"import cappy.error.CappyException;","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"Dethada"},"content":"public class UnmarkCommand extends Command {","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"Dethada"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"Dethada"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage, ParsedInput input) throws CappyException, IOException {","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"Dethada"},"content":" if (input.numberOfPositionalArguments() \u003c 1) {","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"Dethada"},"content":" throw new CappyException(\"Please enter an index.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"Dethada"},"content":" String indexStr \u003d input.getPositionalArgument(0);","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"Dethada"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"Dethada"},"content":" int index \u003d Integer.parseInt(indexStr);","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"Dethada"},"content":" if (!tasks.validIndex(index)) {","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"Dethada"},"content":" throw new CappyException(\"Please enter a valid index.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"Dethada"},"content":" tasks.getTask(index).undone();","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"Dethada"},"content":" String[] messages \u003d {","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"Dethada"},"content":" \"OK, I\u0027ve marked this task as not done yet:\", tasks.getTask(index).toString()","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"Dethada"},"content":" };","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"Dethada"},"content":" ui.show(messages);","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"Dethada"},"content":" tasks.save();","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"Dethada"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"Dethada"},"content":" throw new CappyException(\"Please enter a valid index.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":33,"author":{"gitId":"Dethada"},"content":"}","lastModifiedDate":"2024-01-28"},{"lineNumber":34,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"Dethada":34}},{"path":"src/main/java/cappy/error/CappyException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Dethada"},"content":"package cappy.error;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"Dethada"},"content":"public class CappyException extends Exception {","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"Dethada"},"content":" public CappyException(String message) {","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"Dethada"},"content":" super(message);","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"Dethada"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"Dethada":7}},{"path":"src/main/java/cappy/parser/ParsedInput.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Dethada"},"content":"package cappy.parser;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"Dethada"},"content":"import java.util.List;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"Dethada"},"content":"import java.util.HashMap;","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"Dethada"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"Dethada"},"content":"import cappy.command.Command;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"Dethada"},"content":"import cappy.command.CommandType;","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"Dethada"},"content":"import cappy.storage.Storage;","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"Dethada"},"content":"import cappy.task.TaskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"Dethada"},"content":"import cappy.ui.Ui;","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"Dethada"},"content":"import cappy.error.CappyException;","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"Dethada"},"content":"public class ParsedInput {","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"Dethada"},"content":" private CommandType commandType;","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"Dethada"},"content":" private Command command;","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"Dethada"},"content":" private HashMap\u003cString, String\u003e namedArguments;","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"Dethada"},"content":" private List\u003cString\u003e positionalArguments;","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"Dethada"},"content":" public ParsedInput(CommandType commandType, HashMap\u003cString, String\u003e namedArguments, List\u003cString\u003e positionalArguments) {","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"Dethada"},"content":" this.commandType \u003d commandType;","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"Dethada"},"content":" this.command \u003d commandType.getCommand();","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"Dethada"},"content":" this.namedArguments \u003d namedArguments;","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"Dethada"},"content":" this.positionalArguments \u003d positionalArguments;","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"Dethada"},"content":" public CommandType getCommandType() {","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"Dethada"},"content":" return commandType;","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"Dethada"},"content":" public String getNamedArgument(String name) {","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"Dethada"},"content":" return namedArguments.get(name);","lastModifiedDate":"2024-01-28"},{"lineNumber":33,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":34,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":35,"author":{"gitId":"Dethada"},"content":" public String getPositionalArgument(int index) {","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"Dethada"},"content":" return positionalArguments.get(index);","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":38,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":39,"author":{"gitId":"Dethada"},"content":" public int numberOfPositionalArguments() {","lastModifiedDate":"2024-01-28"},{"lineNumber":40,"author":{"gitId":"Dethada"},"content":" return positionalArguments.size();","lastModifiedDate":"2024-01-28"},{"lineNumber":41,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":42,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":43,"author":{"gitId":"Dethada"},"content":" public int numberOfNamedArguments() {","lastModifiedDate":"2024-01-28"},{"lineNumber":44,"author":{"gitId":"Dethada"},"content":" return namedArguments.size();","lastModifiedDate":"2024-01-28"},{"lineNumber":45,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":46,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":47,"author":{"gitId":"Dethada"},"content":" public boolean hasNamedArgument(String name) {","lastModifiedDate":"2024-01-28"},{"lineNumber":48,"author":{"gitId":"Dethada"},"content":" return namedArguments.containsKey(name);","lastModifiedDate":"2024-01-28"},{"lineNumber":49,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":50,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":51,"author":{"gitId":"Dethada"},"content":" public void executeCommand(TaskList tasks, Ui ui, Storage storage) throws CappyException, IOException {","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"Dethada"},"content":" command.execute(tasks, ui, storage, this);","lastModifiedDate":"2024-01-28"},{"lineNumber":53,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":54,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":55,"author":{"gitId":"Dethada"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":56,"author":{"gitId":"Dethada"},"content":" public boolean equals(Object obj) {","lastModifiedDate":"2024-01-29"},{"lineNumber":57,"author":{"gitId":"Dethada"},"content":" if (!(obj instanceof ParsedInput)) {","lastModifiedDate":"2024-01-29"},{"lineNumber":58,"author":{"gitId":"Dethada"},"content":" return false;","lastModifiedDate":"2024-01-29"},{"lineNumber":59,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":60,"author":{"gitId":"Dethada"},"content":" ParsedInput other \u003d (ParsedInput) obj;","lastModifiedDate":"2024-01-29"},{"lineNumber":61,"author":{"gitId":"Dethada"},"content":" return commandType \u003d\u003d other.commandType \u0026\u0026 namedArguments.equals(other.namedArguments) \u0026\u0026 positionalArguments.equals(other.positionalArguments);","lastModifiedDate":"2024-01-29"},{"lineNumber":62,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":63,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":64,"author":{"gitId":"Dethada"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":65,"author":{"gitId":"Dethada"},"content":" public String toString() {","lastModifiedDate":"2024-01-29"},{"lineNumber":66,"author":{"gitId":"Dethada"},"content":" return \"ParsedInput(\" + commandType + \", \" + namedArguments + \", \" + positionalArguments + \")\";","lastModifiedDate":"2024-01-29"},{"lineNumber":67,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":68,"author":{"gitId":"Dethada"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"Dethada":68}},{"path":"src/main/java/cappy/parser/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Dethada"},"content":"package cappy.parser;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"Dethada"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"Dethada"},"content":"import java.util.HashMap;","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"Dethada"},"content":"import java.util.StringTokenizer;","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"Dethada"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"Dethada"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"Dethada"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"Dethada"},"content":"import cappy.command.CommandType;","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"Dethada"},"content":"import cappy.error.CappyException;","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"Dethada"},"content":"import cappy.task.Task;","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"Dethada"},"content":"import cappy.task.Todo;","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"Dethada"},"content":"import cappy.task.Deadline;","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"Dethada"},"content":"import cappy.task.Event;","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"Dethada"},"content":"public class Parser {","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"Dethada"},"content":" public static final DateTimeFormatter DATE_TIME_FORMAT \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd\u0027T\u0027HH:mm\");","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"Dethada"},"content":" public static ParsedInput parse(String input) throws CappyException {","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"Dethada"},"content":" StringTokenizer st \u003d new StringTokenizer(input, \" \");","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"Dethada"},"content":" int numTokens \u003d st.countTokens();","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"Dethada"},"content":" if (numTokens \u003d\u003d 0) {","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"Dethada"},"content":" return new ParsedInput(CommandType.EMPTY, new HashMap\u003c\u003e(), new ArrayList\u003c\u003e());","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"Dethada"},"content":" String commandString \u003d st.nextToken();","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"Dethada"},"content":" CommandType command \u003d CommandType.fromString(commandString);","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"Dethada"},"content":" if (command \u003d\u003d CommandType.INVALID || command \u003d\u003d CommandType.EMPTY) {","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"Dethada"},"content":" return new ParsedInput(command, new HashMap\u003c\u003e(), new ArrayList\u003c\u003e());","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"Dethada"},"content":" HashMap\u003cString, String\u003e namedArguments \u003d new HashMap\u003c\u003e();","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"Dethada"},"content":" ArrayList\u003cString\u003e positionalArguments \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-28"},{"lineNumber":33,"author":{"gitId":"Dethada"},"content":" while (st.hasMoreTokens()) {","lastModifiedDate":"2024-01-28"},{"lineNumber":34,"author":{"gitId":"Dethada"},"content":" String token \u003d st.nextToken();","lastModifiedDate":"2024-01-28"},{"lineNumber":35,"author":{"gitId":"Dethada"},"content":" if (token.startsWith(\"/\")) {","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"Dethada"},"content":" if (!st.hasMoreTokens()) {","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"Dethada"},"content":" throw new CappyException(\"Missing value for argument \" + token);","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":39,"author":{"gitId":"Dethada"},"content":" namedArguments.put(token.substring(1), st.nextToken());","lastModifiedDate":"2024-01-28"},{"lineNumber":40,"author":{"gitId":"Dethada"},"content":" } else {","lastModifiedDate":"2024-01-28"},{"lineNumber":41,"author":{"gitId":"Dethada"},"content":" positionalArguments.add(token);","lastModifiedDate":"2024-01-28"},{"lineNumber":42,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":43,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":44,"author":{"gitId":"Dethada"},"content":" return new ParsedInput(command, namedArguments, positionalArguments);","lastModifiedDate":"2024-01-28"},{"lineNumber":45,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":46,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":47,"author":{"gitId":"Dethada"},"content":" public static LocalDateTime parseDateTime(String input) throws DateTimeParseException {","lastModifiedDate":"2024-01-28"},{"lineNumber":48,"author":{"gitId":"Dethada"},"content":" return LocalDateTime.parse(input, DATE_TIME_FORMAT);","lastModifiedDate":"2024-01-28"},{"lineNumber":49,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":50,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":51,"author":{"gitId":"Dethada"},"content":" public static String dateTimeToString(LocalDateTime dateTime) {","lastModifiedDate":"2024-01-28"},{"lineNumber":52,"author":{"gitId":"Dethada"},"content":" return dateTime.format(DATE_TIME_FORMAT);","lastModifiedDate":"2024-01-28"},{"lineNumber":53,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":54,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":55,"author":{"gitId":"Dethada"},"content":" public static Task parseCsvLine(String csvLine) throws CappyException {","lastModifiedDate":"2024-01-29"},{"lineNumber":56,"author":{"gitId":"Dethada"},"content":" String[] data \u003d csvLine.split(\",\");","lastModifiedDate":"2024-01-28"},{"lineNumber":57,"author":{"gitId":"Dethada"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":58,"author":{"gitId":"Dethada"},"content":" String type \u003d data[0];","lastModifiedDate":"2024-01-28"},{"lineNumber":59,"author":{"gitId":"Dethada"},"content":" boolean done \u003d data[1].equals(\"1\");","lastModifiedDate":"2024-01-28"},{"lineNumber":60,"author":{"gitId":"Dethada"},"content":" String description \u003d data[2];","lastModifiedDate":"2024-01-28"},{"lineNumber":61,"author":{"gitId":"Dethada"},"content":" if (type.equals(Todo.TYPE_SYMBOL)) {","lastModifiedDate":"2024-01-28"},{"lineNumber":62,"author":{"gitId":"Dethada"},"content":" return new Todo(description, done);","lastModifiedDate":"2024-01-28"},{"lineNumber":63,"author":{"gitId":"Dethada"},"content":" } else if (type.equals(Deadline.TYPE_SYMBOL)) {","lastModifiedDate":"2024-01-28"},{"lineNumber":64,"author":{"gitId":"Dethada"},"content":" LocalDateTime due \u003d parseDateTime(data[3]);","lastModifiedDate":"2024-01-28"},{"lineNumber":65,"author":{"gitId":"Dethada"},"content":" return new Deadline(description, done, due);","lastModifiedDate":"2024-01-28"},{"lineNumber":66,"author":{"gitId":"Dethada"},"content":" } else if (type.equals(Event.TYPE_SYMBOL)) {","lastModifiedDate":"2024-01-28"},{"lineNumber":67,"author":{"gitId":"Dethada"},"content":" LocalDateTime from \u003d parseDateTime(data[3]);","lastModifiedDate":"2024-01-28"},{"lineNumber":68,"author":{"gitId":"Dethada"},"content":" LocalDateTime to \u003d parseDateTime(data[4]);","lastModifiedDate":"2024-01-28"},{"lineNumber":69,"author":{"gitId":"Dethada"},"content":" return new Event(description, done, from, to);","lastModifiedDate":"2024-01-28"},{"lineNumber":70,"author":{"gitId":"Dethada"},"content":" } else {","lastModifiedDate":"2024-01-28"},{"lineNumber":71,"author":{"gitId":"Dethada"},"content":" throw new CappyException(\"Invalid Type\");","lastModifiedDate":"2024-01-29"},{"lineNumber":72,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":73,"author":{"gitId":"Dethada"},"content":" } catch (ArrayIndexOutOfBoundsException | DateTimeParseException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":74,"author":{"gitId":"Dethada"},"content":" throw new CappyException(\"Invalid storage format!\");","lastModifiedDate":"2024-01-29"},{"lineNumber":75,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":76,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":77,"author":{"gitId":"Dethada"},"content":"}","lastModifiedDate":"2024-01-28"},{"lineNumber":78,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"Dethada":78}},{"path":"src/main/java/cappy/storage/CsvFormat.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Dethada"},"content":"package cappy.storage;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"Dethada"},"content":"public interface CsvFormat {","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"Dethada"},"content":" /**","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"Dethada"},"content":" * Returns the CSV string representation of this task.","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"Dethada"},"content":" *","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"Dethada"},"content":" * @return the CSV string representation of this task.","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"Dethada"},"content":" */","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"Dethada"},"content":" public String toCsv();","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"Dethada"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"Dethada":10}},{"path":"src/main/java/cappy/storage/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Dethada"},"content":"package cappy.storage;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"Dethada"},"content":"import java.io.File;","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"Dethada"},"content":"import java.io.FileOutputStream;","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"Dethada"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"Dethada"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"Dethada"},"content":"import java.io.FileReader;","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"Dethada"},"content":"import java.io.BufferedReader;","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"Dethada"},"content":"import java.io.BufferedWriter;","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"Dethada"},"content":"import java.lang.AutoCloseable;","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":12,"author":{"gitId":"Dethada"},"content":"public class Storage implements AutoCloseable {","lastModifiedDate":"2024-01-26"},{"lineNumber":13,"author":{"gitId":"Dethada"},"content":" private final String path;","lastModifiedDate":"2024-01-26"},{"lineNumber":14,"author":{"gitId":"Dethada"},"content":" private final File file;","lastModifiedDate":"2024-01-26"},{"lineNumber":15,"author":{"gitId":"Dethada"},"content":" private BufferedWriter writer;","lastModifiedDate":"2024-01-26"},{"lineNumber":16,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":17,"author":{"gitId":"Dethada"},"content":" public Storage(String path) throws IOException {","lastModifiedDate":"2024-01-26"},{"lineNumber":18,"author":{"gitId":"Dethada"},"content":" this.path \u003d path;","lastModifiedDate":"2024-01-26"},{"lineNumber":19,"author":{"gitId":"Dethada"},"content":" this.file \u003d new File(path);","lastModifiedDate":"2024-01-26"},{"lineNumber":20,"author":{"gitId":"Dethada"},"content":" this.file.getParentFile().mkdirs(); // create parent directories if not exists","lastModifiedDate":"2024-01-27"},{"lineNumber":21,"author":{"gitId":"Dethada"},"content":" this.file.createNewFile(); // create file if not exists","lastModifiedDate":"2024-01-27"},{"lineNumber":22,"author":{"gitId":"Dethada"},"content":" this.writer \u003d new BufferedWriter(new FileWriter(this.file, true));","lastModifiedDate":"2024-01-27"},{"lineNumber":23,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":24,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":25,"author":{"gitId":"Dethada"},"content":" public void empty() throws IOException {","lastModifiedDate":"2024-01-26"},{"lineNumber":26,"author":{"gitId":"Dethada"},"content":" close();","lastModifiedDate":"2024-01-27"},{"lineNumber":27,"author":{"gitId":"Dethada"},"content":" try (FileWriter fileWriter \u003d new FileWriter(this.file, false)) {","lastModifiedDate":"2024-01-27"},{"lineNumber":28,"author":{"gitId":"Dethada"},"content":" fileWriter.write(\"\");","lastModifiedDate":"2024-01-26"},{"lineNumber":29,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":30,"author":{"gitId":"Dethada"},"content":" this.writer \u003d new BufferedWriter(new FileWriter(this.file));","lastModifiedDate":"2024-01-27"},{"lineNumber":31,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":32,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":33,"author":{"gitId":"Dethada"},"content":" public void writeLine(String line) throws IOException {","lastModifiedDate":"2024-01-26"},{"lineNumber":34,"author":{"gitId":"Dethada"},"content":" writer.write(line);","lastModifiedDate":"2024-01-26"},{"lineNumber":35,"author":{"gitId":"Dethada"},"content":" writer.newLine();","lastModifiedDate":"2024-01-26"},{"lineNumber":36,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":37,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":38,"author":{"gitId":"Dethada"},"content":" public String readAll() throws IOException {","lastModifiedDate":"2024-01-27"},{"lineNumber":39,"author":{"gitId":"Dethada"},"content":" BufferedReader reader \u003d new BufferedReader(new FileReader(this.file));","lastModifiedDate":"2024-01-27"},{"lineNumber":40,"author":{"gitId":"Dethada"},"content":" StringBuilder builder \u003d new StringBuilder();","lastModifiedDate":"2024-01-27"},{"lineNumber":41,"author":{"gitId":"Dethada"},"content":" String line \u003d reader.readLine();","lastModifiedDate":"2024-01-27"},{"lineNumber":42,"author":{"gitId":"Dethada"},"content":" while (line !\u003d null) {","lastModifiedDate":"2024-01-27"},{"lineNumber":43,"author":{"gitId":"Dethada"},"content":" builder.append(line);","lastModifiedDate":"2024-01-27"},{"lineNumber":44,"author":{"gitId":"Dethada"},"content":" builder.append(\"\\n\");","lastModifiedDate":"2024-01-27"},{"lineNumber":45,"author":{"gitId":"Dethada"},"content":" line \u003d reader.readLine();","lastModifiedDate":"2024-01-27"},{"lineNumber":46,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":47,"author":{"gitId":"Dethada"},"content":" reader.close();","lastModifiedDate":"2024-01-27"},{"lineNumber":48,"author":{"gitId":"Dethada"},"content":" return builder.toString();","lastModifiedDate":"2024-01-27"},{"lineNumber":49,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":50,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":51,"author":{"gitId":"Dethada"},"content":" @Override","lastModifiedDate":"2024-01-26"},{"lineNumber":52,"author":{"gitId":"Dethada"},"content":" public void close() throws IOException {","lastModifiedDate":"2024-01-26"},{"lineNumber":53,"author":{"gitId":"Dethada"},"content":" writer.close();","lastModifiedDate":"2024-01-26"},{"lineNumber":54,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":55,"author":{"gitId":"Dethada"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"Dethada":55}},{"path":"src/main/java/cappy/task/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Dethada"},"content":"package cappy.task;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"Dethada"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"Dethada"},"content":"import cappy.parser.Parser;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"Dethada"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-20"},{"lineNumber":8,"author":{"gitId":"Dethada"},"content":" public static final String TYPE_SYMBOL \u003d \"D\";","lastModifiedDate":"2024-01-27"},{"lineNumber":9,"author":{"gitId":"Dethada"},"content":" private final LocalDateTime due;","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-20"},{"lineNumber":11,"author":{"gitId":"Dethada"},"content":" public Deadline(String description, LocalDateTime due) {","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"Dethada"},"content":" super(description);","lastModifiedDate":"2024-01-20"},{"lineNumber":13,"author":{"gitId":"Dethada"},"content":" this.due \u003d due;","lastModifiedDate":"2024-01-20"},{"lineNumber":14,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-20"},{"lineNumber":15,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-20"},{"lineNumber":16,"author":{"gitId":"Dethada"},"content":" public Deadline(String description, boolean isDone, LocalDateTime due) {","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"Dethada"},"content":" super(description, isDone);","lastModifiedDate":"2024-01-27"},{"lineNumber":18,"author":{"gitId":"Dethada"},"content":" this.due \u003d due;","lastModifiedDate":"2024-01-27"},{"lineNumber":19,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":20,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":21,"author":{"gitId":"Dethada"},"content":" @Override","lastModifiedDate":"2024-01-26"},{"lineNumber":22,"author":{"gitId":"Dethada"},"content":" public String toCsv() {","lastModifiedDate":"2024-01-26"},{"lineNumber":23,"author":{"gitId":"Dethada"},"content":" return TYPE_SYMBOL + \",\" + (super.getDone() ? \"1\" : \"0\") + \",\" + super.getDescription() + \",\"","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"Dethada"},"content":" + Parser.dateTimeToString(this.due) + \",\";","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":26,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":27,"author":{"gitId":"Dethada"},"content":" @Override","lastModifiedDate":"2024-01-20"},{"lineNumber":28,"author":{"gitId":"Dethada"},"content":" public String toString() {","lastModifiedDate":"2024-01-20"},{"lineNumber":29,"author":{"gitId":"Dethada"},"content":" return \"[\" + TYPE_SYMBOL + \"]\" + super.toString() + \" (by: \" + Parser.dateTimeToString(this.due) + \")\";","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-20"},{"lineNumber":31,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"Dethada"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"Dethada"},"content":" public boolean equals(Object obj) {","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"Dethada"},"content":" if (!(obj instanceof Deadline)) {","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"Dethada"},"content":" return false;","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"Dethada"},"content":" Deadline other \u003d (Deadline) obj;","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"Dethada"},"content":" return super.equals(other) \u0026\u0026 this.due.equals(other.due);","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"Dethada"},"content":"}","lastModifiedDate":"2024-01-20"}],"authorContributionMap":{"Dethada":40}},{"path":"src/main/java/cappy/task/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Dethada"},"content":"package cappy.task;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"Dethada"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"Dethada"},"content":"import cappy.parser.Parser;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"Dethada"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-20"},{"lineNumber":8,"author":{"gitId":"Dethada"},"content":" public static final String TYPE_SYMBOL \u003d \"E\";","lastModifiedDate":"2024-01-27"},{"lineNumber":9,"author":{"gitId":"Dethada"},"content":" private final LocalDateTime begin;","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"Dethada"},"content":" private final LocalDateTime end;","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-20"},{"lineNumber":12,"author":{"gitId":"Dethada"},"content":" public Event(String description, LocalDateTime begin, LocalDateTime end) {","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"Dethada"},"content":" super(description);","lastModifiedDate":"2024-01-20"},{"lineNumber":14,"author":{"gitId":"Dethada"},"content":" this.begin \u003d begin;","lastModifiedDate":"2024-01-20"},{"lineNumber":15,"author":{"gitId":"Dethada"},"content":" this.end \u003d end;","lastModifiedDate":"2024-01-20"},{"lineNumber":16,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-20"},{"lineNumber":17,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-20"},{"lineNumber":18,"author":{"gitId":"Dethada"},"content":" public Event(String description, boolean isDone, LocalDateTime begin, LocalDateTime end) {","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"Dethada"},"content":" super(description, isDone);","lastModifiedDate":"2024-01-27"},{"lineNumber":20,"author":{"gitId":"Dethada"},"content":" this.begin \u003d begin;","lastModifiedDate":"2024-01-27"},{"lineNumber":21,"author":{"gitId":"Dethada"},"content":" this.end \u003d end;","lastModifiedDate":"2024-01-27"},{"lineNumber":22,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":23,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":24,"author":{"gitId":"Dethada"},"content":" @Override","lastModifiedDate":"2024-01-26"},{"lineNumber":25,"author":{"gitId":"Dethada"},"content":" public String toCsv() {","lastModifiedDate":"2024-01-26"},{"lineNumber":26,"author":{"gitId":"Dethada"},"content":" return TYPE_SYMBOL + \",\" + (super.getDone() ? \"1\" : \"0\") + \",\" + super.getDescription() + \",\" + Parser.dateTimeToString(this.begin) + \",\" + Parser.dateTimeToString(this.end);","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":28,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":29,"author":{"gitId":"Dethada"},"content":" @Override","lastModifiedDate":"2024-01-20"},{"lineNumber":30,"author":{"gitId":"Dethada"},"content":" public String toString() {","lastModifiedDate":"2024-01-20"},{"lineNumber":31,"author":{"gitId":"Dethada"},"content":" return \"[\" + TYPE_SYMBOL + \"]\" + super.toString() + \" (from: \" + Parser.dateTimeToString(this.begin) + \" to: \" + Parser.dateTimeToString(this.end) + \")\";","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-20"},{"lineNumber":33,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"Dethada"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"Dethada"},"content":" public boolean equals(Object obj) {","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"Dethada"},"content":" if (!(obj instanceof Event)) {","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"Dethada"},"content":" return false;","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"Dethada"},"content":" Event other \u003d (Event) obj;","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"Dethada"},"content":" return super.equals(other) \u0026\u0026 this.begin.equals(other.begin) \u0026\u0026 this.end.equals(other.end);","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"Dethada"},"content":"}","lastModifiedDate":"2024-01-20"}],"authorContributionMap":{"Dethada":42}},{"path":"src/main/java/cappy/task/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Dethada"},"content":"package cappy.task;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"Dethada"},"content":"import cappy.storage.CsvFormat;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"Dethada"},"content":"public abstract class Task implements CsvFormat {","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"Dethada"},"content":" private String description;","lastModifiedDate":"2024-01-20"},{"lineNumber":7,"author":{"gitId":"Dethada"},"content":" private boolean done;","lastModifiedDate":"2024-01-20"},{"lineNumber":8,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-20"},{"lineNumber":9,"author":{"gitId":"Dethada"},"content":" public Task(String description) {","lastModifiedDate":"2024-01-20"},{"lineNumber":10,"author":{"gitId":"Dethada"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-20"},{"lineNumber":11,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-20"},{"lineNumber":12,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-20"},{"lineNumber":13,"author":{"gitId":"Dethada"},"content":" public Task(String description, boolean isDone) {","lastModifiedDate":"2024-01-27"},{"lineNumber":14,"author":{"gitId":"Dethada"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-27"},{"lineNumber":15,"author":{"gitId":"Dethada"},"content":" this.done \u003d isDone;","lastModifiedDate":"2024-01-27"},{"lineNumber":16,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":17,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":18,"author":{"gitId":"Dethada"},"content":" public String getDescription() {","lastModifiedDate":"2024-01-20"},{"lineNumber":19,"author":{"gitId":"Dethada"},"content":" return this.description;","lastModifiedDate":"2024-01-20"},{"lineNumber":20,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-20"},{"lineNumber":21,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-20"},{"lineNumber":22,"author":{"gitId":"Dethada"},"content":" public boolean getDone() {","lastModifiedDate":"2024-01-20"},{"lineNumber":23,"author":{"gitId":"Dethada"},"content":" return this.done;","lastModifiedDate":"2024-01-20"},{"lineNumber":24,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-20"},{"lineNumber":25,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-20"},{"lineNumber":26,"author":{"gitId":"Dethada"},"content":" public void done() {","lastModifiedDate":"2024-01-20"},{"lineNumber":27,"author":{"gitId":"Dethada"},"content":" this.done \u003d true;","lastModifiedDate":"2024-01-20"},{"lineNumber":28,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-20"},{"lineNumber":29,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-20"},{"lineNumber":30,"author":{"gitId":"Dethada"},"content":" public void undone() {","lastModifiedDate":"2024-01-20"},{"lineNumber":31,"author":{"gitId":"Dethada"},"content":" this.done \u003d false;","lastModifiedDate":"2024-01-20"},{"lineNumber":32,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-20"},{"lineNumber":33,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-20"},{"lineNumber":34,"author":{"gitId":"Dethada"},"content":" @Override","lastModifiedDate":"2024-01-20"},{"lineNumber":35,"author":{"gitId":"Dethada"},"content":" public String toString() {","lastModifiedDate":"2024-01-20"},{"lineNumber":36,"author":{"gitId":"Dethada"},"content":" return \"[\" + (this.done ? \"X\" : \" \") + \"] \" + this.description;","lastModifiedDate":"2024-01-20"},{"lineNumber":37,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-20"},{"lineNumber":38,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"Dethada"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"Dethada"},"content":" public boolean equals(Object obj) {","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"Dethada"},"content":" if (!(obj instanceof Task)) {","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"Dethada"},"content":" return false;","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"Dethada"},"content":" Task other \u003d (Task) obj;","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"Dethada"},"content":" return this.description.equals(other.description) \u0026\u0026 this.done \u003d\u003d other.done;","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"Dethada"},"content":"}","lastModifiedDate":"2024-01-20"}],"authorContributionMap":{"Dethada":47}},{"path":"src/main/java/cappy/task/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Dethada"},"content":"package cappy.task;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"Dethada"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-20"},{"lineNumber":4,"author":{"gitId":"Dethada"},"content":"import java.util.List;","lastModifiedDate":"2024-01-20"},{"lineNumber":5,"author":{"gitId":"Dethada"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-20"},{"lineNumber":7,"author":{"gitId":"Dethada"},"content":"import cappy.error.CappyException;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"Dethada"},"content":"import cappy.parser.Parser;","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"Dethada"},"content":"import cappy.storage.Storage;","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"Dethada"},"content":"public class TaskList {","lastModifiedDate":"2024-01-20"},{"lineNumber":12,"author":{"gitId":"Dethada"},"content":" private final List\u003cTask\u003e tasks;","lastModifiedDate":"2024-01-20"},{"lineNumber":13,"author":{"gitId":"Dethada"},"content":" private final Storage storage;","lastModifiedDate":"2024-01-26"},{"lineNumber":14,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-20"},{"lineNumber":15,"author":{"gitId":"Dethada"},"content":" private TaskList(Storage storage) {","lastModifiedDate":"2024-01-27"},{"lineNumber":16,"author":{"gitId":"Dethada"},"content":" this.tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-20"},{"lineNumber":17,"author":{"gitId":"Dethada"},"content":" this.storage \u003d storage;","lastModifiedDate":"2024-01-26"},{"lineNumber":18,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-20"},{"lineNumber":19,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-20"},{"lineNumber":20,"author":{"gitId":"Dethada"},"content":" public void addTask(Task task) {","lastModifiedDate":"2024-01-20"},{"lineNumber":21,"author":{"gitId":"Dethada"},"content":" this.tasks.add(task);","lastModifiedDate":"2024-01-20"},{"lineNumber":22,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-20"},{"lineNumber":23,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-20"},{"lineNumber":24,"author":{"gitId":"Dethada"},"content":" /**","lastModifiedDate":"2024-01-20"},{"lineNumber":25,"author":{"gitId":"Dethada"},"content":" * Returns the task at the specified 1-based index.","lastModifiedDate":"2024-01-20"},{"lineNumber":26,"author":{"gitId":"Dethada"},"content":" *","lastModifiedDate":"2024-01-20"},{"lineNumber":27,"author":{"gitId":"Dethada"},"content":" * @param index 1-based index of the task to return.","lastModifiedDate":"2024-01-20"},{"lineNumber":28,"author":{"gitId":"Dethada"},"content":" * @return the task at the specified 1-based index.","lastModifiedDate":"2024-01-20"},{"lineNumber":29,"author":{"gitId":"Dethada"},"content":" */","lastModifiedDate":"2024-01-20"},{"lineNumber":30,"author":{"gitId":"Dethada"},"content":" public Task getTask(int index) {","lastModifiedDate":"2024-01-20"},{"lineNumber":31,"author":{"gitId":"Dethada"},"content":" return this.tasks.get(index - 1);","lastModifiedDate":"2024-01-20"},{"lineNumber":32,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-20"},{"lineNumber":33,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-20"},{"lineNumber":34,"author":{"gitId":"Dethada"},"content":" /**","lastModifiedDate":"2024-01-21"},{"lineNumber":35,"author":{"gitId":"Dethada"},"content":" * Removes the task at the specified 1-based index.","lastModifiedDate":"2024-01-21"},{"lineNumber":36,"author":{"gitId":"Dethada"},"content":" *","lastModifiedDate":"2024-01-21"},{"lineNumber":37,"author":{"gitId":"Dethada"},"content":" * @param index 1-based index of the task to remove.","lastModifiedDate":"2024-01-21"},{"lineNumber":38,"author":{"gitId":"Dethada"},"content":" */","lastModifiedDate":"2024-01-21"},{"lineNumber":39,"author":{"gitId":"Dethada"},"content":" public void removeTask(int index) {","lastModifiedDate":"2024-01-21"},{"lineNumber":40,"author":{"gitId":"Dethada"},"content":" this.tasks.remove(index - 1);","lastModifiedDate":"2024-01-21"},{"lineNumber":41,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":42,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":43,"author":{"gitId":"Dethada"},"content":" public int size() {","lastModifiedDate":"2024-01-20"},{"lineNumber":44,"author":{"gitId":"Dethada"},"content":" return this.tasks.size();","lastModifiedDate":"2024-01-20"},{"lineNumber":45,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-20"},{"lineNumber":46,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-20"},{"lineNumber":47,"author":{"gitId":"Dethada"},"content":" /**","lastModifiedDate":"2024-01-21"},{"lineNumber":48,"author":{"gitId":"Dethada"},"content":" * Returns true if the specified index is valid.","lastModifiedDate":"2024-01-21"},{"lineNumber":49,"author":{"gitId":"Dethada"},"content":" *","lastModifiedDate":"2024-01-21"},{"lineNumber":50,"author":{"gitId":"Dethada"},"content":" * @param index 1-based index to check.","lastModifiedDate":"2024-01-21"},{"lineNumber":51,"author":{"gitId":"Dethada"},"content":" * @return true if the specified index is valid.","lastModifiedDate":"2024-01-21"},{"lineNumber":52,"author":{"gitId":"Dethada"},"content":" */","lastModifiedDate":"2024-01-21"},{"lineNumber":53,"author":{"gitId":"Dethada"},"content":" public boolean validIndex(int index) {","lastModifiedDate":"2024-01-20"},{"lineNumber":54,"author":{"gitId":"Dethada"},"content":" return index \u003e\u003d 1 \u0026\u0026 index \u003c\u003d this.tasks.size();","lastModifiedDate":"2024-01-20"},{"lineNumber":55,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-20"},{"lineNumber":56,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-20"},{"lineNumber":57,"author":{"gitId":"Dethada"},"content":" public void save() throws IOException {","lastModifiedDate":"2024-01-26"},{"lineNumber":58,"author":{"gitId":"Dethada"},"content":" this.storage.empty();","lastModifiedDate":"2024-01-26"},{"lineNumber":59,"author":{"gitId":"Dethada"},"content":" for (Task task : this.tasks) {","lastModifiedDate":"2024-01-26"},{"lineNumber":60,"author":{"gitId":"Dethada"},"content":" this.storage.writeLine(task.toCsv());","lastModifiedDate":"2024-01-26"},{"lineNumber":61,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":62,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":63,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":64,"author":{"gitId":"Dethada"},"content":" public static TaskList load(Storage storage) throws IOException, CappyException {","lastModifiedDate":"2024-01-29"},{"lineNumber":65,"author":{"gitId":"Dethada"},"content":" TaskList taskList \u003d new TaskList(storage);","lastModifiedDate":"2024-01-27"},{"lineNumber":66,"author":{"gitId":"Dethada"},"content":" String[] csvLines \u003d storage.readAll().split(\"\\n\");","lastModifiedDate":"2024-01-27"},{"lineNumber":67,"author":{"gitId":"Dethada"},"content":" for (String line : csvLines) {","lastModifiedDate":"2024-01-27"},{"lineNumber":68,"author":{"gitId":"Dethada"},"content":" if (!line.equals(\"\")) {","lastModifiedDate":"2024-01-27"},{"lineNumber":69,"author":{"gitId":"Dethada"},"content":" taskList.addTask(Parser.parseCsvLine(line));","lastModifiedDate":"2024-01-28"},{"lineNumber":70,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":71,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":72,"author":{"gitId":"Dethada"},"content":" return taskList;","lastModifiedDate":"2024-01-27"},{"lineNumber":73,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":74,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":75,"author":{"gitId":"Dethada"},"content":" @Override","lastModifiedDate":"2024-01-20"},{"lineNumber":76,"author":{"gitId":"Dethada"},"content":" public String toString() {","lastModifiedDate":"2024-01-20"},{"lineNumber":77,"author":{"gitId":"Dethada"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2024-01-20"},{"lineNumber":78,"author":{"gitId":"Dethada"},"content":" for (int i \u003d 0; i \u003c this.tasks.size(); i++) {","lastModifiedDate":"2024-01-20"},{"lineNumber":79,"author":{"gitId":"Dethada"},"content":" sb.append(i + 1).append(\". \").append(this.tasks.get(i).toString()).append(\"\\n\");","lastModifiedDate":"2024-01-21"},{"lineNumber":80,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-20"},{"lineNumber":81,"author":{"gitId":"Dethada"},"content":" return sb.toString();","lastModifiedDate":"2024-01-20"},{"lineNumber":82,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-20"},{"lineNumber":83,"author":{"gitId":"Dethada"},"content":"}","lastModifiedDate":"2024-01-20"}],"authorContributionMap":{"Dethada":83}},{"path":"src/main/java/cappy/task/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Dethada"},"content":"package cappy.task;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"Dethada"},"content":"public class Todo extends Task {","lastModifiedDate":"2024-01-20"},{"lineNumber":4,"author":{"gitId":"Dethada"},"content":" public static final String TYPE_SYMBOL \u003d \"T\";","lastModifiedDate":"2024-01-27"},{"lineNumber":5,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"Dethada"},"content":" public Todo(String description) {","lastModifiedDate":"2024-01-20"},{"lineNumber":7,"author":{"gitId":"Dethada"},"content":" super(description);","lastModifiedDate":"2024-01-20"},{"lineNumber":8,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-20"},{"lineNumber":9,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-20"},{"lineNumber":10,"author":{"gitId":"Dethada"},"content":" public Todo(String description, boolean isDone) {","lastModifiedDate":"2024-01-27"},{"lineNumber":11,"author":{"gitId":"Dethada"},"content":" super(description, isDone);","lastModifiedDate":"2024-01-27"},{"lineNumber":12,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":13,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":14,"author":{"gitId":"Dethada"},"content":" @Override","lastModifiedDate":"2024-01-26"},{"lineNumber":15,"author":{"gitId":"Dethada"},"content":" public String toCsv() {","lastModifiedDate":"2024-01-26"},{"lineNumber":16,"author":{"gitId":"Dethada"},"content":" return TYPE_SYMBOL + \",\" + (super.getDone() ? \"1\" : \"0\") + \",\" + super.getDescription() + \",,\";","lastModifiedDate":"2024-01-26"},{"lineNumber":17,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":18,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":19,"author":{"gitId":"Dethada"},"content":" @Override","lastModifiedDate":"2024-01-20"},{"lineNumber":20,"author":{"gitId":"Dethada"},"content":" public String toString() {","lastModifiedDate":"2024-01-20"},{"lineNumber":21,"author":{"gitId":"Dethada"},"content":" return \"[\" + TYPE_SYMBOL + \"]\" + super.toString();","lastModifiedDate":"2024-01-26"},{"lineNumber":22,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-20"},{"lineNumber":23,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"Dethada"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"Dethada"},"content":" public boolean equals(Object obj) {","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"Dethada"},"content":" if (!(obj instanceof Todo)) {","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"Dethada"},"content":" return false;","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"Dethada"},"content":" Todo other \u003d (Todo) obj;","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"Dethada"},"content":" return super.equals(other);","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"Dethada"},"content":"}","lastModifiedDate":"2024-01-20"}],"authorContributionMap":{"Dethada":32}},{"path":"src/main/java/cappy/ui/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Dethada"},"content":"package cappy.ui;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"Dethada"},"content":"import cappy.util.Logger;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"Dethada"},"content":"import cappy.task.Task;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"Dethada"},"content":"import cappy.task.TaskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"Dethada"},"content":"public class Ui {","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"Dethada"},"content":" private static final String HORIZONTAL_LINE \u003d","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"Dethada"},"content":" \"____________________________________________________________\";","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"Dethada"},"content":" private static final String INDENT \u003d \" \";","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"Dethada"},"content":" public void showAddedTask(Task task, TaskList tasks) {","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"Dethada"},"content":" String[] messages \u003d {","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"Dethada"},"content":" \"Got it. I\u0027ve added this task:\",","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"Dethada"},"content":" task.toString(),","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"Dethada"},"content":" \"Now you have \" + tasks.size() + \" tasks in the list.\"","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"Dethada"},"content":" };","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"Dethada"},"content":" show(messages);","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"Dethada"},"content":" public void showBanner() {","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"Dethada"},"content":" Logger.print(\" ██████╗ █████╗ ██████╗ ██████╗ ██╗ ██╗\");","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"Dethada"},"content":" Logger.print(\"██╔════╝██╔══██╗██╔══██╗██╔══██╗╚██╗ ██╔╝\");","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"Dethada"},"content":" Logger.print(\"██║ ███████║██████╔╝██████╔╝ ╚████╔╝ \");","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"Dethada"},"content":" Logger.print(\"██║ ██╔══██║██╔═══╝ ██╔═══╝ ╚██╔╝ \");","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"Dethada"},"content":" Logger.print(\"╚██████╗██║ ██║██║ ██║ ██║ \");","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"Dethada"},"content":" Logger.print(\" ╚═════╝╚═╝ ╚═╝╚═╝ ╚═╝ ╚═╝ \");","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"Dethada"},"content":" public void show(String message) {","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"Dethada"},"content":" Logger.print(INDENT + HORIZONTAL_LINE);","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"Dethada"},"content":" Logger.print(INDENT + \" \" + message);","lastModifiedDate":"2024-01-28"},{"lineNumber":33,"author":{"gitId":"Dethada"},"content":" Logger.print(INDENT + HORIZONTAL_LINE + \"\\n\");","lastModifiedDate":"2024-01-28"},{"lineNumber":34,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":35,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"Dethada"},"content":" public void show(String[] messages) {","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"Dethada"},"content":" Logger.print(INDENT + HORIZONTAL_LINE);","lastModifiedDate":"2024-01-28"},{"lineNumber":38,"author":{"gitId":"Dethada"},"content":" for (String msg : messages) {","lastModifiedDate":"2024-01-28"},{"lineNumber":39,"author":{"gitId":"Dethada"},"content":" Logger.print(INDENT + \" \" + msg);","lastModifiedDate":"2024-01-28"},{"lineNumber":40,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":41,"author":{"gitId":"Dethada"},"content":" Logger.print(INDENT + HORIZONTAL_LINE + \"\\n\");","lastModifiedDate":"2024-01-28"},{"lineNumber":42,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":43,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":44,"author":{"gitId":"Dethada"},"content":" public void showError(String message) {","lastModifiedDate":"2024-01-28"},{"lineNumber":45,"author":{"gitId":"Dethada"},"content":" Logger.error(message);","lastModifiedDate":"2024-01-28"},{"lineNumber":46,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":47,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":48,"author":{"gitId":"Dethada"},"content":" public void showError(Exception exception) {","lastModifiedDate":"2024-01-28"},{"lineNumber":49,"author":{"gitId":"Dethada"},"content":" Logger.error(exception.getMessage());","lastModifiedDate":"2024-01-28"},{"lineNumber":50,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":51,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":52,"author":{"gitId":"Dethada"},"content":" public void showGreetings() {","lastModifiedDate":"2024-01-28"},{"lineNumber":53,"author":{"gitId":"Dethada"},"content":" String[] messages \u003d {\"Hello! I\u0027m Cappy\", \"What can I do for you?\"};","lastModifiedDate":"2024-01-28"},{"lineNumber":54,"author":{"gitId":"Dethada"},"content":" show(messages);","lastModifiedDate":"2024-01-28"},{"lineNumber":55,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":56,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":57,"author":{"gitId":"Dethada"},"content":" public void showExit() {","lastModifiedDate":"2024-01-28"},{"lineNumber":58,"author":{"gitId":"Dethada"},"content":" show(\"Bye. Hope to see you again soon!\");","lastModifiedDate":"2024-01-28"},{"lineNumber":59,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":60,"author":{"gitId":"Dethada"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"Dethada":60}},{"path":"src/main/java/cappy/util/Logger.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Dethada"},"content":"package cappy.util;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"Dethada"},"content":"public class Logger {","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"Dethada"},"content":" public enum LogLevel {","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"Dethada"},"content":" DEBUG,","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"Dethada"},"content":" INFO,","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"Dethada"},"content":" WARN,","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"Dethada"},"content":" ERROR","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"Dethada"},"content":" private static LogLevel logLevel \u003d LogLevel.INFO;","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"Dethada"},"content":" public static void setLogLevel(LogLevel logLevel) {","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"Dethada"},"content":" Logger.logLevel \u003d logLevel;","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"Dethada"},"content":" public static void print(String message) {","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"Dethada"},"content":" System.out.println(message);","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"Dethada"},"content":" public static void debug(String message) {","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"Dethada"},"content":" if (Logger.logLevel.compareTo(LogLevel.DEBUG) \u003c\u003d 0) {","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"Dethada"},"content":" System.err.println(\"[DEBUG] \" + message);","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"Dethada"},"content":" public static void info(String message) {","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"Dethada"},"content":" if (Logger.logLevel.compareTo(LogLevel.INFO) \u003c\u003d 0) {","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"Dethada"},"content":" System.out.println(\"[INFO] \" + message);","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":33,"author":{"gitId":"Dethada"},"content":" public static void warn(String message) {","lastModifiedDate":"2024-01-28"},{"lineNumber":34,"author":{"gitId":"Dethada"},"content":" if (Logger.logLevel.compareTo(LogLevel.WARN) \u003c\u003d 0) {","lastModifiedDate":"2024-01-28"},{"lineNumber":35,"author":{"gitId":"Dethada"},"content":" System.err.println(\"[WARN] \" + message);","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":38,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":39,"author":{"gitId":"Dethada"},"content":" public static void error(String message) {","lastModifiedDate":"2024-01-28"},{"lineNumber":40,"author":{"gitId":"Dethada"},"content":" if (Logger.logLevel.compareTo(LogLevel.ERROR) \u003c\u003d 0) {","lastModifiedDate":"2024-01-28"},{"lineNumber":41,"author":{"gitId":"Dethada"},"content":" System.err.println(\"[ERROR] \" + message);","lastModifiedDate":"2024-01-28"},{"lineNumber":42,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":43,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":44,"author":{"gitId":"Dethada"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"Dethada":44}},{"path":"src/test/java/cappy/parser/ParsedInputTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Dethada"},"content":"package cappy.parser;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"Dethada"},"content":"import java.util.Map;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"Dethada"},"content":"import java.util.HashMap;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"Dethada"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"Dethada"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"Dethada"},"content":"import cappy.command.CommandType;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"Dethada"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"Dethada"},"content":"import static org.junit.jupiter.api.Assertions.fail;","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"Dethada"},"content":"public class ParsedInputTest {","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"Dethada"},"content":" @Test","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"Dethada"},"content":" public void numberOfPositionalArguments() {","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"Dethada"},"content":" HashMap\u003cString, String\u003e namedArgs \u003d new HashMap\u003c\u003e();","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"Dethada"},"content":" ArrayList\u003cString\u003e positionalArgs \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"Dethada"},"content":" String[] args \u003d {\"arg1\", \"arg2\", \"arg3\"};","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"Dethada"},"content":" for (String arg : args) {","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"Dethada"},"content":" positionalArgs.add(arg);","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"Dethada"},"content":" ParsedInput parsedInput \u003d new ParsedInput(CommandType.EMPTY, namedArgs, positionalArgs);","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"Dethada"},"content":" assertEquals(positionalArgs.size(), parsedInput.numberOfPositionalArguments());","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"Dethada"},"content":" @Test","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"Dethada"},"content":" public void numberOfNamedArguments() {","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"Dethada"},"content":" HashMap\u003cString, String\u003e namedArgs \u003d new HashMap\u003c\u003e();","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"Dethada"},"content":" HashMap\u003cString, String\u003e iterNamedArgs \u003d new HashMap\u003c\u003e();","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"Dethada"},"content":" ArrayList\u003cString\u003e positionalArgs \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"Dethada"},"content":" namedArgs.put(\"option1\", \"value1\");","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"Dethada"},"content":" namedArgs.put(\"option2\", \"value2\");","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"Dethada"},"content":" namedArgs.put(\"option3\", \"value3\");","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"Dethada"},"content":" for (Map.Entry\u003cString, String\u003e entry : namedArgs.entrySet()) {","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"Dethada"},"content":" iterNamedArgs.put(entry.getKey(), entry.getValue());","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"Dethada"},"content":" ParsedInput parsedInput \u003d new ParsedInput(CommandType.EMPTY, iterNamedArgs, positionalArgs);","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"Dethada"},"content":" assertEquals(iterNamedArgs.size(), parsedInput.numberOfNamedArguments());","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"Dethada"},"content":" @Test","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"Dethada"},"content":" public void hasNamedArgument() {","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"Dethada"},"content":" HashMap\u003cString, String\u003e namedArgs \u003d new HashMap\u003c\u003e();","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"Dethada"},"content":" ArrayList\u003cString\u003e positionalArgs \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"Dethada"},"content":" namedArgs.put(\"option1\", \"value1\");","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"Dethada"},"content":" ParsedInput parsedInput \u003d new ParsedInput(CommandType.EMPTY, namedArgs, positionalArgs);","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"Dethada"},"content":" assertEquals(true, parsedInput.hasNamedArgument(\"option1\"));","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"Dethada"},"content":" assertEquals(false, parsedInput.hasNamedArgument(\"option2\"));","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":50,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":51,"author":{"gitId":"Dethada"},"content":" @Test","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"Dethada"},"content":" public void getNamedArgument() {","lastModifiedDate":"2024-01-29"},{"lineNumber":53,"author":{"gitId":"Dethada"},"content":" HashMap\u003cString, String\u003e namedArgs \u003d new HashMap\u003c\u003e();","lastModifiedDate":"2024-01-29"},{"lineNumber":54,"author":{"gitId":"Dethada"},"content":" ArrayList\u003cString\u003e positionalArgs \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-29"},{"lineNumber":55,"author":{"gitId":"Dethada"},"content":" namedArgs.put(\"option1\", \"value1\");","lastModifiedDate":"2024-01-29"},{"lineNumber":56,"author":{"gitId":"Dethada"},"content":" ParsedInput parsedInput \u003d new ParsedInput(CommandType.EMPTY, namedArgs, positionalArgs);","lastModifiedDate":"2024-01-29"},{"lineNumber":57,"author":{"gitId":"Dethada"},"content":" assertEquals(\"value1\", parsedInput.getNamedArgument(\"option1\"));","lastModifiedDate":"2024-01-29"},{"lineNumber":58,"author":{"gitId":"Dethada"},"content":" assertEquals(null, parsedInput.getNamedArgument(\"option2\"));","lastModifiedDate":"2024-01-29"},{"lineNumber":59,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":60,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":61,"author":{"gitId":"Dethada"},"content":" @Test","lastModifiedDate":"2024-01-29"},{"lineNumber":62,"author":{"gitId":"Dethada"},"content":" public void getPositionalArgument() {","lastModifiedDate":"2024-01-29"},{"lineNumber":63,"author":{"gitId":"Dethada"},"content":" HashMap\u003cString, String\u003e namedArgs \u003d new HashMap\u003c\u003e();","lastModifiedDate":"2024-01-29"},{"lineNumber":64,"author":{"gitId":"Dethada"},"content":" ArrayList\u003cString\u003e positionalArgs \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-29"},{"lineNumber":65,"author":{"gitId":"Dethada"},"content":" positionalArgs.add(\"arg1\");","lastModifiedDate":"2024-01-29"},{"lineNumber":66,"author":{"gitId":"Dethada"},"content":" ParsedInput parsedInput \u003d new ParsedInput(CommandType.EMPTY, namedArgs, positionalArgs);","lastModifiedDate":"2024-01-29"},{"lineNumber":67,"author":{"gitId":"Dethada"},"content":" assertEquals(\"arg1\", parsedInput.getPositionalArgument(0));","lastModifiedDate":"2024-01-29"},{"lineNumber":68,"author":{"gitId":"Dethada"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":69,"author":{"gitId":"Dethada"},"content":" assertEquals(\"\", parsedInput.getPositionalArgument(1));","lastModifiedDate":"2024-01-29"},{"lineNumber":70,"author":{"gitId":"Dethada"},"content":" fail();","lastModifiedDate":"2024-01-29"},{"lineNumber":71,"author":{"gitId":"Dethada"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":72,"author":{"gitId":"Dethada"},"content":" assertEquals(\"Index 1 out of bounds for length 1\", e.getMessage());","lastModifiedDate":"2024-01-29"},{"lineNumber":73,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":74,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":75,"author":{"gitId":"Dethada"},"content":"}","lastModifiedDate":"2024-01-29"},{"lineNumber":76,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"Dethada":76}},{"path":"src/test/java/cappy/parser/ParserTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Dethada"},"content":"package cappy.parser;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"Dethada"},"content":"import java.util.HashMap;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"Dethada"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"Dethada"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"Dethada"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"Dethada"},"content":"import cappy.error.CappyException;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"Dethada"},"content":"import cappy.command.CommandType;","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"Dethada"},"content":"import cappy.task.Todo;","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"Dethada"},"content":"import cappy.task.Deadline;","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"Dethada"},"content":"import cappy.task.Event;","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"Dethada"},"content":"import cappy.task.Task;","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"Dethada"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"Dethada"},"content":"import static org.junit.jupiter.api.Assertions.fail;","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"Dethada"},"content":"import static cappy.parser.Parser.DATE_TIME_FORMAT;","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"Dethada"},"content":"public class ParserTest {","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"Dethada"},"content":" private static final LocalDateTime DUE \u003d LocalDateTime.parse(\"2023-01-29T12:00\", DATE_TIME_FORMAT);","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"Dethada"},"content":" private static final LocalDateTime FROM \u003d LocalDateTime.parse(\"2023-01-29T12:00\", DATE_TIME_FORMAT);","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"Dethada"},"content":" private static final LocalDateTime TO \u003d LocalDateTime.parse(\"2023-01-30T14:00\", DATE_TIME_FORMAT);","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"Dethada"},"content":" @Test","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"Dethada"},"content":" public void parse_emptyString() throws CappyException {","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"Dethada"},"content":" HashMap\u003cString, String\u003e namedArgs \u003d new HashMap\u003c\u003e();","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"Dethada"},"content":" ArrayList\u003cString\u003e positionalArgs \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"Dethada"},"content":" ParsedInput expectedParsedInput \u003d new ParsedInput(CommandType.EMPTY, namedArgs, positionalArgs);","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"Dethada"},"content":" assertEquals(expectedParsedInput, Parser.parse(\"\"));","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"Dethada"},"content":" @Test","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"Dethada"},"content":" public void parse_invalidCommand() throws CappyException {","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"Dethada"},"content":" HashMap\u003cString, String\u003e namedArgs \u003d new HashMap\u003c\u003e();","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"Dethada"},"content":" ArrayList\u003cString\u003e positionalArgs \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"Dethada"},"content":" ParsedInput expectedParsedInput \u003d new ParsedInput(CommandType.INVALID, namedArgs, positionalArgs);","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"Dethada"},"content":" assertEquals(expectedParsedInput, Parser.parse(\"nonExistentCommand\"));","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"Dethada"},"content":" @Test","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"Dethada"},"content":" public void parse_missingValueForOption() {","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"Dethada"},"content":" HashMap\u003cString, String\u003e namedArgs \u003d new HashMap\u003c\u003e();","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"Dethada"},"content":" ArrayList\u003cString\u003e positionalArgs \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"Dethada"},"content":" ParsedInput expectedParsedInput \u003d new ParsedInput(CommandType.DEADLINE, namedArgs, positionalArgs);","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"Dethada"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"Dethada"},"content":" assertEquals(expectedParsedInput, Parser.parse(\"deadline description /by\"));","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"Dethada"},"content":" fail();","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"Dethada"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"Dethada"},"content":" assertEquals(\"Missing value for argument /by\", e.getMessage());","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":50,"author":{"gitId":"Dethada"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":51,"author":{"gitId":"Dethada"},"content":" assertEquals(expectedParsedInput, Parser.parse(\"deadline description /by \"));","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"Dethada"},"content":" fail();","lastModifiedDate":"2024-01-29"},{"lineNumber":53,"author":{"gitId":"Dethada"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":54,"author":{"gitId":"Dethada"},"content":" assertEquals(\"Missing value for argument /by\", e.getMessage());","lastModifiedDate":"2024-01-29"},{"lineNumber":55,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":56,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":57,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":58,"author":{"gitId":"Dethada"},"content":" @Test","lastModifiedDate":"2024-01-29"},{"lineNumber":59,"author":{"gitId":"Dethada"},"content":" public void parse_valueForOption() throws CappyException {","lastModifiedDate":"2024-01-29"},{"lineNumber":60,"author":{"gitId":"Dethada"},"content":" HashMap\u003cString, String\u003e namedArgs \u003d new HashMap\u003c\u003e();","lastModifiedDate":"2024-01-29"},{"lineNumber":61,"author":{"gitId":"Dethada"},"content":" namedArgs.put(\"by\",\"2023-01-29T12:00\");","lastModifiedDate":"2024-01-29"},{"lineNumber":62,"author":{"gitId":"Dethada"},"content":" ArrayList\u003cString\u003e positionalArgs \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-29"},{"lineNumber":63,"author":{"gitId":"Dethada"},"content":" positionalArgs.add(\"description\");","lastModifiedDate":"2024-01-29"},{"lineNumber":64,"author":{"gitId":"Dethada"},"content":" ParsedInput expectedParsedInput \u003d new ParsedInput(CommandType.DEADLINE, namedArgs, positionalArgs);","lastModifiedDate":"2024-01-29"},{"lineNumber":65,"author":{"gitId":"Dethada"},"content":" assertEquals(expectedParsedInput, Parser.parse(\"deadline description /by 2023-01-29T12:00\"));","lastModifiedDate":"2024-01-29"},{"lineNumber":66,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":67,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":68,"author":{"gitId":"Dethada"},"content":" @Test","lastModifiedDate":"2024-01-29"},{"lineNumber":69,"author":{"gitId":"Dethada"},"content":" public void parse_positionalArg() throws CappyException {","lastModifiedDate":"2024-01-29"},{"lineNumber":70,"author":{"gitId":"Dethada"},"content":" HashMap\u003cString, String\u003e namedArgs \u003d new HashMap\u003c\u003e();","lastModifiedDate":"2024-01-29"},{"lineNumber":71,"author":{"gitId":"Dethada"},"content":" ArrayList\u003cString\u003e positionalArgs \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-29"},{"lineNumber":72,"author":{"gitId":"Dethada"},"content":" positionalArgs.add(\"description\");","lastModifiedDate":"2024-01-29"},{"lineNumber":73,"author":{"gitId":"Dethada"},"content":" ParsedInput expectedParsedInput \u003d new ParsedInput(CommandType.TODO, namedArgs, positionalArgs);","lastModifiedDate":"2024-01-29"},{"lineNumber":74,"author":{"gitId":"Dethada"},"content":" assertEquals(expectedParsedInput, Parser.parse(\"todo description\"));","lastModifiedDate":"2024-01-29"},{"lineNumber":75,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":76,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":77,"author":{"gitId":"Dethada"},"content":" @Test","lastModifiedDate":"2024-01-29"},{"lineNumber":78,"author":{"gitId":"Dethada"},"content":" public void parseCsvLine_todo() throws CappyException {","lastModifiedDate":"2024-01-29"},{"lineNumber":79,"author":{"gitId":"Dethada"},"content":" String csvLine \u003d \"T,0,description,,\";","lastModifiedDate":"2024-01-29"},{"lineNumber":80,"author":{"gitId":"Dethada"},"content":" Todo todo \u003d new Todo(\"description\", false);","lastModifiedDate":"2024-01-29"},{"lineNumber":81,"author":{"gitId":"Dethada"},"content":" assertEquals(todo, Parser.parseCsvLine(csvLine));","lastModifiedDate":"2024-01-29"},{"lineNumber":82,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":83,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":84,"author":{"gitId":"Dethada"},"content":" @Test","lastModifiedDate":"2024-01-29"},{"lineNumber":85,"author":{"gitId":"Dethada"},"content":" public void parseCsvLine_deadline() throws CappyException {","lastModifiedDate":"2024-01-29"},{"lineNumber":86,"author":{"gitId":"Dethada"},"content":" String csvLine \u003d \"D,0,description,2023-01-29T12:00,\";","lastModifiedDate":"2024-01-29"},{"lineNumber":87,"author":{"gitId":"Dethada"},"content":" Deadline deadline \u003d new Deadline(\"description\", false, DUE);","lastModifiedDate":"2024-01-29"},{"lineNumber":88,"author":{"gitId":"Dethada"},"content":" assertEquals(deadline, Parser.parseCsvLine(csvLine));","lastModifiedDate":"2024-01-29"},{"lineNumber":89,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":90,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":91,"author":{"gitId":"Dethada"},"content":" @Test","lastModifiedDate":"2024-01-29"},{"lineNumber":92,"author":{"gitId":"Dethada"},"content":" public void parseCsvLine_event() throws CappyException {","lastModifiedDate":"2024-01-29"},{"lineNumber":93,"author":{"gitId":"Dethada"},"content":" String csvLine \u003d \"E,0,description,2023-01-29T12:00,2023-01-30T14:00\";","lastModifiedDate":"2024-01-29"},{"lineNumber":94,"author":{"gitId":"Dethada"},"content":" Event event \u003d new Event(\"description\", false, FROM, TO);","lastModifiedDate":"2024-01-29"},{"lineNumber":95,"author":{"gitId":"Dethada"},"content":" assertEquals(event, Parser.parseCsvLine(csvLine));","lastModifiedDate":"2024-01-29"},{"lineNumber":96,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":97,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":98,"author":{"gitId":"Dethada"},"content":" @Test","lastModifiedDate":"2024-01-29"},{"lineNumber":99,"author":{"gitId":"Dethada"},"content":" public void parseCsvLine_missingField() {","lastModifiedDate":"2024-01-29"},{"lineNumber":100,"author":{"gitId":"Dethada"},"content":" String csvLine \u003d \"T,0\";","lastModifiedDate":"2024-01-29"},{"lineNumber":101,"author":{"gitId":"Dethada"},"content":" Task task \u003d new Todo(\"description\", false);","lastModifiedDate":"2024-01-29"},{"lineNumber":102,"author":{"gitId":"Dethada"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":103,"author":{"gitId":"Dethada"},"content":" assertEquals(task, Parser.parseCsvLine(csvLine));","lastModifiedDate":"2024-01-29"},{"lineNumber":104,"author":{"gitId":"Dethada"},"content":" fail();","lastModifiedDate":"2024-01-29"},{"lineNumber":105,"author":{"gitId":"Dethada"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":106,"author":{"gitId":"Dethada"},"content":" assertEquals(\"Invalid storage format!\", e.getMessage());","lastModifiedDate":"2024-01-29"},{"lineNumber":107,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":108,"author":{"gitId":"Dethada"},"content":" csvLine \u003d \"D,0,description,\";","lastModifiedDate":"2024-01-29"},{"lineNumber":109,"author":{"gitId":"Dethada"},"content":" task \u003d new Deadline(\"description\", false, DUE);","lastModifiedDate":"2024-01-29"},{"lineNumber":110,"author":{"gitId":"Dethada"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":111,"author":{"gitId":"Dethada"},"content":" assertEquals(task, Parser.parseCsvLine(csvLine));","lastModifiedDate":"2024-01-29"},{"lineNumber":112,"author":{"gitId":"Dethada"},"content":" fail();","lastModifiedDate":"2024-01-29"},{"lineNumber":113,"author":{"gitId":"Dethada"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":114,"author":{"gitId":"Dethada"},"content":" assertEquals(\"Invalid storage format!\", e.getMessage());","lastModifiedDate":"2024-01-29"},{"lineNumber":115,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":116,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":117,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":118,"author":{"gitId":"Dethada"},"content":" @Test","lastModifiedDate":"2024-01-29"},{"lineNumber":119,"author":{"gitId":"Dethada"},"content":" public void parseCsvLine_invalidDateFormat() {","lastModifiedDate":"2024-01-29"},{"lineNumber":120,"author":{"gitId":"Dethada"},"content":" String csvLine \u003d \"D,0,description,invalid date,\";","lastModifiedDate":"2024-01-29"},{"lineNumber":121,"author":{"gitId":"Dethada"},"content":" Deadline task \u003d new Deadline(\"description\", false, DUE);","lastModifiedDate":"2024-01-29"},{"lineNumber":122,"author":{"gitId":"Dethada"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":123,"author":{"gitId":"Dethada"},"content":" assertEquals(task, Parser.parseCsvLine(csvLine));","lastModifiedDate":"2024-01-29"},{"lineNumber":124,"author":{"gitId":"Dethada"},"content":" fail();","lastModifiedDate":"2024-01-29"},{"lineNumber":125,"author":{"gitId":"Dethada"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":126,"author":{"gitId":"Dethada"},"content":" assertEquals(\"Invalid storage format!\", e.getMessage());","lastModifiedDate":"2024-01-29"},{"lineNumber":127,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":128,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":129,"author":{"gitId":"Dethada"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"Dethada":129}},{"path":"src/test/java/cappy/task/EventTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Dethada"},"content":"package cappy.task;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"Dethada"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"Dethada"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"Dethada"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"Dethada"},"content":"import static cappy.parser.Parser.DATE_TIME_FORMAT;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"Dethada"},"content":"public class EventTest {","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"Dethada"},"content":" @Test","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"Dethada"},"content":" public void testStringConversion() {","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"Dethada"},"content":" LocalDateTime from \u003d LocalDateTime.parse(\"2023-01-29T12:00\", DATE_TIME_FORMAT);","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"Dethada"},"content":" LocalDateTime to \u003d LocalDateTime.parse(\"2023-01-30T14:00\", DATE_TIME_FORMAT);","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"Dethada"},"content":" Event event \u003d new Event(\"test\", from, to);","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"Dethada"},"content":" assertEquals(\"[E][ ] test (from: 2023-01-29T12:00 to: 2023-01-30T14:00)\", event.toString());","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"Dethada"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"Dethada":17}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"Dethada"},"content":"list","lastModifiedDate":"2024-01-20"},{"lineNumber":2,"author":{"gitId":"Dethada"},"content":"todo borrow book","lastModifiedDate":"2024-01-20"},{"lineNumber":3,"author":{"gitId":"Dethada"},"content":"list","lastModifiedDate":"2024-01-20"},{"lineNumber":4,"author":{"gitId":"Dethada"},"content":"deadline return book /by Sunday","lastModifiedDate":"2024-01-20"},{"lineNumber":5,"author":{"gitId":"Dethada"},"content":"list","lastModifiedDate":"2024-01-20"},{"lineNumber":6,"author":{"gitId":"Dethada"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2024-01-20"},{"lineNumber":7,"author":{"gitId":"Dethada"},"content":"list","lastModifiedDate":"2024-01-20"},{"lineNumber":8,"author":{"gitId":"Dethada"},"content":"deadline do homework /by no idea :-p","lastModifiedDate":"2024-01-20"},{"lineNumber":9,"author":{"gitId":"Dethada"},"content":"list","lastModifiedDate":"2024-01-20"},{"lineNumber":10,"author":{"gitId":"Dethada"},"content":"mark 1","lastModifiedDate":"2024-01-20"},{"lineNumber":11,"author":{"gitId":"Dethada"},"content":"list","lastModifiedDate":"2024-01-20"},{"lineNumber":12,"author":{"gitId":"Dethada"},"content":"mark 1","lastModifiedDate":"2024-01-20"},{"lineNumber":13,"author":{"gitId":"Dethada"},"content":"list","lastModifiedDate":"2024-01-20"},{"lineNumber":14,"author":{"gitId":"Dethada"},"content":"unmark 1","lastModifiedDate":"2024-01-20"},{"lineNumber":15,"author":{"gitId":"Dethada"},"content":"list","lastModifiedDate":"2024-01-20"},{"lineNumber":16,"author":{"gitId":"Dethada"},"content":"delete 1","lastModifiedDate":"2024-01-26"},{"lineNumber":17,"author":{"gitId":"Dethada"},"content":"list","lastModifiedDate":"2024-01-26"},{"lineNumber":18,"author":{"gitId":"Dethada"},"content":"something that does not exist","lastModifiedDate":"2024-01-21"},{"lineNumber":19,"author":{"gitId":"Dethada"},"content":"mark","lastModifiedDate":"2024-01-21"},{"lineNumber":20,"author":{"gitId":"Dethada"},"content":"mark a","lastModifiedDate":"2024-01-21"},{"lineNumber":21,"author":{"gitId":"Dethada"},"content":"mark 9999999","lastModifiedDate":"2024-01-21"},{"lineNumber":22,"author":{"gitId":"Dethada"},"content":"unmark","lastModifiedDate":"2024-01-21"},{"lineNumber":23,"author":{"gitId":"Dethada"},"content":"unmark a","lastModifiedDate":"2024-01-21"},{"lineNumber":24,"author":{"gitId":"Dethada"},"content":"unmark 9999999","lastModifiedDate":"2024-01-21"},{"lineNumber":25,"author":{"gitId":"Dethada"},"content":"todo","lastModifiedDate":"2024-01-21"},{"lineNumber":26,"author":{"gitId":"Dethada"},"content":"deadline","lastModifiedDate":"2024-01-21"},{"lineNumber":27,"author":{"gitId":"Dethada"},"content":"deadline a","lastModifiedDate":"2024-01-21"},{"lineNumber":28,"author":{"gitId":"Dethada"},"content":"deadline a /by","lastModifiedDate":"2024-01-21"},{"lineNumber":29,"author":{"gitId":"Dethada"},"content":"event","lastModifiedDate":"2024-01-21"},{"lineNumber":30,"author":{"gitId":"Dethada"},"content":"event a","lastModifiedDate":"2024-01-21"},{"lineNumber":31,"author":{"gitId":"Dethada"},"content":"event a /from /to","lastModifiedDate":"2024-01-21"},{"lineNumber":32,"author":{"gitId":"Dethada"},"content":"event a /from 2pm /to","lastModifiedDate":"2024-01-21"},{"lineNumber":33,"author":{"gitId":"Dethada"},"content":"event a /from /to 4pm","lastModifiedDate":"2024-01-21"},{"lineNumber":34,"author":{"gitId":"Dethada"},"content":"event a /from /to 4pm","lastModifiedDate":"2024-01-21"},{"lineNumber":35,"author":{"gitId":"Dethada"},"content":"delete","lastModifiedDate":"2024-01-26"},{"lineNumber":36,"author":{"gitId":"Dethada"},"content":"delete a","lastModifiedDate":"2024-01-26"},{"lineNumber":37,"author":{"gitId":"Dethada"},"content":"delete 9999999","lastModifiedDate":"2024-01-26"},{"lineNumber":38,"author":{"gitId":"Dethada"},"content":"bye","lastModifiedDate":"2024-01-20"}],"authorContributionMap":{"Dethada":38}},{"path":"text-ui-test/runtest.sh","fileType":"sh","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"#!/usr/bin/env bash","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"# create bin directory if it doesn\u0027t exist","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"if [ ! -d \"../bin\" ]","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":" mkdir ../bin","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"# delete output from previous run","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"if [ -e \"./ACTUAL.TXT\" ]","lastModifiedDate":"2020-05-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":" rm ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"Dethada"},"content":"# delete data from previous run","lastModifiedDate":"2024-01-27"},{"lineNumber":16,"author":{"gitId":"Dethada"},"content":"if [ -e \"./cappy.csv\" ]","lastModifiedDate":"2024-01-27"},{"lineNumber":17,"author":{"gitId":"Dethada"},"content":"then","lastModifiedDate":"2024-01-27"},{"lineNumber":18,"author":{"gitId":"Dethada"},"content":" rm cappy.csv","lastModifiedDate":"2024-01-27"},{"lineNumber":19,"author":{"gitId":"Dethada"},"content":"fi","lastModifiedDate":"2024-01-27"},{"lineNumber":20,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":21,"author":{"gitId":"-"},"content":"# compile the code into the bin folder, terminates if error occurred","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"Dethada"},"content":"if ! javac -cp ../src/main/java/cappy -Xlint:none -d ../bin ../src/main/java/cappy/**/*.java","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" echo \"********** BUILD FAILURE **********\"","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" exit 1","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"# run the program, feed commands from input.txt file and redirect the output to the ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"Dethada"},"content":"java -classpath ../bin Cappy \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":"# convert to UNIX format","lastModifiedDate":"2020-05-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":"cp EXPECTED.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":"dos2unix ACTUAL.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":"# compare the output to the expected output","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":"diff ACTUAL.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":"if [ $? -eq 0 ]","lastModifiedDate":"2020-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":" echo \"Test result: PASSED\"","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":" exit 0","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":"else","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":" echo \"Test result: FAILED\"","lastModifiedDate":"2020-05-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":" exit 1","lastModifiedDate":"2020-05-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"Dethada":8,"-":36}}] +[{"path":"build.gradle","fileType":"gradle","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"plugins {","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":" id \u0027java\u0027","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":" id \u0027application\u0027","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":" id \u0027com.github.johnrengelman.shadow\u0027 version \u00277.1.2\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"repositories {","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":" mavenCentral()","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"dependencies {","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":" testImplementation group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-api\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":" testRuntimeOnly group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-engine\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"Dethada"},"content":" showStandardStreams \u003d true","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"Dethada"},"content":" mainClass.set(\"cappy.Cappy\")","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"Dethada"},"content":" archiveBaseName \u003d \"Cappy\"","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":"run{","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"Dethada":3,"-":39}},{"path":"src/main/java/cappy/Cappy.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Dethada"},"content":"package cappy;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"Dethada"},"content":"import cappy.command.CommandType;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"Dethada"},"content":"import cappy.error.CappyException;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"Dethada"},"content":"import cappy.parser.ParsedInput;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"Dethada"},"content":"import cappy.parser.Parser;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"Dethada"},"content":"import cappy.storage.Storage;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"Dethada"},"content":"import cappy.task.TaskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"Dethada"},"content":"import cappy.ui.Ui;","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"Dethada"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"Dethada"},"content":"public class Cappy {","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"Dethada"},"content":" private static TaskList TASKS;","lastModifiedDate":"2024-01-26"},{"lineNumber":15,"author":{"gitId":"Dethada"},"content":" private static final String STORAGE_PATH \u003d \"./cappy.csv\";","lastModifiedDate":"2024-01-26"},{"lineNumber":16,"author":{"gitId":"Dethada"},"content":" private static final Ui UI \u003d new Ui();","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"Dethada"},"content":" private static Storage storage;","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-20"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2019-07-29"},{"lineNumber":20,"author":{"gitId":"Dethada"},"content":" UI.showBanner();","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"Dethada"},"content":" UI.showGreetings();","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"Dethada"},"content":" try {","lastModifiedDate":"2024-01-26"},{"lineNumber":23,"author":{"gitId":"Dethada"},"content":" storage \u003d new Storage(STORAGE_PATH);","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"Dethada"},"content":" TASKS \u003d TaskList.load(storage);","lastModifiedDate":"2024-01-27"},{"lineNumber":25,"author":{"gitId":"Dethada"},"content":" inputLoop();","lastModifiedDate":"2024-01-21"},{"lineNumber":26,"author":{"gitId":"Dethada"},"content":" storage.close();","lastModifiedDate":"2024-01-26"},{"lineNumber":27,"author":{"gitId":"Dethada"},"content":" } catch (IOException | CappyException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"Dethada"},"content":" UI.showError(e);","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"Dethada"},"content":" } finally {","lastModifiedDate":"2024-01-26"},{"lineNumber":30,"author":{"gitId":"Dethada"},"content":" Cappy.UI.close();","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-20"},{"lineNumber":32,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":33,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-20"},{"lineNumber":34,"author":{"gitId":"Dethada"},"content":" private static void inputLoop() {","lastModifiedDate":"2024-01-21"},{"lineNumber":35,"author":{"gitId":"Dethada"},"content":" String input \u003d \"\";","lastModifiedDate":"2024-01-21"},{"lineNumber":36,"author":{"gitId":"Dethada"},"content":" while (true) {","lastModifiedDate":"2024-01-21"},{"lineNumber":37,"author":{"gitId":"Dethada"},"content":" input \u003d UI.getInput();","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"Dethada"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":39,"author":{"gitId":"Dethada"},"content":" ParsedInput parsedInput \u003d Parser.parse(input);","lastModifiedDate":"2024-01-28"},{"lineNumber":40,"author":{"gitId":"Dethada"},"content":" parsedInput.executeCommand(TASKS, UI, storage);","lastModifiedDate":"2024-01-28"},{"lineNumber":41,"author":{"gitId":"Dethada"},"content":" if (parsedInput.getCommandType() \u003d\u003d CommandType.BYE) {","lastModifiedDate":"2024-01-28"},{"lineNumber":42,"author":{"gitId":"Dethada"},"content":" break;","lastModifiedDate":"2024-01-21"},{"lineNumber":43,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":44,"author":{"gitId":"Dethada"},"content":" } catch (IOException | CappyException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"Dethada"},"content":" UI.showError(e);","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-20"},{"lineNumber":47,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":49,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"Dethada":46,"-":3}},{"path":"src/main/java/cappy/command/ByeCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Dethada"},"content":"package cappy.command;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"Dethada"},"content":"import cappy.error.CappyException;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"Dethada"},"content":"import cappy.parser.ParsedInput;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"Dethada"},"content":"import cappy.storage.Storage;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"Dethada"},"content":"import cappy.task.TaskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"Dethada"},"content":"import cappy.ui.Ui;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"Dethada"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"Dethada"},"content":"public class ByeCommand extends Command {","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"Dethada"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"Dethada"},"content":" * Shows an exit message in the user interface.","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"Dethada"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"Dethada"},"content":" * @param tasks The task list that stores the tasks.","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"Dethada"},"content":" * @param ui The user interface for interaction with the user.","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"Dethada"},"content":" * @param storage The storage for reading and writing task data.","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"Dethada"},"content":" * @param input The parsed user input.","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"Dethada"},"content":" * @throws CappyException If there is an application-specific exception during task execution.","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"Dethada"},"content":" * @throws IOException If an I/O error occurs while interacting with the storage.","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"Dethada"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"Dethada"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"Dethada"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage, ParsedInput input)","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"Dethada"},"content":" throws CappyException, IOException {","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"Dethada"},"content":" ui.showExit();","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"Dethada"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"Dethada":27}},{"path":"src/main/java/cappy/command/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Dethada"},"content":"package cappy.command;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"Dethada"},"content":"import cappy.error.CappyException;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"Dethada"},"content":"import cappy.parser.ParsedInput;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"Dethada"},"content":"import cappy.storage.Storage;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"Dethada"},"content":"import cappy.task.TaskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"Dethada"},"content":"import cappy.ui.Ui;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"Dethada"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"Dethada"},"content":"/**","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"Dethada"},"content":" * Abstract class representing a command in the Cappy application.","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"Dethada"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"Dethada"},"content":" * \u003cp\u003eThe {@code Command} class serves as the base class for all specific command implementations.","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"Dethada"},"content":" * It declares an abstract method {@code execute} that must be implemented by concrete subclasses.","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"Dethada"},"content":" * Each concrete command class encapsulates a specific operation that can be performed.","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"Dethada"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"Dethada"},"content":"public abstract class Command {","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"Dethada"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"Dethada"},"content":" * Executes the command with the provided task list, user interface, storage, and parsed input.","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"Dethada"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"Dethada"},"content":" * @param tasks The task list that stores the tasks.","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"Dethada"},"content":" * @param ui The user interface for interaction with the user.","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"Dethada"},"content":" * @param storage The storage for reading and writing task data.","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"Dethada"},"content":" * @param input The parsed user input.","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"Dethada"},"content":" * @throws CappyException If there is an application-specific exception during task execution.","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"Dethada"},"content":" * @throws IOException If an I/O error occurs while interacting with the storage.","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"Dethada"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"Dethada"},"content":" public abstract void execute(TaskList tasks, Ui ui, Storage storage, ParsedInput input)","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"Dethada"},"content":" throws CappyException, IOException;","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"Dethada"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"Dethada":31}},{"path":"src/main/java/cappy/command/CommandType.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Dethada"},"content":"package cappy.command;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"Dethada"},"content":"/**","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"Dethada"},"content":" * Enumeration representing different command types in the Cappy application.","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"Dethada"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"Dethada"},"content":" * \u003cp\u003eThe {@code CommandType} enum encapsulates various command types that can be performed","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"Dethada"},"content":" * in the Cappy application. Each enum value associates a command string with its corresponding","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"Dethada"},"content":" * concrete command implementation.","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"Dethada"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"Dethada"},"content":"public enum CommandType {","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"Dethada"},"content":" LIST(\"list\", new ListCommand()),","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"Dethada"},"content":" MARK(\"mark\", new MarkCommand()),","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"Dethada"},"content":" UNMARK(\"unmark\", new UnmarkCommand()),","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"Dethada"},"content":" TODO(\"todo\", new TodoCommand()),","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"Dethada"},"content":" DEADLINE(\"deadline\", new DeadlineCommand()),","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"Dethada"},"content":" EVENT(\"event\", new EventCommand()),","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"Dethada"},"content":" DELETE(\"delete\", new DeleteCommand()),","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"Dethada"},"content":" FIND(\"find\", new FindCommand()),","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"Dethada"},"content":" BYE(\"bye\", new ByeCommand()),","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"Dethada"},"content":" EMPTY(\"\", new EmptyCommand()),","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"Dethada"},"content":" INVALID(\"\", new InvalidCommand());","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"Dethada"},"content":" private Command command;","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"Dethada"},"content":" private String commandString;","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"Dethada"},"content":" private CommandType(String commandString, Command command) {","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"Dethada"},"content":" this.commandString \u003d commandString;","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"Dethada"},"content":" this.command \u003d command;","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"Dethada"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"Dethada"},"content":" * Returns the string representation of this enum value.","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"Dethada"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"Dethada"},"content":" * @return The string representation of this enum value.","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"Dethada"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"Dethada"},"content":" public String getCommandString() {","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"Dethada"},"content":" return this.commandString;","lastModifiedDate":"2024-01-28"},{"lineNumber":38,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":39,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":40,"author":{"gitId":"Dethada"},"content":" public Command getCommand() {","lastModifiedDate":"2024-01-28"},{"lineNumber":41,"author":{"gitId":"Dethada"},"content":" return this.command;","lastModifiedDate":"2024-01-28"},{"lineNumber":42,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":43,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":44,"author":{"gitId":"Dethada"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"Dethada"},"content":" * Converts a string to a CommandType. INVALID will be the CommandType returned","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"Dethada"},"content":" * if there are no other matches.","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"Dethada"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"Dethada"},"content":" * @param commandString The string to be converted.","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"Dethada"},"content":" * @return The CommandType of the given string.","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"Dethada"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"Dethada"},"content":" public static CommandType fromString(String commandString) {","lastModifiedDate":"2024-01-28"},{"lineNumber":52,"author":{"gitId":"Dethada"},"content":" for (CommandType command : CommandType.values()) {","lastModifiedDate":"2024-01-28"},{"lineNumber":53,"author":{"gitId":"Dethada"},"content":" if (command.getCommandString().equals(commandString)) {","lastModifiedDate":"2024-01-28"},{"lineNumber":54,"author":{"gitId":"Dethada"},"content":" return command;","lastModifiedDate":"2024-01-28"},{"lineNumber":55,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":56,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":57,"author":{"gitId":"Dethada"},"content":" return INVALID;","lastModifiedDate":"2024-01-28"},{"lineNumber":58,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":59,"author":{"gitId":"Dethada"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"Dethada":59}},{"path":"src/main/java/cappy/command/DeadlineCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Dethada"},"content":"package cappy.command;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"Dethada"},"content":"import cappy.error.CappyException;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"Dethada"},"content":"import cappy.parser.ParsedInput;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"Dethada"},"content":"import cappy.parser.Parser;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"Dethada"},"content":"import cappy.storage.Storage;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"Dethada"},"content":"import cappy.task.Deadline;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"Dethada"},"content":"import cappy.task.TaskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"Dethada"},"content":"import cappy.ui.Ui;","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"Dethada"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"Dethada"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"Dethada"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"Dethada"},"content":"public class DeadlineCommand extends Command {","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"Dethada"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"Dethada"},"content":" * Adds a new Deadline task to the task list, and notify the user through the UI.","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"Dethada"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"Dethada"},"content":" * @param tasks The task list that stores the tasks.","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"Dethada"},"content":" * @param ui The user interface for interaction with the user.","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"Dethada"},"content":" * @param storage The storage for reading and writing task data.","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"Dethada"},"content":" * @param input The parsed user input.","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"Dethada"},"content":" * @throws CappyException If there is an application-specific exception during task execution.","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"Dethada"},"content":" * @throws IOException If an I/O error occurs while interacting with the storage.","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"Dethada"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"Dethada"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"Dethada"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage, ParsedInput input)","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"Dethada"},"content":" throws CappyException, IOException {","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"Dethada"},"content":" if (input.numberOfPositionalArguments() \u003c 1) {","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"Dethada"},"content":" throw new CappyException(\"Please enter the task description.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"Dethada"},"content":" } else if (!input.hasNamedArgument(\"by\")) {","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"Dethada"},"content":" throw new CappyException(","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"Dethada"},"content":" \"Please specify the due date of the deadline task using /by [Date Time].\");","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":35,"author":{"gitId":"Dethada"},"content":" String description \u003d String.join(\" \", input.getPositionalArguments());","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"Dethada"},"content":" String dueString \u003d input.getNamedArgument(\"by\");","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"Dethada"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":38,"author":{"gitId":"Dethada"},"content":" LocalDateTime due \u003d Parser.parseDateTime(dueString);","lastModifiedDate":"2024-01-28"},{"lineNumber":39,"author":{"gitId":"Dethada"},"content":" Deadline task \u003d new Deadline(description, due);","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"Dethada"},"content":" tasks.addTask(task);","lastModifiedDate":"2024-01-28"},{"lineNumber":41,"author":{"gitId":"Dethada"},"content":" ui.showAddedTask(task, tasks);","lastModifiedDate":"2024-01-28"},{"lineNumber":42,"author":{"gitId":"Dethada"},"content":" tasks.save();","lastModifiedDate":"2024-01-28"},{"lineNumber":43,"author":{"gitId":"Dethada"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":44,"author":{"gitId":"Dethada"},"content":" throw new CappyException(\"Please use the correct datetime format.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":46,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":47,"author":{"gitId":"Dethada"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"Dethada":47}},{"path":"src/main/java/cappy/command/DeleteCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Dethada"},"content":"package cappy.command;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"Dethada"},"content":"import cappy.error.CappyException;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"Dethada"},"content":"import cappy.parser.ParsedInput;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"Dethada"},"content":"import cappy.storage.Storage;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"Dethada"},"content":"import cappy.task.Task;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"Dethada"},"content":"import cappy.task.TaskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"Dethada"},"content":"import cappy.ui.Ui;","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"Dethada"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"Dethada"},"content":"public class DeleteCommand extends Command {","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"Dethada"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"Dethada"},"content":" * Deletes the task at the given index from the task list, and notify the user through the UI.","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"Dethada"},"content":" * The index is retrieved from the parsed user input.","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"Dethada"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"Dethada"},"content":" * @param tasks The task list that stores the tasks.","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"Dethada"},"content":" * @param ui The user interface for interaction with the user.","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"Dethada"},"content":" * @param storage The storage for reading and writing task data.","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"Dethada"},"content":" * @param input The parsed user input.","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"Dethada"},"content":" * @throws CappyException If there is an application-specific exception during task execution.","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"Dethada"},"content":" * @throws IOException If an I/O error occurs while interacting with the storage.","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"Dethada"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"Dethada"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"Dethada"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage, ParsedInput input)","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"Dethada"},"content":" throws CappyException, IOException {","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"Dethada"},"content":" if (input.numberOfPositionalArguments() \u003c 1) {","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"Dethada"},"content":" throw new CappyException(\"Please enter an index.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"Dethada"},"content":" String indexStr \u003d input.getPositionalArgument(0);","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"Dethada"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"Dethada"},"content":" int index \u003d Integer.parseInt(indexStr);","lastModifiedDate":"2024-01-28"},{"lineNumber":33,"author":{"gitId":"Dethada"},"content":" if (!tasks.validIndex(index)) {","lastModifiedDate":"2024-01-28"},{"lineNumber":34,"author":{"gitId":"Dethada"},"content":" throw new CappyException(\"Please enter a valid index.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"Dethada"},"content":" Task task \u003d tasks.getTask(index);","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"Dethada"},"content":" tasks.removeTask(index);","lastModifiedDate":"2024-01-28"},{"lineNumber":38,"author":{"gitId":"Dethada"},"content":" String[] messages \u003d {","lastModifiedDate":"2024-01-28"},{"lineNumber":39,"author":{"gitId":"Dethada"},"content":" \"Noted. I\u0027ve removed this task:\",","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"Dethada"},"content":" task.toString(),","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"Dethada"},"content":" \"Now you have \" + tasks.size() + \" tasks in the list.\"","lastModifiedDate":"2024-01-28"},{"lineNumber":42,"author":{"gitId":"Dethada"},"content":" };","lastModifiedDate":"2024-01-28"},{"lineNumber":43,"author":{"gitId":"Dethada"},"content":" ui.show(messages);","lastModifiedDate":"2024-01-28"},{"lineNumber":44,"author":{"gitId":"Dethada"},"content":" tasks.save();","lastModifiedDate":"2024-01-28"},{"lineNumber":45,"author":{"gitId":"Dethada"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":46,"author":{"gitId":"Dethada"},"content":" throw new CappyException(\"Please enter a valid index.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":48,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":49,"author":{"gitId":"Dethada"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"Dethada":49}},{"path":"src/main/java/cappy/command/EmptyCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Dethada"},"content":"package cappy.command;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"Dethada"},"content":"import cappy.error.CappyException;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"Dethada"},"content":"import cappy.parser.ParsedInput;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"Dethada"},"content":"import cappy.storage.Storage;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"Dethada"},"content":"import cappy.task.TaskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"Dethada"},"content":"import cappy.ui.Ui;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"Dethada"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"Dethada"},"content":"public class EmptyCommand extends Command {","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"Dethada"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"Dethada"},"content":" * An empty command does nothing.","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"Dethada"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"Dethada"},"content":" * @param tasks The task list that stores the tasks.","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"Dethada"},"content":" * @param ui The user interface for interaction with the user.","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"Dethada"},"content":" * @param storage The storage for reading and writing task data.","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"Dethada"},"content":" * @param input The parsed user input.","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"Dethada"},"content":" * @throws CappyException If there is an application-specific exception during task execution.","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"Dethada"},"content":" * @throws IOException If an I/O error occurs while interacting with the storage.","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"Dethada"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"Dethada"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"Dethada"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage, ParsedInput input)","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"Dethada"},"content":" throws CappyException, IOException {}","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"Dethada"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"Dethada":25}},{"path":"src/main/java/cappy/command/EventCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Dethada"},"content":"package cappy.command;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"Dethada"},"content":"import cappy.error.CappyException;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"Dethada"},"content":"import cappy.parser.ParsedInput;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"Dethada"},"content":"import cappy.parser.Parser;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"Dethada"},"content":"import cappy.storage.Storage;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"Dethada"},"content":"import cappy.task.Event;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"Dethada"},"content":"import cappy.task.TaskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"Dethada"},"content":"import cappy.ui.Ui;","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"Dethada"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"Dethada"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"Dethada"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"Dethada"},"content":"public class EventCommand extends Command {","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"Dethada"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"Dethada"},"content":" * Adds a new Event task to the task list, and notify the user through the UI.","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"Dethada"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"Dethada"},"content":" * @param tasks The task list that stores the tasks.","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"Dethada"},"content":" * @param ui The user interface for interaction with the user.","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"Dethada"},"content":" * @param storage The storage for reading and writing task data.","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"Dethada"},"content":" * @param input The parsed user input.","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"Dethada"},"content":" * @throws CappyException If there is an application-specific exception during task execution.","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"Dethada"},"content":" * @throws IOException If an I/O error occurs while interacting with the storage.","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"Dethada"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"Dethada"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"Dethada"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage, ParsedInput input)","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"Dethada"},"content":" throws CappyException, IOException {","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"Dethada"},"content":" if (input.numberOfPositionalArguments() \u003c 1) {","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"Dethada"},"content":" throw new CappyException(\"Please enter the task description.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"Dethada"},"content":" } else if (!input.hasNamedArgument(\"from\") || !input.hasNamedArgument(\"to\")) {","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"Dethada"},"content":" throw new CappyException(","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"Dethada"},"content":" \"Please specify the duration of the event using /from [Date Time] /to [Date\"","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"Dethada"},"content":" + \" Time].\");","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"Dethada"},"content":" String description \u003d String.join(\" \", input.getPositionalArguments());","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"Dethada"},"content":" String fromString \u003d input.getNamedArgument(\"from\");","lastModifiedDate":"2024-01-28"},{"lineNumber":38,"author":{"gitId":"Dethada"},"content":" String toString \u003d input.getNamedArgument(\"to\");","lastModifiedDate":"2024-01-28"},{"lineNumber":39,"author":{"gitId":"Dethada"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":40,"author":{"gitId":"Dethada"},"content":" LocalDateTime from \u003d Parser.parseDateTime(fromString);","lastModifiedDate":"2024-01-28"},{"lineNumber":41,"author":{"gitId":"Dethada"},"content":" LocalDateTime to \u003d Parser.parseDateTime(toString);","lastModifiedDate":"2024-01-28"},{"lineNumber":42,"author":{"gitId":"Dethada"},"content":" Event task \u003d new Event(description, from, to);","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"Dethada"},"content":" tasks.addTask(task);","lastModifiedDate":"2024-01-28"},{"lineNumber":44,"author":{"gitId":"Dethada"},"content":" ui.showAddedTask(task, tasks);","lastModifiedDate":"2024-01-28"},{"lineNumber":45,"author":{"gitId":"Dethada"},"content":" tasks.save();","lastModifiedDate":"2024-01-28"},{"lineNumber":46,"author":{"gitId":"Dethada"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":47,"author":{"gitId":"Dethada"},"content":" throw new CappyException(\"Please use the correct datetime format.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":49,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":50,"author":{"gitId":"Dethada"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"Dethada":50}},{"path":"src/main/java/cappy/command/FindCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Dethada"},"content":"package cappy.command;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"Dethada"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"Dethada"},"content":"import cappy.task.Task;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"Dethada"},"content":"import cappy.task.TaskList;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"Dethada"},"content":"import cappy.ui.Ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"Dethada"},"content":"import cappy.storage.Storage;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"Dethada"},"content":"import cappy.parser.ParsedInput;","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"Dethada"},"content":"import cappy.error.CappyException;","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"Dethada"},"content":"public class FindCommand extends Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"Dethada"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"Dethada"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage, ParsedInput input) throws CappyException, IOException {","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"Dethada"},"content":" if (input.numberOfPositionalArguments() \u003c 1) {","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"Dethada"},"content":" throw new CappyException(\"Please enter a keyword.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"Dethada"},"content":" String keyword \u003d input.getPositionalArgument(0);","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"Dethada"},"content":" TaskList results \u003d tasks.search(keyword);","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"Dethada"},"content":" if (results.size() \u003d\u003d 0) {","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"Dethada"},"content":" ui.show(\"No matches found :(\");","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"Dethada"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"Dethada"},"content":" String[] messages \u003d new String[results.size() + 1];","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"Dethada"},"content":" messages[0] \u003d \" Here are the matching tasks in your list:\";","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"Dethada"},"content":" System.arraycopy(results.toString().split(\"\\n\"), 0, messages, 1, results.size());","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"Dethada"},"content":" ui.show(messages);","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"Dethada"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"Dethada":31}},{"path":"src/main/java/cappy/command/InvalidCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Dethada"},"content":"package cappy.command;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"Dethada"},"content":"import cappy.error.CappyException;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"Dethada"},"content":"import cappy.parser.ParsedInput;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"Dethada"},"content":"import cappy.storage.Storage;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"Dethada"},"content":"import cappy.task.TaskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"Dethada"},"content":"import cappy.ui.Ui;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"Dethada"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"Dethada"},"content":"public class InvalidCommand extends Command {","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"Dethada"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"Dethada"},"content":" * Shows the message for invalid command entered in the user interface.","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"Dethada"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"Dethada"},"content":" * @param tasks The task list that stores the tasks.","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"Dethada"},"content":" * @param ui The user interface for interaction with the user.","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"Dethada"},"content":" * @param storage The storage for reading and writing task data.","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"Dethada"},"content":" * @param input The parsed user input.","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"Dethada"},"content":" * @throws CappyException If there is an application-specific exception during task execution.","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"Dethada"},"content":" * @throws IOException If an I/O error occurs while interacting with the storage.","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"Dethada"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"Dethada"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"Dethada"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage, ParsedInput input)","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"Dethada"},"content":" throws CappyException, IOException {","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"Dethada"},"content":" ui.show(\"Sorry I can\u0027t help with that :(\");","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"Dethada"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"Dethada":27}},{"path":"src/main/java/cappy/command/ListCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Dethada"},"content":"package cappy.command;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"Dethada"},"content":"import cappy.error.CappyException;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"Dethada"},"content":"import cappy.parser.ParsedInput;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"Dethada"},"content":"import cappy.storage.Storage;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"Dethada"},"content":"import cappy.task.TaskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"Dethada"},"content":"import cappy.ui.Ui;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"Dethada"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"Dethada"},"content":"public class ListCommand extends Command {","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"Dethada"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"Dethada"},"content":" * Shows the tasks currently in the task list through the UI.","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"Dethada"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"Dethada"},"content":" * @param tasks The task list that stores the tasks.","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"Dethada"},"content":" * @param ui The user interface for interaction with the user.","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"Dethada"},"content":" * @param storage The storage for reading and writing task data.","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"Dethada"},"content":" * @param input The parsed user input.","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"Dethada"},"content":" * @throws CappyException If there is an application-specific exception during task execution.","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"Dethada"},"content":" * @throws IOException If an I/O error occurs while interacting with the storage.","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"Dethada"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"Dethada"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"Dethada"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage, ParsedInput input)","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"Dethada"},"content":" throws CappyException, IOException {","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"Dethada"},"content":" String[] messages \u003d new String[tasks.size() + 1];","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"Dethada"},"content":" messages[0] \u003d \"Here are the tasks in your list:\";","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"Dethada"},"content":" System.arraycopy(tasks.toString().split(\"\\n\"), 0, messages, 1, tasks.size());","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"Dethada"},"content":" ui.show(messages);","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"Dethada"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"Dethada":30}},{"path":"src/main/java/cappy/command/MarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Dethada"},"content":"package cappy.command;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"Dethada"},"content":"import cappy.error.CappyException;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"Dethada"},"content":"import cappy.parser.ParsedInput;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"Dethada"},"content":"import cappy.storage.Storage;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"Dethada"},"content":"import cappy.task.TaskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"Dethada"},"content":"import cappy.ui.Ui;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"Dethada"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"Dethada"},"content":"public class MarkCommand extends Command {","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"Dethada"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"Dethada"},"content":" * Marks the task at the given index from the task list as completed, and notify the user through the UI.","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"Dethada"},"content":" * The index is retrieved from the parsed user input.","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"Dethada"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"Dethada"},"content":" * @param tasks The task list that stores the tasks.","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"Dethada"},"content":" * @param ui The user interface for interaction with the user.","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"Dethada"},"content":" * @param storage The storage for reading and writing task data.","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"Dethada"},"content":" * @param input The parsed user input.","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"Dethada"},"content":" * @throws CappyException If there is an application-specific exception during task execution.","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"Dethada"},"content":" * @throws IOException If an I/O error occurs while interacting with the storage.","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"Dethada"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"Dethada"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"Dethada"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage, ParsedInput input)","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"Dethada"},"content":" throws CappyException, IOException {","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"Dethada"},"content":" if (input.numberOfPositionalArguments() \u003c 1) {","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"Dethada"},"content":" throw new CappyException(\"Please enter an index.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"Dethada"},"content":" String indexStr \u003d input.getPositionalArgument(0);","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"Dethada"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"Dethada"},"content":" int index \u003d Integer.parseInt(indexStr);","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"Dethada"},"content":" if (!tasks.validIndex(index)) {","lastModifiedDate":"2024-01-28"},{"lineNumber":33,"author":{"gitId":"Dethada"},"content":" throw new CappyException(\"Please enter a valid index.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":35,"author":{"gitId":"Dethada"},"content":" tasks.getTask(index).done();","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"Dethada"},"content":" String[] messages \u003d {","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"Dethada"},"content":" \"Nice! I\u0027ve marked this task as done:\", tasks.getTask(index).toString()","lastModifiedDate":"2024-01-28"},{"lineNumber":38,"author":{"gitId":"Dethada"},"content":" };","lastModifiedDate":"2024-01-28"},{"lineNumber":39,"author":{"gitId":"Dethada"},"content":" ui.show(messages);","lastModifiedDate":"2024-01-28"},{"lineNumber":40,"author":{"gitId":"Dethada"},"content":" tasks.save();","lastModifiedDate":"2024-01-28"},{"lineNumber":41,"author":{"gitId":"Dethada"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":42,"author":{"gitId":"Dethada"},"content":" throw new CappyException(\"Please enter a valid index.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":44,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":45,"author":{"gitId":"Dethada"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"Dethada":45}},{"path":"src/main/java/cappy/command/TodoCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Dethada"},"content":"package cappy.command;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"Dethada"},"content":"import cappy.error.CappyException;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"Dethada"},"content":"import cappy.parser.ParsedInput;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"Dethada"},"content":"import cappy.storage.Storage;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"Dethada"},"content":"import cappy.task.TaskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"Dethada"},"content":"import cappy.task.Todo;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"Dethada"},"content":"import cappy.ui.Ui;","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"Dethada"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"Dethada"},"content":"public class TodoCommand extends Command {","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"Dethada"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"Dethada"},"content":" * Adds a new Todo task to the task list, and notify the user through the UI.","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"Dethada"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"Dethada"},"content":" * @param tasks The task list that stores the tasks.","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"Dethada"},"content":" * @param ui The user interface for interaction with the user.","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"Dethada"},"content":" * @param storage The storage for reading and writing task data.","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"Dethada"},"content":" * @param input The parsed user input.","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"Dethada"},"content":" * @throws CappyException If there is an application-specific exception during task execution.","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"Dethada"},"content":" * @throws IOException If an I/O error occurs while interacting with the storage.","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"Dethada"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"Dethada"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"Dethada"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage, ParsedInput input)","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"Dethada"},"content":" throws CappyException, IOException {","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"Dethada"},"content":" if (input.numberOfPositionalArguments() \u003c 1) {","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"Dethada"},"content":" throw new CappyException(\"Please enter the task description.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"Dethada"},"content":" String description \u003d String.join(\" \", input.getPositionalArguments());","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"Dethada"},"content":" Todo task \u003d new Todo(description);","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"Dethada"},"content":" tasks.addTask(task);","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"Dethada"},"content":" ui.showAddedTask(task, tasks);","lastModifiedDate":"2024-01-28"},{"lineNumber":33,"author":{"gitId":"Dethada"},"content":" tasks.save();","lastModifiedDate":"2024-01-28"},{"lineNumber":34,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":35,"author":{"gitId":"Dethada"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"Dethada":35}},{"path":"src/main/java/cappy/command/UnmarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Dethada"},"content":"package cappy.command;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"Dethada"},"content":"import cappy.error.CappyException;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"Dethada"},"content":"import cappy.parser.ParsedInput;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"Dethada"},"content":"import cappy.storage.Storage;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"Dethada"},"content":"import cappy.task.TaskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"Dethada"},"content":"import cappy.ui.Ui;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"Dethada"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"Dethada"},"content":"public class UnmarkCommand extends Command {","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"Dethada"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"Dethada"},"content":" * Marks the task at the given index from the task list as incomplete, and notify the user through the UI.","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"Dethada"},"content":" * The index is retrieved from the parsed user input.","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"Dethada"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"Dethada"},"content":" * @param tasks The task list that stores the tasks.","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"Dethada"},"content":" * @param ui The user interface for interaction with the user.","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"Dethada"},"content":" * @param storage The storage for reading and writing task data.","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"Dethada"},"content":" * @param input The parsed user input.","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"Dethada"},"content":" * @throws CappyException If there is an application-specific exception during task execution.","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"Dethada"},"content":" * @throws IOException If an I/O error occurs while interacting with the storage.","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"Dethada"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"Dethada"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"Dethada"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage, ParsedInput input)","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"Dethada"},"content":" throws CappyException, IOException {","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"Dethada"},"content":" if (input.numberOfPositionalArguments() \u003c 1) {","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"Dethada"},"content":" throw new CappyException(\"Please enter an index.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"Dethada"},"content":" String indexStr \u003d input.getPositionalArgument(0);","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"Dethada"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"Dethada"},"content":" int index \u003d Integer.parseInt(indexStr);","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"Dethada"},"content":" if (!tasks.validIndex(index)) {","lastModifiedDate":"2024-01-28"},{"lineNumber":33,"author":{"gitId":"Dethada"},"content":" throw new CappyException(\"Please enter a valid index.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":35,"author":{"gitId":"Dethada"},"content":" tasks.getTask(index).undone();","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"Dethada"},"content":" String[] messages \u003d {","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"Dethada"},"content":" \"OK, I\u0027ve marked this task as not done yet:\", tasks.getTask(index).toString()","lastModifiedDate":"2024-01-28"},{"lineNumber":38,"author":{"gitId":"Dethada"},"content":" };","lastModifiedDate":"2024-01-28"},{"lineNumber":39,"author":{"gitId":"Dethada"},"content":" ui.show(messages);","lastModifiedDate":"2024-01-28"},{"lineNumber":40,"author":{"gitId":"Dethada"},"content":" tasks.save();","lastModifiedDate":"2024-01-28"},{"lineNumber":41,"author":{"gitId":"Dethada"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":42,"author":{"gitId":"Dethada"},"content":" throw new CappyException(\"Please enter a valid index.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":44,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":45,"author":{"gitId":"Dethada"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"Dethada":45}},{"path":"src/main/java/cappy/error/CappyException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Dethada"},"content":"package cappy.error;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"Dethada"},"content":"/**","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"Dethada"},"content":" * Represents an exception specific to Cappy.","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"Dethada"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"Dethada"},"content":"public class CappyException extends Exception {","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"Dethada"},"content":" public CappyException(String message) {","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"Dethada"},"content":" super(message);","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"Dethada"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"Dethada":10}},{"path":"src/main/java/cappy/parser/ParsedInput.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Dethada"},"content":"package cappy.parser;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"Dethada"},"content":"import cappy.command.Command;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"Dethada"},"content":"import cappy.command.CommandType;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"Dethada"},"content":"import cappy.error.CappyException;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"Dethada"},"content":"import cappy.storage.Storage;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"Dethada"},"content":"import cappy.task.TaskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"Dethada"},"content":"import cappy.ui.Ui;","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"Dethada"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"Dethada"},"content":"import java.util.Map;","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"Dethada"},"content":"import java.util.List;","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"Dethada"},"content":"/**","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"Dethada"},"content":" * Represents the parsed input from the user command.","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"Dethada"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"Dethada"},"content":" * \u003cp\u003eThe {@code ParsedInput} class encapsulates the parsed information from the user\u0027s input,","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"Dethada"},"content":" * including the command type, named arguments, and positional arguments. It provides methods","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"Dethada"},"content":" * to retrieve and interact with the parsed information.","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"Dethada"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"Dethada"},"content":"public class ParsedInput {","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"Dethada"},"content":" private CommandType commandType;","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"Dethada"},"content":" private Command command;","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"Dethada"},"content":" private Map\u003cString, String\u003e namedArguments;","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"Dethada"},"content":" private List\u003cString\u003e positionalArguments;","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"Dethada"},"content":" public ParsedInput(","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"Dethada"},"content":" CommandType commandType,","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"Dethada"},"content":" Map\u003cString, String\u003e namedArguments,","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"Dethada"},"content":" List\u003cString\u003e positionalArguments) {","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"Dethada"},"content":" this.commandType \u003d commandType;","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"Dethada"},"content":" this.command \u003d commandType.getCommand();","lastModifiedDate":"2024-01-28"},{"lineNumber":33,"author":{"gitId":"Dethada"},"content":" this.namedArguments \u003d namedArguments;","lastModifiedDate":"2024-01-28"},{"lineNumber":34,"author":{"gitId":"Dethada"},"content":" this.positionalArguments \u003d positionalArguments;","lastModifiedDate":"2024-01-28"},{"lineNumber":35,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"Dethada"},"content":" public CommandType getCommandType() {","lastModifiedDate":"2024-01-28"},{"lineNumber":38,"author":{"gitId":"Dethada"},"content":" return commandType;","lastModifiedDate":"2024-01-28"},{"lineNumber":39,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":40,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":41,"author":{"gitId":"Dethada"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"Dethada"},"content":" * Returns the corresponding value for the named argument. Returns null if the argument","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"Dethada"},"content":" * does not exist.","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"Dethada"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"Dethada"},"content":" * @param name The name of the argument.","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"Dethada"},"content":" * @return The corresponding value of the argument.","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"Dethada"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"Dethada"},"content":" public String getNamedArgument(String name) {","lastModifiedDate":"2024-01-28"},{"lineNumber":49,"author":{"gitId":"Dethada"},"content":" return namedArguments.get(name);","lastModifiedDate":"2024-01-28"},{"lineNumber":50,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":51,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":52,"author":{"gitId":"Dethada"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"Dethada"},"content":" * Returns the value of the positional argument at the specified index.","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"Dethada"},"content":" * Throws {@code IndexOutOfBoundsException} if the specified index is","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"Dethada"},"content":" * not a valid index.","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"Dethada"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"Dethada"},"content":" * @param index The index of the positional argument to retrieve.","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"Dethada"},"content":" * @return The value of the positional argument at the specified index.","lastModifiedDate":"2024-01-30"},{"lineNumber":59,"author":{"gitId":"Dethada"},"content":" * @throws IndexOutOfBoundsException If the specified index is negative or","lastModifiedDate":"2024-01-30"},{"lineNumber":60,"author":{"gitId":"Dethada"},"content":" * is greater than or equal to the size","lastModifiedDate":"2024-01-30"},{"lineNumber":61,"author":{"gitId":"Dethada"},"content":" * of the positional arguments.","lastModifiedDate":"2024-01-30"},{"lineNumber":62,"author":{"gitId":"Dethada"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":63,"author":{"gitId":"Dethada"},"content":" public String getPositionalArgument(int index) {","lastModifiedDate":"2024-01-28"},{"lineNumber":64,"author":{"gitId":"Dethada"},"content":" return positionalArguments.get(index);","lastModifiedDate":"2024-01-28"},{"lineNumber":65,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":66,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":67,"author":{"gitId":"Dethada"},"content":" public List\u003cString\u003e getPositionalArguments() {","lastModifiedDate":"2024-01-30"},{"lineNumber":68,"author":{"gitId":"Dethada"},"content":" return positionalArguments;","lastModifiedDate":"2024-01-30"},{"lineNumber":69,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":70,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":71,"author":{"gitId":"Dethada"},"content":" public int numberOfPositionalArguments() {","lastModifiedDate":"2024-01-28"},{"lineNumber":72,"author":{"gitId":"Dethada"},"content":" return positionalArguments.size();","lastModifiedDate":"2024-01-28"},{"lineNumber":73,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":74,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":75,"author":{"gitId":"Dethada"},"content":" public int numberOfNamedArguments() {","lastModifiedDate":"2024-01-28"},{"lineNumber":76,"author":{"gitId":"Dethada"},"content":" return namedArguments.size();","lastModifiedDate":"2024-01-28"},{"lineNumber":77,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":78,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":79,"author":{"gitId":"Dethada"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":80,"author":{"gitId":"Dethada"},"content":" * Returns true if the named argument exists.","lastModifiedDate":"2024-01-30"},{"lineNumber":81,"author":{"gitId":"Dethada"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":82,"author":{"gitId":"Dethada"},"content":" * @param name The name of the argument.","lastModifiedDate":"2024-01-30"},{"lineNumber":83,"author":{"gitId":"Dethada"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":84,"author":{"gitId":"Dethada"},"content":" public boolean hasNamedArgument(String name) {","lastModifiedDate":"2024-01-28"},{"lineNumber":85,"author":{"gitId":"Dethada"},"content":" return namedArguments.containsKey(name);","lastModifiedDate":"2024-01-28"},{"lineNumber":86,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":87,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":88,"author":{"gitId":"Dethada"},"content":" public void executeCommand(TaskList tasks, Ui ui, Storage storage)","lastModifiedDate":"2024-01-29"},{"lineNumber":89,"author":{"gitId":"Dethada"},"content":" throws CappyException, IOException {","lastModifiedDate":"2024-01-29"},{"lineNumber":90,"author":{"gitId":"Dethada"},"content":" command.execute(tasks, ui, storage, this);","lastModifiedDate":"2024-01-28"},{"lineNumber":91,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":92,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":93,"author":{"gitId":"Dethada"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":94,"author":{"gitId":"Dethada"},"content":" public boolean equals(Object obj) {","lastModifiedDate":"2024-01-29"},{"lineNumber":95,"author":{"gitId":"Dethada"},"content":" if (!(obj instanceof ParsedInput)) {","lastModifiedDate":"2024-01-29"},{"lineNumber":96,"author":{"gitId":"Dethada"},"content":" return false;","lastModifiedDate":"2024-01-29"},{"lineNumber":97,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":98,"author":{"gitId":"Dethada"},"content":" ParsedInput other \u003d (ParsedInput) obj;","lastModifiedDate":"2024-01-29"},{"lineNumber":99,"author":{"gitId":"Dethada"},"content":" return commandType \u003d\u003d other.commandType","lastModifiedDate":"2024-01-29"},{"lineNumber":100,"author":{"gitId":"Dethada"},"content":" \u0026\u0026 namedArguments.equals(other.namedArguments)","lastModifiedDate":"2024-01-29"},{"lineNumber":101,"author":{"gitId":"Dethada"},"content":" \u0026\u0026 positionalArguments.equals(other.positionalArguments);","lastModifiedDate":"2024-01-29"},{"lineNumber":102,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":103,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":104,"author":{"gitId":"Dethada"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":105,"author":{"gitId":"Dethada"},"content":" public String toString() {","lastModifiedDate":"2024-01-29"},{"lineNumber":106,"author":{"gitId":"Dethada"},"content":" return \"ParsedInput(\"","lastModifiedDate":"2024-01-29"},{"lineNumber":107,"author":{"gitId":"Dethada"},"content":" + commandType","lastModifiedDate":"2024-01-29"},{"lineNumber":108,"author":{"gitId":"Dethada"},"content":" + \", \"","lastModifiedDate":"2024-01-29"},{"lineNumber":109,"author":{"gitId":"Dethada"},"content":" + namedArguments","lastModifiedDate":"2024-01-29"},{"lineNumber":110,"author":{"gitId":"Dethada"},"content":" + \", \"","lastModifiedDate":"2024-01-29"},{"lineNumber":111,"author":{"gitId":"Dethada"},"content":" + positionalArguments","lastModifiedDate":"2024-01-29"},{"lineNumber":112,"author":{"gitId":"Dethada"},"content":" + \")\";","lastModifiedDate":"2024-01-29"},{"lineNumber":113,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":114,"author":{"gitId":"Dethada"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"Dethada":114}},{"path":"src/main/java/cappy/parser/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Dethada"},"content":"package cappy.parser;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"Dethada"},"content":"import cappy.command.CommandType;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"Dethada"},"content":"import cappy.error.CappyException;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"Dethada"},"content":"import cappy.task.Deadline;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"Dethada"},"content":"import cappy.task.Event;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"Dethada"},"content":"import cappy.task.Task;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"Dethada"},"content":"import cappy.task.Todo;","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"Dethada"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"Dethada"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"Dethada"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"Dethada"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"Dethada"},"content":"import java.util.HashMap;","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"Dethada"},"content":"import java.util.StringTokenizer;","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"Dethada"},"content":"/**","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"Dethada"},"content":" * Handles parsing user input and converting data formats.","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"Dethada"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"Dethada"},"content":" * \u003cp\u003eThe {@code Parser} class provides static methods for parsing user input,","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"Dethada"},"content":" * converting date-time strings to LocalDateTime objects, and parsing CSV lines","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"Dethada"},"content":" * into corresponding task objects.","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"Dethada"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"Dethada"},"content":"public class Parser {","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"Dethada"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"Dethada"},"content":" * The DateTimeFormatter for parsing and formatting date-time strings.","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"Dethada"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"Dethada"},"content":" public static final DateTimeFormatter DATE_TIME_FORMAT \u003d","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"Dethada"},"content":" DateTimeFormatter.ofPattern(\"yyyy-MM-dd\u0027T\u0027HH:mm\");","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"Dethada"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"Dethada"},"content":" * Parses a input String into a ParsedInput object.","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"Dethada"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"Dethada"},"content":" * @param input The String to be parsed.","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"Dethada"},"content":" * @return The parsed input as a ParsedInput object.","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"Dethada"},"content":" * @throws CappyException If the input is not valid.","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"Dethada"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"Dethada"},"content":" public static ParsedInput parse(String input) throws CappyException {","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"Dethada"},"content":" StringTokenizer st \u003d new StringTokenizer(input, \" \");","lastModifiedDate":"2024-01-28"},{"lineNumber":40,"author":{"gitId":"Dethada"},"content":" int numTokens \u003d st.countTokens();","lastModifiedDate":"2024-01-28"},{"lineNumber":41,"author":{"gitId":"Dethada"},"content":" if (numTokens \u003d\u003d 0) {","lastModifiedDate":"2024-01-28"},{"lineNumber":42,"author":{"gitId":"Dethada"},"content":" return new ParsedInput(CommandType.EMPTY, new HashMap\u003c\u003e(), new ArrayList\u003c\u003e());","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":44,"author":{"gitId":"Dethada"},"content":" String commandString \u003d st.nextToken();","lastModifiedDate":"2024-01-28"},{"lineNumber":45,"author":{"gitId":"Dethada"},"content":" CommandType command \u003d CommandType.fromString(commandString);","lastModifiedDate":"2024-01-28"},{"lineNumber":46,"author":{"gitId":"Dethada"},"content":" if (command \u003d\u003d CommandType.INVALID || command \u003d\u003d CommandType.EMPTY) {","lastModifiedDate":"2024-01-28"},{"lineNumber":47,"author":{"gitId":"Dethada"},"content":" return new ParsedInput(command, new HashMap\u003c\u003e(), new ArrayList\u003c\u003e());","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":49,"author":{"gitId":"Dethada"},"content":" HashMap\u003cString, String\u003e namedArguments \u003d new HashMap\u003c\u003e();","lastModifiedDate":"2024-01-28"},{"lineNumber":50,"author":{"gitId":"Dethada"},"content":" ArrayList\u003cString\u003e positionalArguments \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-28"},{"lineNumber":51,"author":{"gitId":"Dethada"},"content":" while (st.hasMoreTokens()) {","lastModifiedDate":"2024-01-28"},{"lineNumber":52,"author":{"gitId":"Dethada"},"content":" String token \u003d st.nextToken();","lastModifiedDate":"2024-01-28"},{"lineNumber":53,"author":{"gitId":"Dethada"},"content":" if (token.startsWith(\"/\")) {","lastModifiedDate":"2024-01-28"},{"lineNumber":54,"author":{"gitId":"Dethada"},"content":" if (!st.hasMoreTokens()) {","lastModifiedDate":"2024-01-28"},{"lineNumber":55,"author":{"gitId":"Dethada"},"content":" throw new CappyException(\"Missing value for argument \" + token);","lastModifiedDate":"2024-01-29"},{"lineNumber":56,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":57,"author":{"gitId":"Dethada"},"content":" namedArguments.put(token.substring(1), st.nextToken());","lastModifiedDate":"2024-01-28"},{"lineNumber":58,"author":{"gitId":"Dethada"},"content":" } else {","lastModifiedDate":"2024-01-28"},{"lineNumber":59,"author":{"gitId":"Dethada"},"content":" positionalArguments.add(token);","lastModifiedDate":"2024-01-28"},{"lineNumber":60,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":61,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":62,"author":{"gitId":"Dethada"},"content":" return new ParsedInput(command, namedArguments, positionalArguments);","lastModifiedDate":"2024-01-28"},{"lineNumber":63,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":64,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":65,"author":{"gitId":"Dethada"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":66,"author":{"gitId":"Dethada"},"content":" * Converts a String into a LocalDateTime object. The expected format is yyyy-MM-dd\u0027T\u0027HH:mm.","lastModifiedDate":"2024-01-30"},{"lineNumber":67,"author":{"gitId":"Dethada"},"content":" * For example, 2023-01-29T14:00.","lastModifiedDate":"2024-01-30"},{"lineNumber":68,"author":{"gitId":"Dethada"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":69,"author":{"gitId":"Dethada"},"content":" * @param input The string to be converted to a LocalDateTime object.","lastModifiedDate":"2024-01-30"},{"lineNumber":70,"author":{"gitId":"Dethada"},"content":" * @return The resulting LocalDateTime object from the conversion.","lastModifiedDate":"2024-01-30"},{"lineNumber":71,"author":{"gitId":"Dethada"},"content":" * @throws DateTimeParseException If the String is not in the expected format.","lastModifiedDate":"2024-01-30"},{"lineNumber":72,"author":{"gitId":"Dethada"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":73,"author":{"gitId":"Dethada"},"content":" public static LocalDateTime parseDateTime(String input) throws DateTimeParseException {","lastModifiedDate":"2024-01-28"},{"lineNumber":74,"author":{"gitId":"Dethada"},"content":" return LocalDateTime.parse(input, DATE_TIME_FORMAT);","lastModifiedDate":"2024-01-28"},{"lineNumber":75,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":76,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":77,"author":{"gitId":"Dethada"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":78,"author":{"gitId":"Dethada"},"content":" * Converts a LocalDateTime object into a String. The String format is yyyy-MM-dd\u0027T\u0027HH:mm.","lastModifiedDate":"2024-01-30"},{"lineNumber":79,"author":{"gitId":"Dethada"},"content":" * For example, 2023-01-29T14:00.","lastModifiedDate":"2024-01-30"},{"lineNumber":80,"author":{"gitId":"Dethada"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":81,"author":{"gitId":"Dethada"},"content":" * @param input The LocalDateTime object to be converted to a String.","lastModifiedDate":"2024-01-30"},{"lineNumber":82,"author":{"gitId":"Dethada"},"content":" * @return The resulting String from the conversion.","lastModifiedDate":"2024-01-30"},{"lineNumber":83,"author":{"gitId":"Dethada"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":84,"author":{"gitId":"Dethada"},"content":" public static String dateTimeToString(LocalDateTime dateTime) {","lastModifiedDate":"2024-01-28"},{"lineNumber":85,"author":{"gitId":"Dethada"},"content":" return dateTime.format(DATE_TIME_FORMAT);","lastModifiedDate":"2024-01-28"},{"lineNumber":86,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":87,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":88,"author":{"gitId":"Dethada"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":89,"author":{"gitId":"Dethada"},"content":" * Parses a csv line into a Task object.","lastModifiedDate":"2024-01-30"},{"lineNumber":90,"author":{"gitId":"Dethada"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":91,"author":{"gitId":"Dethada"},"content":" * @param csvLine The csv line to be parsed.","lastModifiedDate":"2024-01-30"},{"lineNumber":92,"author":{"gitId":"Dethada"},"content":" * @return The Task object created from the data in the csv line.","lastModifiedDate":"2024-01-30"},{"lineNumber":93,"author":{"gitId":"Dethada"},"content":" * @throws CappyException If the csv line is not in the excpected format.","lastModifiedDate":"2024-01-30"},{"lineNumber":94,"author":{"gitId":"Dethada"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":95,"author":{"gitId":"Dethada"},"content":" public static Task parseCsvLine(String csvLine) throws CappyException {","lastModifiedDate":"2024-01-29"},{"lineNumber":96,"author":{"gitId":"Dethada"},"content":" String[] data \u003d csvLine.split(\",\");","lastModifiedDate":"2024-01-28"},{"lineNumber":97,"author":{"gitId":"Dethada"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":98,"author":{"gitId":"Dethada"},"content":" String type \u003d data[0];","lastModifiedDate":"2024-01-28"},{"lineNumber":99,"author":{"gitId":"Dethada"},"content":" boolean isDone \u003d data[1].equals(\"1\");","lastModifiedDate":"2024-01-30"},{"lineNumber":100,"author":{"gitId":"Dethada"},"content":" String description \u003d data[2];","lastModifiedDate":"2024-01-28"},{"lineNumber":101,"author":{"gitId":"Dethada"},"content":" if (type.equals(Todo.TYPE_SYMBOL)) {","lastModifiedDate":"2024-01-28"},{"lineNumber":102,"author":{"gitId":"Dethada"},"content":" return new Todo(description, isDone);","lastModifiedDate":"2024-01-30"},{"lineNumber":103,"author":{"gitId":"Dethada"},"content":" } else if (type.equals(Deadline.TYPE_SYMBOL)) {","lastModifiedDate":"2024-01-28"},{"lineNumber":104,"author":{"gitId":"Dethada"},"content":" LocalDateTime due \u003d parseDateTime(data[3]);","lastModifiedDate":"2024-01-28"},{"lineNumber":105,"author":{"gitId":"Dethada"},"content":" return new Deadline(description, isDone, due);","lastModifiedDate":"2024-01-30"},{"lineNumber":106,"author":{"gitId":"Dethada"},"content":" } else if (type.equals(Event.TYPE_SYMBOL)) {","lastModifiedDate":"2024-01-28"},{"lineNumber":107,"author":{"gitId":"Dethada"},"content":" LocalDateTime from \u003d parseDateTime(data[3]);","lastModifiedDate":"2024-01-28"},{"lineNumber":108,"author":{"gitId":"Dethada"},"content":" LocalDateTime to \u003d parseDateTime(data[4]);","lastModifiedDate":"2024-01-28"},{"lineNumber":109,"author":{"gitId":"Dethada"},"content":" return new Event(description, isDone, from, to);","lastModifiedDate":"2024-01-30"},{"lineNumber":110,"author":{"gitId":"Dethada"},"content":" } else {","lastModifiedDate":"2024-01-28"},{"lineNumber":111,"author":{"gitId":"Dethada"},"content":" throw new CappyException(\"Invalid Type\");","lastModifiedDate":"2024-01-29"},{"lineNumber":112,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":113,"author":{"gitId":"Dethada"},"content":" } catch (ArrayIndexOutOfBoundsException | DateTimeParseException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":114,"author":{"gitId":"Dethada"},"content":" throw new CappyException(\"Invalid storage format!\");","lastModifiedDate":"2024-01-29"},{"lineNumber":115,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":116,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":117,"author":{"gitId":"Dethada"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"Dethada":117}},{"path":"src/main/java/cappy/storage/CsvFormat.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Dethada"},"content":"package cappy.storage;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"Dethada"},"content":"public interface CsvFormat {","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"Dethada"},"content":" /**","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"Dethada"},"content":" * Returns the CSV string representation of this object.","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"Dethada"},"content":" */","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"Dethada"},"content":" public String toCsv();","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"Dethada"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"Dethada":8}},{"path":"src/main/java/cappy/storage/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Dethada"},"content":"package cappy.storage;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"Dethada"},"content":"import java.io.BufferedReader;","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"Dethada"},"content":"import java.io.BufferedWriter;","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"Dethada"},"content":"import java.io.File;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"Dethada"},"content":"import java.io.FileReader;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"Dethada"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"Dethada"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"Dethada"},"content":"/**","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"Dethada"},"content":" * Manages storage operations for the task management system.","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"Dethada"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"Dethada"},"content":" * \u003cp\u003eThe {@code Storage} class provides functionality for creating, reading, and writing","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"Dethada"},"content":" * to a specified file path. It supports operations such as emptying the content, writing","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"Dethada"},"content":" * a line to the end of the storage, and reading all content from the storage.","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"Dethada"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"Dethada"},"content":" * \u003cp\u003e\u003cstrong\u003eFile Path:\u003c/strong\u003e The path to the file associated with the storage.","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"Dethada"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"Dethada"},"content":"public class Storage implements AutoCloseable {","lastModifiedDate":"2024-01-26"},{"lineNumber":20,"author":{"gitId":"Dethada"},"content":" private final String path;","lastModifiedDate":"2024-01-26"},{"lineNumber":21,"author":{"gitId":"Dethada"},"content":" private final File file;","lastModifiedDate":"2024-01-26"},{"lineNumber":22,"author":{"gitId":"Dethada"},"content":" private BufferedWriter writer;","lastModifiedDate":"2024-01-26"},{"lineNumber":23,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":24,"author":{"gitId":"Dethada"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"Dethada"},"content":" * Constructs a new Storage object with the specified file path.","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"Dethada"},"content":" * The file and its parent directories will be created if they do not exist.","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"Dethada"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"Dethada"},"content":" * @param path The file path for the storage.","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"Dethada"},"content":" * @throws IOException If an I/O error occurs during file or directory creation.","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"Dethada"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"Dethada"},"content":" public Storage(String path) throws IOException {","lastModifiedDate":"2024-01-26"},{"lineNumber":32,"author":{"gitId":"Dethada"},"content":" this.path \u003d path;","lastModifiedDate":"2024-01-26"},{"lineNumber":33,"author":{"gitId":"Dethada"},"content":" this.file \u003d new File(path);","lastModifiedDate":"2024-01-26"},{"lineNumber":34,"author":{"gitId":"Dethada"},"content":" file.getParentFile().mkdirs();","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"Dethada"},"content":" file.createNewFile();","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"Dethada"},"content":" this.writer \u003d new BufferedWriter(new FileWriter(file, true));","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":38,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":39,"author":{"gitId":"Dethada"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"Dethada"},"content":" * Emptys the content in the storage. The underlying file will be overwritten to","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"Dethada"},"content":" * contain nothing.","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"Dethada"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"Dethada"},"content":" * @throws IOException If an I/O error occurs.","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"Dethada"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"Dethada"},"content":" public void empty() throws IOException {","lastModifiedDate":"2024-01-26"},{"lineNumber":46,"author":{"gitId":"Dethada"},"content":" close();","lastModifiedDate":"2024-01-27"},{"lineNumber":47,"author":{"gitId":"Dethada"},"content":" try (FileWriter fileWriter \u003d new FileWriter(file, false)) {","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"Dethada"},"content":" fileWriter.write(\"\");","lastModifiedDate":"2024-01-26"},{"lineNumber":49,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":50,"author":{"gitId":"Dethada"},"content":" writer \u003d new BufferedWriter(new FileWriter(file));","lastModifiedDate":"2024-01-29"},{"lineNumber":51,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":52,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":53,"author":{"gitId":"Dethada"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"Dethada"},"content":" * Writes a line to the end of the storage.","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"Dethada"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"Dethada"},"content":" * @throws IOException If an I/O error occurs.","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"Dethada"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"Dethada"},"content":" public void writeLine(String line) throws IOException {","lastModifiedDate":"2024-01-26"},{"lineNumber":59,"author":{"gitId":"Dethada"},"content":" writer.write(line);","lastModifiedDate":"2024-01-26"},{"lineNumber":60,"author":{"gitId":"Dethada"},"content":" writer.newLine();","lastModifiedDate":"2024-01-26"},{"lineNumber":61,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":62,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":63,"author":{"gitId":"Dethada"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":64,"author":{"gitId":"Dethada"},"content":" * Reads all the content from the storage (underlying file) and return it as a string.","lastModifiedDate":"2024-01-30"},{"lineNumber":65,"author":{"gitId":"Dethada"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":66,"author":{"gitId":"Dethada"},"content":" * @return The string that contains all the content from the storage.","lastModifiedDate":"2024-01-30"},{"lineNumber":67,"author":{"gitId":"Dethada"},"content":" * @throws IOException If an I/O error occurs.","lastModifiedDate":"2024-01-30"},{"lineNumber":68,"author":{"gitId":"Dethada"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":69,"author":{"gitId":"Dethada"},"content":" public String readAll() throws IOException {","lastModifiedDate":"2024-01-27"},{"lineNumber":70,"author":{"gitId":"Dethada"},"content":" BufferedReader reader \u003d new BufferedReader(new FileReader(file));","lastModifiedDate":"2024-01-29"},{"lineNumber":71,"author":{"gitId":"Dethada"},"content":" StringBuilder builder \u003d new StringBuilder();","lastModifiedDate":"2024-01-27"},{"lineNumber":72,"author":{"gitId":"Dethada"},"content":" String line \u003d reader.readLine();","lastModifiedDate":"2024-01-27"},{"lineNumber":73,"author":{"gitId":"Dethada"},"content":" while (line !\u003d null) {","lastModifiedDate":"2024-01-27"},{"lineNumber":74,"author":{"gitId":"Dethada"},"content":" builder.append(line);","lastModifiedDate":"2024-01-27"},{"lineNumber":75,"author":{"gitId":"Dethada"},"content":" builder.append(\"\\n\");","lastModifiedDate":"2024-01-27"},{"lineNumber":76,"author":{"gitId":"Dethada"},"content":" line \u003d reader.readLine();","lastModifiedDate":"2024-01-27"},{"lineNumber":77,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":78,"author":{"gitId":"Dethada"},"content":" reader.close();","lastModifiedDate":"2024-01-27"},{"lineNumber":79,"author":{"gitId":"Dethada"},"content":" return builder.toString();","lastModifiedDate":"2024-01-27"},{"lineNumber":80,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":81,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":82,"author":{"gitId":"Dethada"},"content":" @Override","lastModifiedDate":"2024-01-26"},{"lineNumber":83,"author":{"gitId":"Dethada"},"content":" public void close() throws IOException {","lastModifiedDate":"2024-01-26"},{"lineNumber":84,"author":{"gitId":"Dethada"},"content":" writer.close();","lastModifiedDate":"2024-01-26"},{"lineNumber":85,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":86,"author":{"gitId":"Dethada"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"Dethada":86}},{"path":"src/main/java/cappy/task/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Dethada"},"content":"package cappy.task;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"Dethada"},"content":"import cappy.parser.Parser;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"Dethada"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"Dethada"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-20"},{"lineNumber":8,"author":{"gitId":"Dethada"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"Dethada"},"content":" * The type symbol for the Deadline Task.","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"Dethada"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"Dethada"},"content":" public static final String TYPE_SYMBOL \u003d \"D\";","lastModifiedDate":"2024-01-27"},{"lineNumber":12,"author":{"gitId":"Dethada"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"Dethada"},"content":" * The due date time for the Deadline Task.","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"Dethada"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"Dethada"},"content":" private final LocalDateTime due;","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-20"},{"lineNumber":17,"author":{"gitId":"Dethada"},"content":" public Deadline(String description, LocalDateTime due) {","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"Dethada"},"content":" super(description);","lastModifiedDate":"2024-01-20"},{"lineNumber":19,"author":{"gitId":"Dethada"},"content":" this.due \u003d due;","lastModifiedDate":"2024-01-20"},{"lineNumber":20,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-20"},{"lineNumber":21,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-20"},{"lineNumber":22,"author":{"gitId":"Dethada"},"content":" public Deadline(String description, boolean isDone, LocalDateTime due) {","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"Dethada"},"content":" super(description, isDone);","lastModifiedDate":"2024-01-27"},{"lineNumber":24,"author":{"gitId":"Dethada"},"content":" this.due \u003d due;","lastModifiedDate":"2024-01-27"},{"lineNumber":25,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":26,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":27,"author":{"gitId":"Dethada"},"content":" @Override","lastModifiedDate":"2024-01-26"},{"lineNumber":28,"author":{"gitId":"Dethada"},"content":" public String toCsv() {","lastModifiedDate":"2024-01-26"},{"lineNumber":29,"author":{"gitId":"Dethada"},"content":" return TYPE_SYMBOL","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"Dethada"},"content":" + \",\"","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"Dethada"},"content":" + (super.getDone() ? \"1\" : \"0\")","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"Dethada"},"content":" + \",\"","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"Dethada"},"content":" + super.getDescription()","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"Dethada"},"content":" + \",\"","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"Dethada"},"content":" + Parser.dateTimeToString(due)","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"Dethada"},"content":" + \",\";","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":38,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":39,"author":{"gitId":"Dethada"},"content":" @Override","lastModifiedDate":"2024-01-20"},{"lineNumber":40,"author":{"gitId":"Dethada"},"content":" public String toString() {","lastModifiedDate":"2024-01-20"},{"lineNumber":41,"author":{"gitId":"Dethada"},"content":" return \"[\"","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"Dethada"},"content":" + TYPE_SYMBOL","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"Dethada"},"content":" + \"]\"","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"Dethada"},"content":" + super.toString()","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"Dethada"},"content":" + \" (by: \"","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"Dethada"},"content":" + Parser.dateTimeToString(due)","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"Dethada"},"content":" + \")\";","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-20"},{"lineNumber":49,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":50,"author":{"gitId":"Dethada"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":51,"author":{"gitId":"Dethada"},"content":" public boolean equals(Object obj) {","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"Dethada"},"content":" if (!(obj instanceof Deadline)) {","lastModifiedDate":"2024-01-29"},{"lineNumber":53,"author":{"gitId":"Dethada"},"content":" return false;","lastModifiedDate":"2024-01-29"},{"lineNumber":54,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":55,"author":{"gitId":"Dethada"},"content":" Deadline other \u003d (Deadline) obj;","lastModifiedDate":"2024-01-29"},{"lineNumber":56,"author":{"gitId":"Dethada"},"content":" return super.equals(other) \u0026\u0026 due.equals(other.due);","lastModifiedDate":"2024-01-29"},{"lineNumber":57,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":58,"author":{"gitId":"Dethada"},"content":"}","lastModifiedDate":"2024-01-20"}],"authorContributionMap":{"Dethada":58}},{"path":"src/main/java/cappy/task/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Dethada"},"content":"package cappy.task;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"Dethada"},"content":"import cappy.parser.Parser;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"Dethada"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"Dethada"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-20"},{"lineNumber":8,"author":{"gitId":"Dethada"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"Dethada"},"content":" * The type symbol for the Event Task.","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"Dethada"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"Dethada"},"content":" public static final String TYPE_SYMBOL \u003d \"E\";","lastModifiedDate":"2024-01-27"},{"lineNumber":12,"author":{"gitId":"Dethada"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"Dethada"},"content":" * The starting date time for the Event Task.","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"Dethada"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"Dethada"},"content":" private final LocalDateTime begin;","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"Dethada"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"Dethada"},"content":" * The ending date time for the Event Task.","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"Dethada"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"Dethada"},"content":" private final LocalDateTime end;","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-20"},{"lineNumber":21,"author":{"gitId":"Dethada"},"content":" public Event(String description, LocalDateTime begin, LocalDateTime end) {","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"Dethada"},"content":" super(description);","lastModifiedDate":"2024-01-20"},{"lineNumber":23,"author":{"gitId":"Dethada"},"content":" this.begin \u003d begin;","lastModifiedDate":"2024-01-20"},{"lineNumber":24,"author":{"gitId":"Dethada"},"content":" this.end \u003d end;","lastModifiedDate":"2024-01-20"},{"lineNumber":25,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-20"},{"lineNumber":26,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-20"},{"lineNumber":27,"author":{"gitId":"Dethada"},"content":" public Event(String description, boolean isDone, LocalDateTime begin, LocalDateTime end) {","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"Dethada"},"content":" super(description, isDone);","lastModifiedDate":"2024-01-27"},{"lineNumber":29,"author":{"gitId":"Dethada"},"content":" this.begin \u003d begin;","lastModifiedDate":"2024-01-27"},{"lineNumber":30,"author":{"gitId":"Dethada"},"content":" this.end \u003d end;","lastModifiedDate":"2024-01-27"},{"lineNumber":31,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":32,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":33,"author":{"gitId":"Dethada"},"content":" @Override","lastModifiedDate":"2024-01-26"},{"lineNumber":34,"author":{"gitId":"Dethada"},"content":" public String toCsv() {","lastModifiedDate":"2024-01-26"},{"lineNumber":35,"author":{"gitId":"Dethada"},"content":" return TYPE_SYMBOL","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"Dethada"},"content":" + \",\"","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"Dethada"},"content":" + (super.getDone() ? \"1\" : \"0\")","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"Dethada"},"content":" + \",\"","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"Dethada"},"content":" + super.getDescription()","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"Dethada"},"content":" + \",\"","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"Dethada"},"content":" + Parser.dateTimeToString(begin)","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"Dethada"},"content":" + \",\"","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"Dethada"},"content":" + Parser.dateTimeToString(end);","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":45,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":46,"author":{"gitId":"Dethada"},"content":" @Override","lastModifiedDate":"2024-01-20"},{"lineNumber":47,"author":{"gitId":"Dethada"},"content":" public String toString() {","lastModifiedDate":"2024-01-20"},{"lineNumber":48,"author":{"gitId":"Dethada"},"content":" return \"[\"","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"Dethada"},"content":" + TYPE_SYMBOL","lastModifiedDate":"2024-01-29"},{"lineNumber":50,"author":{"gitId":"Dethada"},"content":" + \"]\"","lastModifiedDate":"2024-01-29"},{"lineNumber":51,"author":{"gitId":"Dethada"},"content":" + super.toString()","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"Dethada"},"content":" + \" (from: \"","lastModifiedDate":"2024-01-29"},{"lineNumber":53,"author":{"gitId":"Dethada"},"content":" + Parser.dateTimeToString(begin)","lastModifiedDate":"2024-01-29"},{"lineNumber":54,"author":{"gitId":"Dethada"},"content":" + \" to: \"","lastModifiedDate":"2024-01-29"},{"lineNumber":55,"author":{"gitId":"Dethada"},"content":" + Parser.dateTimeToString(end)","lastModifiedDate":"2024-01-29"},{"lineNumber":56,"author":{"gitId":"Dethada"},"content":" + \")\";","lastModifiedDate":"2024-01-29"},{"lineNumber":57,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-20"},{"lineNumber":58,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":59,"author":{"gitId":"Dethada"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":60,"author":{"gitId":"Dethada"},"content":" public boolean equals(Object obj) {","lastModifiedDate":"2024-01-29"},{"lineNumber":61,"author":{"gitId":"Dethada"},"content":" if (!(obj instanceof Event)) {","lastModifiedDate":"2024-01-29"},{"lineNumber":62,"author":{"gitId":"Dethada"},"content":" return false;","lastModifiedDate":"2024-01-29"},{"lineNumber":63,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":64,"author":{"gitId":"Dethada"},"content":" Event other \u003d (Event) obj;","lastModifiedDate":"2024-01-29"},{"lineNumber":65,"author":{"gitId":"Dethada"},"content":" return super.equals(other) \u0026\u0026 begin.equals(other.begin) \u0026\u0026 end.equals(other.end);","lastModifiedDate":"2024-01-29"},{"lineNumber":66,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":67,"author":{"gitId":"Dethada"},"content":"}","lastModifiedDate":"2024-01-20"}],"authorContributionMap":{"Dethada":67}},{"path":"src/main/java/cappy/task/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Dethada"},"content":"package cappy.task;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"Dethada"},"content":"import cappy.storage.CsvFormat;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"Dethada"},"content":"/**","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"Dethada"},"content":" * Abstract base class representing a generic task in the task management system.","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"Dethada"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"Dethada"},"content":" * \u003cp\u003eThe {@code Task} class provides a common structure for various task types","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"Dethada"},"content":" * by defining properties such as description and completion status. It also implements","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"Dethada"},"content":" * the {@link CsvFormat} interface for conversion to CSV (Comma-Separated Values) format.","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"Dethada"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"Dethada"},"content":" * \u003cp\u003e\u003cstrong\u003eDescription:\u003c/strong\u003e The description of the task, specifying its details or content.","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"Dethada"},"content":" * \u003cbr\u003e\u003cstrong\u003eCompletion Status:\u003c/strong\u003e The status of the task, indicating whether it is done or not.","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"Dethada"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"Dethada"},"content":"public abstract class Task implements CsvFormat {","lastModifiedDate":"2024-01-26"},{"lineNumber":16,"author":{"gitId":"Dethada"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"Dethada"},"content":" * The description for the Task.","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"Dethada"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"Dethada"},"content":" private String description;","lastModifiedDate":"2024-01-20"},{"lineNumber":20,"author":{"gitId":"Dethada"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"Dethada"},"content":" * The status of the Task, true if it is done.","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"Dethada"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"Dethada"},"content":" private boolean isDone;","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-20"},{"lineNumber":25,"author":{"gitId":"Dethada"},"content":" public Task(String description) {","lastModifiedDate":"2024-01-20"},{"lineNumber":26,"author":{"gitId":"Dethada"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-20"},{"lineNumber":27,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-20"},{"lineNumber":28,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-20"},{"lineNumber":29,"author":{"gitId":"Dethada"},"content":" public Task(String description, boolean isDone) {","lastModifiedDate":"2024-01-27"},{"lineNumber":30,"author":{"gitId":"Dethada"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-27"},{"lineNumber":31,"author":{"gitId":"Dethada"},"content":" this.isDone \u003d isDone;","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":33,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":34,"author":{"gitId":"Dethada"},"content":" public String getDescription() {","lastModifiedDate":"2024-01-20"},{"lineNumber":35,"author":{"gitId":"Dethada"},"content":" return description;","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-20"},{"lineNumber":37,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-20"},{"lineNumber":38,"author":{"gitId":"Dethada"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"Dethada"},"content":" * Returns the status of the Task, true if it is done.","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"Dethada"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"Dethada"},"content":" public boolean getDone() {","lastModifiedDate":"2024-01-20"},{"lineNumber":42,"author":{"gitId":"Dethada"},"content":" return isDone;","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-20"},{"lineNumber":44,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-20"},{"lineNumber":45,"author":{"gitId":"Dethada"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"Dethada"},"content":" * Sets the status of the task to be done (complete).","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"Dethada"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"Dethada"},"content":" public void done() {","lastModifiedDate":"2024-01-20"},{"lineNumber":49,"author":{"gitId":"Dethada"},"content":" isDone \u003d true;","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-20"},{"lineNumber":51,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-20"},{"lineNumber":52,"author":{"gitId":"Dethada"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"Dethada"},"content":" * Sets the status of the task to be undone (incomplete).","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"Dethada"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"Dethada"},"content":" public void undone() {","lastModifiedDate":"2024-01-20"},{"lineNumber":56,"author":{"gitId":"Dethada"},"content":" isDone \u003d false;","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-20"},{"lineNumber":58,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-20"},{"lineNumber":59,"author":{"gitId":"Dethada"},"content":" @Override","lastModifiedDate":"2024-01-20"},{"lineNumber":60,"author":{"gitId":"Dethada"},"content":" public String toString() {","lastModifiedDate":"2024-01-20"},{"lineNumber":61,"author":{"gitId":"Dethada"},"content":" return \"[\" + (isDone ? \"X\" : \" \") + \"] \" + description;","lastModifiedDate":"2024-01-30"},{"lineNumber":62,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-20"},{"lineNumber":63,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":64,"author":{"gitId":"Dethada"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":65,"author":{"gitId":"Dethada"},"content":" public boolean equals(Object obj) {","lastModifiedDate":"2024-01-29"},{"lineNumber":66,"author":{"gitId":"Dethada"},"content":" if (!(obj instanceof Task)) {","lastModifiedDate":"2024-01-29"},{"lineNumber":67,"author":{"gitId":"Dethada"},"content":" return false;","lastModifiedDate":"2024-01-29"},{"lineNumber":68,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":69,"author":{"gitId":"Dethada"},"content":" Task other \u003d (Task) obj;","lastModifiedDate":"2024-01-29"},{"lineNumber":70,"author":{"gitId":"Dethada"},"content":" return description.equals(other.description) \u0026\u0026 isDone \u003d\u003d other.isDone;","lastModifiedDate":"2024-01-30"},{"lineNumber":71,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":72,"author":{"gitId":"Dethada"},"content":"}","lastModifiedDate":"2024-01-20"}],"authorContributionMap":{"Dethada":72}},{"path":"src/main/java/cappy/task/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Dethada"},"content":"package cappy.task;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"Dethada"},"content":"import cappy.error.CappyException;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"Dethada"},"content":"import cappy.parser.Parser;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"Dethada"},"content":"import cappy.storage.Storage;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"Dethada"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"Dethada"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"Dethada"},"content":"import java.util.List;","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"Dethada"},"content":"/**","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"Dethada"},"content":" * Represents a collection of tasks in the task management system.","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"Dethada"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"Dethada"},"content":" * \u003cp\u003eThe {@code TaskList} class manages a list of tasks and provides operations such as adding,","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"Dethada"},"content":" * retrieving, removing tasks, and saving/loading tasks to/from storage. Each task is associated","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"Dethada"},"content":" * with a 1-based index within the task list.","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"Dethada"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"Dethada"},"content":"public class TaskList {","lastModifiedDate":"2024-01-20"},{"lineNumber":19,"author":{"gitId":"Dethada"},"content":" private final List\u003cTask\u003e tasks;","lastModifiedDate":"2024-01-20"},{"lineNumber":20,"author":{"gitId":"Dethada"},"content":" private final Storage storage;","lastModifiedDate":"2024-01-26"},{"lineNumber":21,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-20"},{"lineNumber":22,"author":{"gitId":"Dethada"},"content":" private TaskList() {","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"Dethada"},"content":" this.tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"Dethada"},"content":" storage \u003d null;","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"Dethada"},"content":" private TaskList(Storage storage) {","lastModifiedDate":"2024-01-27"},{"lineNumber":28,"author":{"gitId":"Dethada"},"content":" this.tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-20"},{"lineNumber":29,"author":{"gitId":"Dethada"},"content":" this.storage \u003d storage;","lastModifiedDate":"2024-01-26"},{"lineNumber":30,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-20"},{"lineNumber":31,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-20"},{"lineNumber":32,"author":{"gitId":"Dethada"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"Dethada"},"content":" * Adds a task to this task list.","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"Dethada"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"Dethada"},"content":" * @param task The task to be added.","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"Dethada"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"Dethada"},"content":" public void addTask(Task task) {","lastModifiedDate":"2024-01-20"},{"lineNumber":38,"author":{"gitId":"Dethada"},"content":" tasks.add(task);","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-20"},{"lineNumber":40,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-20"},{"lineNumber":41,"author":{"gitId":"Dethada"},"content":" /**","lastModifiedDate":"2024-01-20"},{"lineNumber":42,"author":{"gitId":"Dethada"},"content":" * Returns the task at the specified 1-based index.","lastModifiedDate":"2024-01-20"},{"lineNumber":43,"author":{"gitId":"Dethada"},"content":" *","lastModifiedDate":"2024-01-20"},{"lineNumber":44,"author":{"gitId":"Dethada"},"content":" * @param index 1-based index of the task to return.","lastModifiedDate":"2024-01-20"},{"lineNumber":45,"author":{"gitId":"Dethada"},"content":" * @return the task at the specified 1-based index.","lastModifiedDate":"2024-01-20"},{"lineNumber":46,"author":{"gitId":"Dethada"},"content":" */","lastModifiedDate":"2024-01-20"},{"lineNumber":47,"author":{"gitId":"Dethada"},"content":" public Task getTask(int index) {","lastModifiedDate":"2024-01-20"},{"lineNumber":48,"author":{"gitId":"Dethada"},"content":" return tasks.get(index - 1);","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-20"},{"lineNumber":50,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-20"},{"lineNumber":51,"author":{"gitId":"Dethada"},"content":" /**","lastModifiedDate":"2024-01-21"},{"lineNumber":52,"author":{"gitId":"Dethada"},"content":" * Removes the task at the specified 1-based index.","lastModifiedDate":"2024-01-21"},{"lineNumber":53,"author":{"gitId":"Dethada"},"content":" *","lastModifiedDate":"2024-01-21"},{"lineNumber":54,"author":{"gitId":"Dethada"},"content":" * @param index 1-based index of the task to remove.","lastModifiedDate":"2024-01-21"},{"lineNumber":55,"author":{"gitId":"Dethada"},"content":" */","lastModifiedDate":"2024-01-21"},{"lineNumber":56,"author":{"gitId":"Dethada"},"content":" public void removeTask(int index) {","lastModifiedDate":"2024-01-21"},{"lineNumber":57,"author":{"gitId":"Dethada"},"content":" tasks.remove(index - 1);","lastModifiedDate":"2024-01-29"},{"lineNumber":58,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":59,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":60,"author":{"gitId":"Dethada"},"content":" /** Returns the number of tasks in this task list. */","lastModifiedDate":"2024-01-30"},{"lineNumber":61,"author":{"gitId":"Dethada"},"content":" public int size() {","lastModifiedDate":"2024-01-20"},{"lineNumber":62,"author":{"gitId":"Dethada"},"content":" return tasks.size();","lastModifiedDate":"2024-01-29"},{"lineNumber":63,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-20"},{"lineNumber":64,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-20"},{"lineNumber":65,"author":{"gitId":"Dethada"},"content":" /**","lastModifiedDate":"2024-01-21"},{"lineNumber":66,"author":{"gitId":"Dethada"},"content":" * Returns true if the specified index is valid.","lastModifiedDate":"2024-01-21"},{"lineNumber":67,"author":{"gitId":"Dethada"},"content":" *","lastModifiedDate":"2024-01-21"},{"lineNumber":68,"author":{"gitId":"Dethada"},"content":" * @param index 1-based index to check.","lastModifiedDate":"2024-01-21"},{"lineNumber":69,"author":{"gitId":"Dethada"},"content":" * @return true if the specified index is valid.","lastModifiedDate":"2024-01-21"},{"lineNumber":70,"author":{"gitId":"Dethada"},"content":" */","lastModifiedDate":"2024-01-21"},{"lineNumber":71,"author":{"gitId":"Dethada"},"content":" public boolean validIndex(int index) {","lastModifiedDate":"2024-01-20"},{"lineNumber":72,"author":{"gitId":"Dethada"},"content":" return index \u003e\u003d 1 \u0026\u0026 index \u003c\u003d tasks.size();","lastModifiedDate":"2024-01-29"},{"lineNumber":73,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-20"},{"lineNumber":74,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-20"},{"lineNumber":75,"author":{"gitId":"Dethada"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":76,"author":{"gitId":"Dethada"},"content":" * Saves the current state of the task list to storage.","lastModifiedDate":"2024-01-30"},{"lineNumber":77,"author":{"gitId":"Dethada"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":78,"author":{"gitId":"Dethada"},"content":" * @throws IOException If any I/O Error is encountered when saving.","lastModifiedDate":"2024-01-30"},{"lineNumber":79,"author":{"gitId":"Dethada"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":80,"author":{"gitId":"Dethada"},"content":" public void save() throws IOException {","lastModifiedDate":"2024-01-26"},{"lineNumber":81,"author":{"gitId":"Dethada"},"content":" if (storage !\u003d null) {","lastModifiedDate":"2024-01-30"},{"lineNumber":82,"author":{"gitId":"Dethada"},"content":" storage.empty();","lastModifiedDate":"2024-01-29"},{"lineNumber":83,"author":{"gitId":"Dethada"},"content":" for (Task task : tasks) {","lastModifiedDate":"2024-01-29"},{"lineNumber":84,"author":{"gitId":"Dethada"},"content":" storage.writeLine(task.toCsv());","lastModifiedDate":"2024-01-29"},{"lineNumber":85,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":86,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":87,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":88,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":89,"author":{"gitId":"Dethada"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":90,"author":{"gitId":"Dethada"},"content":" * Creates a new TaskList using the data stored in the storage.","lastModifiedDate":"2024-01-30"},{"lineNumber":91,"author":{"gitId":"Dethada"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":92,"author":{"gitId":"Dethada"},"content":" * @param storage The storage to load data from.","lastModifiedDate":"2024-01-30"},{"lineNumber":93,"author":{"gitId":"Dethada"},"content":" * @return The newly created TaskList.","lastModifiedDate":"2024-01-30"},{"lineNumber":94,"author":{"gitId":"Dethada"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":95,"author":{"gitId":"Dethada"},"content":" public static TaskList load(Storage storage) throws IOException, CappyException {","lastModifiedDate":"2024-01-29"},{"lineNumber":96,"author":{"gitId":"Dethada"},"content":" TaskList taskList \u003d new TaskList(storage);","lastModifiedDate":"2024-01-27"},{"lineNumber":97,"author":{"gitId":"Dethada"},"content":" String[] csvLines \u003d storage.readAll().split(\"\\n\");","lastModifiedDate":"2024-01-27"},{"lineNumber":98,"author":{"gitId":"Dethada"},"content":" for (String line : csvLines) {","lastModifiedDate":"2024-01-27"},{"lineNumber":99,"author":{"gitId":"Dethada"},"content":" if (!line.equals(\"\")) {","lastModifiedDate":"2024-01-27"},{"lineNumber":100,"author":{"gitId":"Dethada"},"content":" taskList.addTask(Parser.parseCsvLine(line));","lastModifiedDate":"2024-01-28"},{"lineNumber":101,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":102,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":103,"author":{"gitId":"Dethada"},"content":" return taskList;","lastModifiedDate":"2024-01-27"},{"lineNumber":104,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":105,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":106,"author":{"gitId":"Dethada"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":107,"author":{"gitId":"Dethada"},"content":" * Returns a new TaskList containing all tasks that match the specified keyword.","lastModifiedDate":"2024-01-30"},{"lineNumber":108,"author":{"gitId":"Dethada"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":109,"author":{"gitId":"Dethada"},"content":" * @param keyword The keyword to search for.","lastModifiedDate":"2024-01-30"},{"lineNumber":110,"author":{"gitId":"Dethada"},"content":" * @return A new TaskList containing all tasks that match the specified keyword.","lastModifiedDate":"2024-01-30"},{"lineNumber":111,"author":{"gitId":"Dethada"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":112,"author":{"gitId":"Dethada"},"content":" public TaskList search(String keyword) {","lastModifiedDate":"2024-01-30"},{"lineNumber":113,"author":{"gitId":"Dethada"},"content":" TaskList taskList \u003d new TaskList();","lastModifiedDate":"2024-01-30"},{"lineNumber":114,"author":{"gitId":"Dethada"},"content":" for (Task task : tasks) {","lastModifiedDate":"2024-01-30"},{"lineNumber":115,"author":{"gitId":"Dethada"},"content":" if (task.getDescription().contains(keyword)) {","lastModifiedDate":"2024-01-30"},{"lineNumber":116,"author":{"gitId":"Dethada"},"content":" taskList.addTask(task);","lastModifiedDate":"2024-01-30"},{"lineNumber":117,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":118,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":119,"author":{"gitId":"Dethada"},"content":" return taskList;","lastModifiedDate":"2024-01-30"},{"lineNumber":120,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":121,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":122,"author":{"gitId":"Dethada"},"content":" @Override","lastModifiedDate":"2024-01-20"},{"lineNumber":123,"author":{"gitId":"Dethada"},"content":" public String toString() {","lastModifiedDate":"2024-01-20"},{"lineNumber":124,"author":{"gitId":"Dethada"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2024-01-20"},{"lineNumber":125,"author":{"gitId":"Dethada"},"content":" for (int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2024-01-29"},{"lineNumber":126,"author":{"gitId":"Dethada"},"content":" sb.append(i + 1).append(\". \").append(tasks.get(i).toString()).append(\"\\n\");","lastModifiedDate":"2024-01-29"},{"lineNumber":127,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-20"},{"lineNumber":128,"author":{"gitId":"Dethada"},"content":" return sb.toString();","lastModifiedDate":"2024-01-20"},{"lineNumber":129,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-20"},{"lineNumber":130,"author":{"gitId":"Dethada"},"content":"}","lastModifiedDate":"2024-01-20"}],"authorContributionMap":{"Dethada":130}},{"path":"src/main/java/cappy/task/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Dethada"},"content":"package cappy.task;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"Dethada"},"content":"public class Todo extends Task {","lastModifiedDate":"2024-01-20"},{"lineNumber":4,"author":{"gitId":"Dethada"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"Dethada"},"content":" * The type symbol for the Todo Task.","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"Dethada"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"Dethada"},"content":" public static final String TYPE_SYMBOL \u003d \"T\";","lastModifiedDate":"2024-01-27"},{"lineNumber":8,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"Dethada"},"content":" public Todo(String description) {","lastModifiedDate":"2024-01-20"},{"lineNumber":10,"author":{"gitId":"Dethada"},"content":" super(description);","lastModifiedDate":"2024-01-20"},{"lineNumber":11,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-20"},{"lineNumber":12,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-20"},{"lineNumber":13,"author":{"gitId":"Dethada"},"content":" public Todo(String description, boolean isDone) {","lastModifiedDate":"2024-01-27"},{"lineNumber":14,"author":{"gitId":"Dethada"},"content":" super(description, isDone);","lastModifiedDate":"2024-01-27"},{"lineNumber":15,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":16,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":17,"author":{"gitId":"Dethada"},"content":" @Override","lastModifiedDate":"2024-01-26"},{"lineNumber":18,"author":{"gitId":"Dethada"},"content":" public String toCsv() {","lastModifiedDate":"2024-01-26"},{"lineNumber":19,"author":{"gitId":"Dethada"},"content":" return TYPE_SYMBOL","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"Dethada"},"content":" + \",\"","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"Dethada"},"content":" + (super.getDone() ? \"1\" : \"0\")","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"Dethada"},"content":" + \",\"","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"Dethada"},"content":" + super.getDescription()","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"Dethada"},"content":" + \",,\";","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":26,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":27,"author":{"gitId":"Dethada"},"content":" @Override","lastModifiedDate":"2024-01-20"},{"lineNumber":28,"author":{"gitId":"Dethada"},"content":" public String toString() {","lastModifiedDate":"2024-01-20"},{"lineNumber":29,"author":{"gitId":"Dethada"},"content":" return \"[\" + TYPE_SYMBOL + \"]\" + super.toString();","lastModifiedDate":"2024-01-26"},{"lineNumber":30,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-20"},{"lineNumber":31,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"Dethada"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"Dethada"},"content":" public boolean equals(Object obj) {","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"Dethada"},"content":" if (!(obj instanceof Todo)) {","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"Dethada"},"content":" return false;","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"Dethada"},"content":" Todo other \u003d (Todo) obj;","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"Dethada"},"content":" return super.equals(other);","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"Dethada"},"content":"}","lastModifiedDate":"2024-01-20"}],"authorContributionMap":{"Dethada":40}},{"path":"src/main/java/cappy/ui/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Dethada"},"content":"package cappy.ui;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"Dethada"},"content":"import cappy.task.Task;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"Dethada"},"content":"import cappy.task.TaskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"Dethada"},"content":"import cappy.util.Logger;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"Dethada"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"Dethada"},"content":"/**","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"Dethada"},"content":" * User Interface (Ui) class for interacting with the user and displaying messages.","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"Dethada"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"Dethada"},"content":" * \u003cp\u003eThe {@code Ui} class provides methods for displaying various messages to the user, including","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"Dethada"},"content":" * newly added tasks, banners, error messages, greetings, and farewell messages. It utilizes the","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"Dethada"},"content":" * {@link Logger} class for outputting messages to the console with a consistent format.","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"Dethada"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"Dethada"},"content":"public class Ui implements AutoCloseable {","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"Dethada"},"content":" private static final String HORIZONTAL_LINE \u003d","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"Dethada"},"content":" \"____________________________________________________________\";","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"Dethada"},"content":" private static final String INDENT \u003d \" \";","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"Dethada"},"content":" private final Scanner SCANNER \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"Dethada"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"Dethada"},"content":" * Reads a line from Standard inupt and return that.","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"Dethada"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"Dethada"},"content":" * @return The line read from stdin.","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"Dethada"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"Dethada"},"content":" public String getInput() {","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"Dethada"},"content":" return SCANNER.nextLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"Dethada"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"Dethada"},"content":" * Shows the newly added task and the current number of tasks in the task list to the user.","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"Dethada"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"Dethada"},"content":" * @param task The newly added task.","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"Dethada"},"content":" * @param tasks The current TaskList.","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"Dethada"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"Dethada"},"content":" public void showAddedTask(Task task, TaskList tasks) {","lastModifiedDate":"2024-01-28"},{"lineNumber":38,"author":{"gitId":"Dethada"},"content":" String[] messages \u003d {","lastModifiedDate":"2024-01-28"},{"lineNumber":39,"author":{"gitId":"Dethada"},"content":" \"Got it. I\u0027ve added this task:\",","lastModifiedDate":"2024-01-28"},{"lineNumber":40,"author":{"gitId":"Dethada"},"content":" task.toString(),","lastModifiedDate":"2024-01-28"},{"lineNumber":41,"author":{"gitId":"Dethada"},"content":" \"Now you have \" + tasks.size() + \" tasks in the list.\"","lastModifiedDate":"2024-01-28"},{"lineNumber":42,"author":{"gitId":"Dethada"},"content":" };","lastModifiedDate":"2024-01-28"},{"lineNumber":43,"author":{"gitId":"Dethada"},"content":" show(messages);","lastModifiedDate":"2024-01-28"},{"lineNumber":44,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":45,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":46,"author":{"gitId":"Dethada"},"content":" /** Shows the Cappy banner to the user. */","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"Dethada"},"content":" public void showBanner() {","lastModifiedDate":"2024-01-28"},{"lineNumber":48,"author":{"gitId":"Dethada"},"content":" Logger.print(\" ██████╗ █████╗ ██████╗ ██████╗ ██╗ ██╗\");","lastModifiedDate":"2024-01-28"},{"lineNumber":49,"author":{"gitId":"Dethada"},"content":" Logger.print(\"██╔════╝██╔══██╗██╔══██╗██╔══██╗╚██╗ ██╔╝\");","lastModifiedDate":"2024-01-28"},{"lineNumber":50,"author":{"gitId":"Dethada"},"content":" Logger.print(\"██║ ███████║██████╔╝██████╔╝ ╚████╔╝ \");","lastModifiedDate":"2024-01-28"},{"lineNumber":51,"author":{"gitId":"Dethada"},"content":" Logger.print(\"██║ ██╔══██║██╔═══╝ ██╔═══╝ ╚██╔╝ \");","lastModifiedDate":"2024-01-28"},{"lineNumber":52,"author":{"gitId":"Dethada"},"content":" Logger.print(\"╚██████╗██║ ██║██║ ██║ ██║ \");","lastModifiedDate":"2024-01-28"},{"lineNumber":53,"author":{"gitId":"Dethada"},"content":" Logger.print(\" ╚═════╝╚═╝ ╚═╝╚═╝ ╚═╝ ╚═╝ \");","lastModifiedDate":"2024-01-28"},{"lineNumber":54,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":55,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":56,"author":{"gitId":"Dethada"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"Dethada"},"content":" * Shows a message to the user.","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"Dethada"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":59,"author":{"gitId":"Dethada"},"content":" * @param message The message to be displayed.","lastModifiedDate":"2024-01-30"},{"lineNumber":60,"author":{"gitId":"Dethada"},"content":" * @since 1.0","lastModifiedDate":"2024-01-30"},{"lineNumber":61,"author":{"gitId":"Dethada"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":62,"author":{"gitId":"Dethada"},"content":" public void show(String message) {","lastModifiedDate":"2024-01-28"},{"lineNumber":63,"author":{"gitId":"Dethada"},"content":" Logger.print(INDENT + HORIZONTAL_LINE);","lastModifiedDate":"2024-01-28"},{"lineNumber":64,"author":{"gitId":"Dethada"},"content":" Logger.print(INDENT + \" \" + message);","lastModifiedDate":"2024-01-28"},{"lineNumber":65,"author":{"gitId":"Dethada"},"content":" Logger.print(INDENT + HORIZONTAL_LINE + \"\\n\");","lastModifiedDate":"2024-01-28"},{"lineNumber":66,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":67,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":68,"author":{"gitId":"Dethada"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":69,"author":{"gitId":"Dethada"},"content":" * Shows the given messages to the user. Each message will be on a newline.","lastModifiedDate":"2024-01-30"},{"lineNumber":70,"author":{"gitId":"Dethada"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":71,"author":{"gitId":"Dethada"},"content":" * @param message The String array of messages to be displayed.","lastModifiedDate":"2024-01-30"},{"lineNumber":72,"author":{"gitId":"Dethada"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":73,"author":{"gitId":"Dethada"},"content":" public void show(String[] messages) {","lastModifiedDate":"2024-01-28"},{"lineNumber":74,"author":{"gitId":"Dethada"},"content":" Logger.print(INDENT + HORIZONTAL_LINE);","lastModifiedDate":"2024-01-28"},{"lineNumber":75,"author":{"gitId":"Dethada"},"content":" for (String msg : messages) {","lastModifiedDate":"2024-01-28"},{"lineNumber":76,"author":{"gitId":"Dethada"},"content":" Logger.print(INDENT + \" \" + msg);","lastModifiedDate":"2024-01-28"},{"lineNumber":77,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":78,"author":{"gitId":"Dethada"},"content":" Logger.print(INDENT + HORIZONTAL_LINE + \"\\n\");","lastModifiedDate":"2024-01-28"},{"lineNumber":79,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":80,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":81,"author":{"gitId":"Dethada"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":82,"author":{"gitId":"Dethada"},"content":" * Shows an error message to the user.","lastModifiedDate":"2024-01-30"},{"lineNumber":83,"author":{"gitId":"Dethada"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":84,"author":{"gitId":"Dethada"},"content":" * @param message The error message to be displayed.","lastModifiedDate":"2024-01-30"},{"lineNumber":85,"author":{"gitId":"Dethada"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":86,"author":{"gitId":"Dethada"},"content":" public void showError(String message) {","lastModifiedDate":"2024-01-28"},{"lineNumber":87,"author":{"gitId":"Dethada"},"content":" Logger.error(message);","lastModifiedDate":"2024-01-28"},{"lineNumber":88,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":89,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":90,"author":{"gitId":"Dethada"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":91,"author":{"gitId":"Dethada"},"content":" * Shows an exception to the user.","lastModifiedDate":"2024-01-30"},{"lineNumber":92,"author":{"gitId":"Dethada"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":93,"author":{"gitId":"Dethada"},"content":" * @param exception The exception to be displayed.","lastModifiedDate":"2024-01-30"},{"lineNumber":94,"author":{"gitId":"Dethada"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":95,"author":{"gitId":"Dethada"},"content":" public void showError(Exception exception) {","lastModifiedDate":"2024-01-28"},{"lineNumber":96,"author":{"gitId":"Dethada"},"content":" Logger.error(exception.getMessage());","lastModifiedDate":"2024-01-28"},{"lineNumber":97,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":98,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":99,"author":{"gitId":"Dethada"},"content":" /** Shows a greeting message to the user. */","lastModifiedDate":"2024-01-30"},{"lineNumber":100,"author":{"gitId":"Dethada"},"content":" public void showGreetings() {","lastModifiedDate":"2024-01-28"},{"lineNumber":101,"author":{"gitId":"Dethada"},"content":" String[] messages \u003d {\"Hello! I\u0027m Cappy\", \"What can I do for you?\"};","lastModifiedDate":"2024-01-28"},{"lineNumber":102,"author":{"gitId":"Dethada"},"content":" show(messages);","lastModifiedDate":"2024-01-28"},{"lineNumber":103,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":104,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":105,"author":{"gitId":"Dethada"},"content":" /** Shows a farewell message to the user. */","lastModifiedDate":"2024-01-30"},{"lineNumber":106,"author":{"gitId":"Dethada"},"content":" public void showExit() {","lastModifiedDate":"2024-01-28"},{"lineNumber":107,"author":{"gitId":"Dethada"},"content":" show(\"Bye. Hope to see you again soon!\");","lastModifiedDate":"2024-01-28"},{"lineNumber":108,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":109,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":110,"author":{"gitId":"Dethada"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":111,"author":{"gitId":"Dethada"},"content":" public void close() {","lastModifiedDate":"2024-01-30"},{"lineNumber":112,"author":{"gitId":"Dethada"},"content":" SCANNER.close();","lastModifiedDate":"2024-01-30"},{"lineNumber":113,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":114,"author":{"gitId":"Dethada"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"Dethada":114}},{"path":"src/main/java/cappy/util/Logger.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Dethada"},"content":"package cappy.util;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"Dethada"},"content":"/**","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"Dethada"},"content":" * Utility class for logging messages at different log levels.","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"Dethada"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"Dethada"},"content":" * \u003cp\u003eThe {@code Logger} class provides methods to log messages at various log levels,","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"Dethada"},"content":" * allowing developers to control the granularity of logging based on the severity of messages.","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"Dethada"},"content":" * The supported log levels include DEBUG, INFO, WARN, and ERROR.","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"Dethada"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"Dethada"},"content":" * \u003cp\u003e\u003cstrong\u003eLog Levels:\u003c/strong\u003e","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"Dethada"},"content":" * \u003cul\u003e","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"Dethada"},"content":" * \u003cli\u003e{@code DEBUG}: Fine-grained debugging information. Typically used for diagnosing issues during development.\u003c/li\u003e","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"Dethada"},"content":" * \u003cli\u003e{@code INFO}: General information about the application\u0027s state or significant events. Used for informative purposes.\u003c/li\u003e","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"Dethada"},"content":" * \u003cli\u003e{@code WARN}: Warning messages indicating potential issues that may require attention but do not disrupt normal operation.\u003c/li\u003e","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"Dethada"},"content":" * \u003cli\u003e{@code ERROR}: Critical error messages indicating a failure or issue that requires immediate attention.\u003c/li\u003e","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"Dethada"},"content":" * \u003c/ul\u003e","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"Dethada"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"Dethada"},"content":" * \u003cp\u003eThe log level can be dynamically set using the {@link #setLogLevel(LogLevel)} method.","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"Dethada"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"Dethada"},"content":"public class Logger {","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"Dethada"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"Dethada"},"content":" * Enumeration representing different log levels.","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"Dethada"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"Dethada"},"content":" public enum LogLevel {","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"Dethada"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"Dethada"},"content":" * Fine-grained debugging information.","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"Dethada"},"content":" * Typically used for diagnosing issues during development.","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"Dethada"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"Dethada"},"content":" DEBUG,","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"Dethada"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"Dethada"},"content":" * General information about the application\u0027s state or significant events.","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"Dethada"},"content":" * Used for informative purposes.","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"Dethada"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"Dethada"},"content":" INFO,","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"Dethada"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"Dethada"},"content":" * Warning messages indicating potential issues that may require attention","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"Dethada"},"content":" * but do not disrupt normal operation.","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"Dethada"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"Dethada"},"content":" WARN,","lastModifiedDate":"2024-01-28"},{"lineNumber":42,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"Dethada"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"Dethada"},"content":" * Critical error messages indicating a failure or issue that requires immediate attention.","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"Dethada"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"Dethada"},"content":" ERROR","lastModifiedDate":"2024-01-28"},{"lineNumber":47,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":48,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":49,"author":{"gitId":"Dethada"},"content":" private static LogLevel logLevel \u003d LogLevel.INFO;","lastModifiedDate":"2024-01-28"},{"lineNumber":50,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":51,"author":{"gitId":"Dethada"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"Dethada"},"content":" * Sets the log level for the Logger.","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"Dethada"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"Dethada"},"content":" * \u003cp\u003eMessages below the specified log level will not be printed.","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"Dethada"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"Dethada"},"content":" * @param logLevel The desired log level.","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"Dethada"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"Dethada"},"content":" public static void setLogLevel(LogLevel logLevel) {","lastModifiedDate":"2024-01-28"},{"lineNumber":59,"author":{"gitId":"Dethada"},"content":" Logger.logLevel \u003d logLevel;","lastModifiedDate":"2024-01-28"},{"lineNumber":60,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":61,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":62,"author":{"gitId":"Dethada"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":63,"author":{"gitId":"Dethada"},"content":" * Prints a general message to the standard output.","lastModifiedDate":"2024-01-30"},{"lineNumber":64,"author":{"gitId":"Dethada"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":65,"author":{"gitId":"Dethada"},"content":" * @param message The message to be printed.","lastModifiedDate":"2024-01-30"},{"lineNumber":66,"author":{"gitId":"Dethada"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":67,"author":{"gitId":"Dethada"},"content":" public static void print(String message) {","lastModifiedDate":"2024-01-28"},{"lineNumber":68,"author":{"gitId":"Dethada"},"content":" System.out.println(message);","lastModifiedDate":"2024-01-28"},{"lineNumber":69,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":70,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":71,"author":{"gitId":"Dethada"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":72,"author":{"gitId":"Dethada"},"content":" * Logs a debug message to the error stream if the log level allows it.","lastModifiedDate":"2024-01-30"},{"lineNumber":73,"author":{"gitId":"Dethada"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":74,"author":{"gitId":"Dethada"},"content":" * @param message The debug message to be logged.","lastModifiedDate":"2024-01-30"},{"lineNumber":75,"author":{"gitId":"Dethada"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":76,"author":{"gitId":"Dethada"},"content":" public static void debug(String message) {","lastModifiedDate":"2024-01-28"},{"lineNumber":77,"author":{"gitId":"Dethada"},"content":" if (Logger.logLevel.compareTo(LogLevel.DEBUG) \u003c\u003d 0) {","lastModifiedDate":"2024-01-28"},{"lineNumber":78,"author":{"gitId":"Dethada"},"content":" System.err.println(\"[DEBUG] \" + message);","lastModifiedDate":"2024-01-28"},{"lineNumber":79,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":80,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":81,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":82,"author":{"gitId":"Dethada"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":83,"author":{"gitId":"Dethada"},"content":" * Logs an info message to the standard output if the log level allows it.","lastModifiedDate":"2024-01-30"},{"lineNumber":84,"author":{"gitId":"Dethada"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":85,"author":{"gitId":"Dethada"},"content":" * @param message The info message to be logged.","lastModifiedDate":"2024-01-30"},{"lineNumber":86,"author":{"gitId":"Dethada"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":87,"author":{"gitId":"Dethada"},"content":" public static void info(String message) {","lastModifiedDate":"2024-01-28"},{"lineNumber":88,"author":{"gitId":"Dethada"},"content":" if (Logger.logLevel.compareTo(LogLevel.INFO) \u003c\u003d 0) {","lastModifiedDate":"2024-01-28"},{"lineNumber":89,"author":{"gitId":"Dethada"},"content":" System.out.println(\"[INFO] \" + message);","lastModifiedDate":"2024-01-28"},{"lineNumber":90,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":91,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":92,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":93,"author":{"gitId":"Dethada"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":94,"author":{"gitId":"Dethada"},"content":" * Logs a warning message to the error stream if the log level allows it.","lastModifiedDate":"2024-01-30"},{"lineNumber":95,"author":{"gitId":"Dethada"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":96,"author":{"gitId":"Dethada"},"content":" * @param message The warning message to be logged.","lastModifiedDate":"2024-01-30"},{"lineNumber":97,"author":{"gitId":"Dethada"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":98,"author":{"gitId":"Dethada"},"content":" public static void warn(String message) {","lastModifiedDate":"2024-01-28"},{"lineNumber":99,"author":{"gitId":"Dethada"},"content":" if (Logger.logLevel.compareTo(LogLevel.WARN) \u003c\u003d 0) {","lastModifiedDate":"2024-01-28"},{"lineNumber":100,"author":{"gitId":"Dethada"},"content":" System.err.println(\"[WARN] \" + message);","lastModifiedDate":"2024-01-28"},{"lineNumber":101,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":102,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":103,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":104,"author":{"gitId":"Dethada"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":105,"author":{"gitId":"Dethada"},"content":" * Logs an error message to the error stream.","lastModifiedDate":"2024-01-30"},{"lineNumber":106,"author":{"gitId":"Dethada"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":107,"author":{"gitId":"Dethada"},"content":" * @param message The error message to be logged.","lastModifiedDate":"2024-01-30"},{"lineNumber":108,"author":{"gitId":"Dethada"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":109,"author":{"gitId":"Dethada"},"content":" public static void error(String message) {","lastModifiedDate":"2024-01-28"},{"lineNumber":110,"author":{"gitId":"Dethada"},"content":" System.err.println(\"[ERROR] \" + message);","lastModifiedDate":"2024-01-28"},{"lineNumber":111,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":112,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":113,"author":{"gitId":"Dethada"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":114,"author":{"gitId":"Dethada"},"content":" * Logs an exception to the error stream.","lastModifiedDate":"2024-01-30"},{"lineNumber":115,"author":{"gitId":"Dethada"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":116,"author":{"gitId":"Dethada"},"content":" * @param message The exception to be logged.","lastModifiedDate":"2024-01-30"},{"lineNumber":117,"author":{"gitId":"Dethada"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":118,"author":{"gitId":"Dethada"},"content":" public static void error(Exception exception) {","lastModifiedDate":"2024-01-30"},{"lineNumber":119,"author":{"gitId":"Dethada"},"content":" System.err.println(\"[ERROR] \" + exception.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":120,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":121,"author":{"gitId":"Dethada"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"Dethada":121}},{"path":"src/test/java/cappy/parser/ParsedInputTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Dethada"},"content":"package cappy.parser;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"Dethada"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"Dethada"},"content":"import static org.junit.jupiter.api.Assertions.fail;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"Dethada"},"content":"import cappy.command.CommandType;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"Dethada"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"Dethada"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"Dethada"},"content":"import java.util.HashMap;","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"Dethada"},"content":"import java.util.Map;","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"Dethada"},"content":"public class ParsedInputTest {","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"Dethada"},"content":" @Test","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"Dethada"},"content":" public void numberOfPositionalArguments() {","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"Dethada"},"content":" HashMap\u003cString, String\u003e namedArgs \u003d new HashMap\u003c\u003e();","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"Dethada"},"content":" ArrayList\u003cString\u003e positionalArgs \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"Dethada"},"content":" String[] args \u003d {\"arg1\", \"arg2\", \"arg3\"};","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"Dethada"},"content":" for (String arg : args) {","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"Dethada"},"content":" positionalArgs.add(arg);","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"Dethada"},"content":" ParsedInput parsedInput \u003d new ParsedInput(CommandType.EMPTY, namedArgs, positionalArgs);","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"Dethada"},"content":" assertEquals(positionalArgs.size(), parsedInput.numberOfPositionalArguments());","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"Dethada"},"content":" @Test","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"Dethada"},"content":" public void numberOfNamedArguments() {","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"Dethada"},"content":" HashMap\u003cString, String\u003e namedArgs \u003d new HashMap\u003c\u003e();","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"Dethada"},"content":" HashMap\u003cString, String\u003e iterNamedArgs \u003d new HashMap\u003c\u003e();","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"Dethada"},"content":" ArrayList\u003cString\u003e positionalArgs \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"Dethada"},"content":" namedArgs.put(\"option1\", \"value1\");","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"Dethada"},"content":" namedArgs.put(\"option2\", \"value2\");","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"Dethada"},"content":" namedArgs.put(\"option3\", \"value3\");","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"Dethada"},"content":" for (Map.Entry\u003cString, String\u003e entry : namedArgs.entrySet()) {","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"Dethada"},"content":" iterNamedArgs.put(entry.getKey(), entry.getValue());","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"Dethada"},"content":" ParsedInput parsedInput \u003d","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"Dethada"},"content":" new ParsedInput(CommandType.EMPTY, iterNamedArgs, positionalArgs);","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"Dethada"},"content":" assertEquals(iterNamedArgs.size(), parsedInput.numberOfNamedArguments());","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"Dethada"},"content":" @Test","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"Dethada"},"content":" public void hasNamedArgument() {","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"Dethada"},"content":" HashMap\u003cString, String\u003e namedArgs \u003d new HashMap\u003c\u003e();","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"Dethada"},"content":" ArrayList\u003cString\u003e positionalArgs \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"Dethada"},"content":" namedArgs.put(\"option1\", \"value1\");","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"Dethada"},"content":" ParsedInput parsedInput \u003d new ParsedInput(CommandType.EMPTY, namedArgs, positionalArgs);","lastModifiedDate":"2024-01-29"},{"lineNumber":50,"author":{"gitId":"Dethada"},"content":" assertEquals(true, parsedInput.hasNamedArgument(\"option1\"));","lastModifiedDate":"2024-01-29"},{"lineNumber":51,"author":{"gitId":"Dethada"},"content":" assertEquals(false, parsedInput.hasNamedArgument(\"option2\"));","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":53,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":54,"author":{"gitId":"Dethada"},"content":" @Test","lastModifiedDate":"2024-01-29"},{"lineNumber":55,"author":{"gitId":"Dethada"},"content":" public void getNamedArgument() {","lastModifiedDate":"2024-01-29"},{"lineNumber":56,"author":{"gitId":"Dethada"},"content":" HashMap\u003cString, String\u003e namedArgs \u003d new HashMap\u003c\u003e();","lastModifiedDate":"2024-01-29"},{"lineNumber":57,"author":{"gitId":"Dethada"},"content":" ArrayList\u003cString\u003e positionalArgs \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-29"},{"lineNumber":58,"author":{"gitId":"Dethada"},"content":" namedArgs.put(\"option1\", \"value1\");","lastModifiedDate":"2024-01-29"},{"lineNumber":59,"author":{"gitId":"Dethada"},"content":" ParsedInput parsedInput \u003d new ParsedInput(CommandType.EMPTY, namedArgs, positionalArgs);","lastModifiedDate":"2024-01-29"},{"lineNumber":60,"author":{"gitId":"Dethada"},"content":" assertEquals(\"value1\", parsedInput.getNamedArgument(\"option1\"));","lastModifiedDate":"2024-01-29"},{"lineNumber":61,"author":{"gitId":"Dethada"},"content":" assertEquals(null, parsedInput.getNamedArgument(\"option2\"));","lastModifiedDate":"2024-01-29"},{"lineNumber":62,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":63,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":64,"author":{"gitId":"Dethada"},"content":" @Test","lastModifiedDate":"2024-01-29"},{"lineNumber":65,"author":{"gitId":"Dethada"},"content":" public void getPositionalArgument() {","lastModifiedDate":"2024-01-29"},{"lineNumber":66,"author":{"gitId":"Dethada"},"content":" HashMap\u003cString, String\u003e namedArgs \u003d new HashMap\u003c\u003e();","lastModifiedDate":"2024-01-29"},{"lineNumber":67,"author":{"gitId":"Dethada"},"content":" ArrayList\u003cString\u003e positionalArgs \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-29"},{"lineNumber":68,"author":{"gitId":"Dethada"},"content":" positionalArgs.add(\"arg1\");","lastModifiedDate":"2024-01-29"},{"lineNumber":69,"author":{"gitId":"Dethada"},"content":" ParsedInput parsedInput \u003d new ParsedInput(CommandType.EMPTY, namedArgs, positionalArgs);","lastModifiedDate":"2024-01-29"},{"lineNumber":70,"author":{"gitId":"Dethada"},"content":" assertEquals(\"arg1\", parsedInput.getPositionalArgument(0));","lastModifiedDate":"2024-01-29"},{"lineNumber":71,"author":{"gitId":"Dethada"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":72,"author":{"gitId":"Dethada"},"content":" assertEquals(\"\", parsedInput.getPositionalArgument(1));","lastModifiedDate":"2024-01-29"},{"lineNumber":73,"author":{"gitId":"Dethada"},"content":" fail();","lastModifiedDate":"2024-01-29"},{"lineNumber":74,"author":{"gitId":"Dethada"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":75,"author":{"gitId":"Dethada"},"content":" assertEquals(\"Index 1 out of bounds for length 1\", e.getMessage());","lastModifiedDate":"2024-01-29"},{"lineNumber":76,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":77,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":78,"author":{"gitId":"Dethada"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"Dethada":78}},{"path":"src/test/java/cappy/parser/ParserTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Dethada"},"content":"package cappy.parser;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"Dethada"},"content":"import static cappy.parser.Parser.DATE_TIME_FORMAT;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"Dethada"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"Dethada"},"content":"import static org.junit.jupiter.api.Assertions.fail;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"Dethada"},"content":"import cappy.command.CommandType;","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"Dethada"},"content":"import cappy.error.CappyException;","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"Dethada"},"content":"import cappy.task.Deadline;","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"Dethada"},"content":"import cappy.task.Event;","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"Dethada"},"content":"import cappy.task.Task;","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"Dethada"},"content":"import cappy.task.Todo;","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"Dethada"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"Dethada"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"Dethada"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"Dethada"},"content":"import java.util.HashMap;","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"Dethada"},"content":"public class ParserTest {","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"Dethada"},"content":" private static final LocalDateTime DUE \u003d","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"Dethada"},"content":" LocalDateTime.parse(\"2023-01-29T12:00\", DATE_TIME_FORMAT);","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"Dethada"},"content":" private static final LocalDateTime FROM \u003d","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"Dethada"},"content":" LocalDateTime.parse(\"2023-01-29T12:00\", DATE_TIME_FORMAT);","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"Dethada"},"content":" private static final LocalDateTime TO \u003d","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"Dethada"},"content":" LocalDateTime.parse(\"2023-01-30T14:00\", DATE_TIME_FORMAT);","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"Dethada"},"content":" @Test","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"Dethada"},"content":" public void parse_emptyString() throws CappyException {","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"Dethada"},"content":" HashMap\u003cString, String\u003e namedArgs \u003d new HashMap\u003c\u003e();","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"Dethada"},"content":" ArrayList\u003cString\u003e positionalArgs \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"Dethada"},"content":" ParsedInput expectedParsedInput \u003d","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"Dethada"},"content":" new ParsedInput(CommandType.EMPTY, namedArgs, positionalArgs);","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"Dethada"},"content":" assertEquals(expectedParsedInput, Parser.parse(\"\"));","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"Dethada"},"content":" @Test","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"Dethada"},"content":" public void parse_invalidCommand() throws CappyException {","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"Dethada"},"content":" HashMap\u003cString, String\u003e namedArgs \u003d new HashMap\u003c\u003e();","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"Dethada"},"content":" ArrayList\u003cString\u003e positionalArgs \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"Dethada"},"content":" ParsedInput expectedParsedInput \u003d","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"Dethada"},"content":" new ParsedInput(CommandType.INVALID, namedArgs, positionalArgs);","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"Dethada"},"content":" assertEquals(expectedParsedInput, Parser.parse(\"nonExistentCommand\"));","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"Dethada"},"content":" @Test","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"Dethada"},"content":" public void parse_missingValueForOption() {","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"Dethada"},"content":" HashMap\u003cString, String\u003e namedArgs \u003d new HashMap\u003c\u003e();","lastModifiedDate":"2024-01-29"},{"lineNumber":50,"author":{"gitId":"Dethada"},"content":" ArrayList\u003cString\u003e positionalArgs \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-29"},{"lineNumber":51,"author":{"gitId":"Dethada"},"content":" ParsedInput expectedParsedInput \u003d","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"Dethada"},"content":" new ParsedInput(CommandType.DEADLINE, namedArgs, positionalArgs);","lastModifiedDate":"2024-01-29"},{"lineNumber":53,"author":{"gitId":"Dethada"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":54,"author":{"gitId":"Dethada"},"content":" assertEquals(expectedParsedInput, Parser.parse(\"deadline description /by\"));","lastModifiedDate":"2024-01-29"},{"lineNumber":55,"author":{"gitId":"Dethada"},"content":" fail();","lastModifiedDate":"2024-01-29"},{"lineNumber":56,"author":{"gitId":"Dethada"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":57,"author":{"gitId":"Dethada"},"content":" assertEquals(\"Missing value for argument /by\", e.getMessage());","lastModifiedDate":"2024-01-29"},{"lineNumber":58,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":59,"author":{"gitId":"Dethada"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":60,"author":{"gitId":"Dethada"},"content":" assertEquals(expectedParsedInput, Parser.parse(\"deadline description /by \"));","lastModifiedDate":"2024-01-29"},{"lineNumber":61,"author":{"gitId":"Dethada"},"content":" fail();","lastModifiedDate":"2024-01-29"},{"lineNumber":62,"author":{"gitId":"Dethada"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":63,"author":{"gitId":"Dethada"},"content":" assertEquals(\"Missing value for argument /by\", e.getMessage());","lastModifiedDate":"2024-01-29"},{"lineNumber":64,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":65,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":66,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":67,"author":{"gitId":"Dethada"},"content":" @Test","lastModifiedDate":"2024-01-29"},{"lineNumber":68,"author":{"gitId":"Dethada"},"content":" public void parse_valueForOption() throws CappyException {","lastModifiedDate":"2024-01-29"},{"lineNumber":69,"author":{"gitId":"Dethada"},"content":" HashMap\u003cString, String\u003e namedArgs \u003d new HashMap\u003c\u003e();","lastModifiedDate":"2024-01-29"},{"lineNumber":70,"author":{"gitId":"Dethada"},"content":" namedArgs.put(\"by\", \"2023-01-29T12:00\");","lastModifiedDate":"2024-01-29"},{"lineNumber":71,"author":{"gitId":"Dethada"},"content":" ArrayList\u003cString\u003e positionalArgs \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-29"},{"lineNumber":72,"author":{"gitId":"Dethada"},"content":" positionalArgs.add(\"description\");","lastModifiedDate":"2024-01-29"},{"lineNumber":73,"author":{"gitId":"Dethada"},"content":" ParsedInput expectedParsedInput \u003d","lastModifiedDate":"2024-01-29"},{"lineNumber":74,"author":{"gitId":"Dethada"},"content":" new ParsedInput(CommandType.DEADLINE, namedArgs, positionalArgs);","lastModifiedDate":"2024-01-29"},{"lineNumber":75,"author":{"gitId":"Dethada"},"content":" assertEquals(","lastModifiedDate":"2024-01-29"},{"lineNumber":76,"author":{"gitId":"Dethada"},"content":" expectedParsedInput, Parser.parse(\"deadline description /by 2023-01-29T12:00\"));","lastModifiedDate":"2024-01-29"},{"lineNumber":77,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":78,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":79,"author":{"gitId":"Dethada"},"content":" @Test","lastModifiedDate":"2024-01-29"},{"lineNumber":80,"author":{"gitId":"Dethada"},"content":" public void parse_positionalArg() throws CappyException {","lastModifiedDate":"2024-01-29"},{"lineNumber":81,"author":{"gitId":"Dethada"},"content":" HashMap\u003cString, String\u003e namedArgs \u003d new HashMap\u003c\u003e();","lastModifiedDate":"2024-01-29"},{"lineNumber":82,"author":{"gitId":"Dethada"},"content":" ArrayList\u003cString\u003e positionalArgs \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-29"},{"lineNumber":83,"author":{"gitId":"Dethada"},"content":" positionalArgs.add(\"description\");","lastModifiedDate":"2024-01-29"},{"lineNumber":84,"author":{"gitId":"Dethada"},"content":" ParsedInput expectedParsedInput \u003d","lastModifiedDate":"2024-01-29"},{"lineNumber":85,"author":{"gitId":"Dethada"},"content":" new ParsedInput(CommandType.TODO, namedArgs, positionalArgs);","lastModifiedDate":"2024-01-29"},{"lineNumber":86,"author":{"gitId":"Dethada"},"content":" assertEquals(expectedParsedInput, Parser.parse(\"todo description\"));","lastModifiedDate":"2024-01-29"},{"lineNumber":87,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":88,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":89,"author":{"gitId":"Dethada"},"content":" @Test","lastModifiedDate":"2024-01-29"},{"lineNumber":90,"author":{"gitId":"Dethada"},"content":" public void parseCsvLine_todo() throws CappyException {","lastModifiedDate":"2024-01-29"},{"lineNumber":91,"author":{"gitId":"Dethada"},"content":" String csvLine \u003d \"T,0,description,,\";","lastModifiedDate":"2024-01-29"},{"lineNumber":92,"author":{"gitId":"Dethada"},"content":" Todo todo \u003d new Todo(\"description\", false);","lastModifiedDate":"2024-01-29"},{"lineNumber":93,"author":{"gitId":"Dethada"},"content":" assertEquals(todo, Parser.parseCsvLine(csvLine));","lastModifiedDate":"2024-01-29"},{"lineNumber":94,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":95,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":96,"author":{"gitId":"Dethada"},"content":" @Test","lastModifiedDate":"2024-01-29"},{"lineNumber":97,"author":{"gitId":"Dethada"},"content":" public void parseCsvLine_deadline() throws CappyException {","lastModifiedDate":"2024-01-29"},{"lineNumber":98,"author":{"gitId":"Dethada"},"content":" String csvLine \u003d \"D,0,description,2023-01-29T12:00,\";","lastModifiedDate":"2024-01-29"},{"lineNumber":99,"author":{"gitId":"Dethada"},"content":" Deadline deadline \u003d new Deadline(\"description\", false, DUE);","lastModifiedDate":"2024-01-29"},{"lineNumber":100,"author":{"gitId":"Dethada"},"content":" assertEquals(deadline, Parser.parseCsvLine(csvLine));","lastModifiedDate":"2024-01-29"},{"lineNumber":101,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":102,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":103,"author":{"gitId":"Dethada"},"content":" @Test","lastModifiedDate":"2024-01-29"},{"lineNumber":104,"author":{"gitId":"Dethada"},"content":" public void parseCsvLine_event() throws CappyException {","lastModifiedDate":"2024-01-29"},{"lineNumber":105,"author":{"gitId":"Dethada"},"content":" String csvLine \u003d \"E,0,description,2023-01-29T12:00,2023-01-30T14:00\";","lastModifiedDate":"2024-01-29"},{"lineNumber":106,"author":{"gitId":"Dethada"},"content":" Event event \u003d new Event(\"description\", false, FROM, TO);","lastModifiedDate":"2024-01-29"},{"lineNumber":107,"author":{"gitId":"Dethada"},"content":" assertEquals(event, Parser.parseCsvLine(csvLine));","lastModifiedDate":"2024-01-29"},{"lineNumber":108,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":109,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":110,"author":{"gitId":"Dethada"},"content":" @Test","lastModifiedDate":"2024-01-29"},{"lineNumber":111,"author":{"gitId":"Dethada"},"content":" public void parseCsvLine_missingField() {","lastModifiedDate":"2024-01-29"},{"lineNumber":112,"author":{"gitId":"Dethada"},"content":" String csvLine \u003d \"T,0\";","lastModifiedDate":"2024-01-29"},{"lineNumber":113,"author":{"gitId":"Dethada"},"content":" Task task \u003d new Todo(\"description\", false);","lastModifiedDate":"2024-01-29"},{"lineNumber":114,"author":{"gitId":"Dethada"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":115,"author":{"gitId":"Dethada"},"content":" assertEquals(task, Parser.parseCsvLine(csvLine));","lastModifiedDate":"2024-01-29"},{"lineNumber":116,"author":{"gitId":"Dethada"},"content":" fail();","lastModifiedDate":"2024-01-29"},{"lineNumber":117,"author":{"gitId":"Dethada"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":118,"author":{"gitId":"Dethada"},"content":" assertEquals(\"Invalid storage format!\", e.getMessage());","lastModifiedDate":"2024-01-29"},{"lineNumber":119,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":120,"author":{"gitId":"Dethada"},"content":" csvLine \u003d \"D,0,description,\";","lastModifiedDate":"2024-01-29"},{"lineNumber":121,"author":{"gitId":"Dethada"},"content":" task \u003d new Deadline(\"description\", false, DUE);","lastModifiedDate":"2024-01-29"},{"lineNumber":122,"author":{"gitId":"Dethada"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":123,"author":{"gitId":"Dethada"},"content":" assertEquals(task, Parser.parseCsvLine(csvLine));","lastModifiedDate":"2024-01-29"},{"lineNumber":124,"author":{"gitId":"Dethada"},"content":" fail();","lastModifiedDate":"2024-01-29"},{"lineNumber":125,"author":{"gitId":"Dethada"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":126,"author":{"gitId":"Dethada"},"content":" assertEquals(\"Invalid storage format!\", e.getMessage());","lastModifiedDate":"2024-01-29"},{"lineNumber":127,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":128,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":129,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":130,"author":{"gitId":"Dethada"},"content":" @Test","lastModifiedDate":"2024-01-29"},{"lineNumber":131,"author":{"gitId":"Dethada"},"content":" public void parseCsvLine_invalidDateFormat() {","lastModifiedDate":"2024-01-29"},{"lineNumber":132,"author":{"gitId":"Dethada"},"content":" String csvLine \u003d \"D,0,description,invalid date,\";","lastModifiedDate":"2024-01-29"},{"lineNumber":133,"author":{"gitId":"Dethada"},"content":" Deadline task \u003d new Deadline(\"description\", false, DUE);","lastModifiedDate":"2024-01-29"},{"lineNumber":134,"author":{"gitId":"Dethada"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":135,"author":{"gitId":"Dethada"},"content":" assertEquals(task, Parser.parseCsvLine(csvLine));","lastModifiedDate":"2024-01-29"},{"lineNumber":136,"author":{"gitId":"Dethada"},"content":" fail();","lastModifiedDate":"2024-01-29"},{"lineNumber":137,"author":{"gitId":"Dethada"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":138,"author":{"gitId":"Dethada"},"content":" assertEquals(\"Invalid storage format!\", e.getMessage());","lastModifiedDate":"2024-01-29"},{"lineNumber":139,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":140,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":141,"author":{"gitId":"Dethada"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"Dethada":141}},{"path":"src/test/java/cappy/task/EventTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Dethada"},"content":"package cappy.task;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"Dethada"},"content":"import static cappy.parser.Parser.DATE_TIME_FORMAT;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"Dethada"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"Dethada"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"Dethada"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"Dethada"},"content":"public class EventTest {","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"Dethada"},"content":" @Test","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"Dethada"},"content":" public void testStringConversion() {","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"Dethada"},"content":" LocalDateTime from \u003d LocalDateTime.parse(\"2023-01-29T12:00\", DATE_TIME_FORMAT);","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"Dethada"},"content":" LocalDateTime to \u003d LocalDateTime.parse(\"2023-01-30T14:00\", DATE_TIME_FORMAT);","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"Dethada"},"content":" Event event \u003d new Event(\"test\", from, to);","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"Dethada"},"content":" assertEquals(\"[E][ ] test (from: 2023-01-29T12:00 to: 2023-01-30T14:00)\", event.toString());","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"Dethada"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"Dethada":19}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"Dethada"},"content":"list","lastModifiedDate":"2024-01-20"},{"lineNumber":2,"author":{"gitId":"Dethada"},"content":"todo borrow book","lastModifiedDate":"2024-01-20"},{"lineNumber":3,"author":{"gitId":"Dethada"},"content":"list","lastModifiedDate":"2024-01-20"},{"lineNumber":4,"author":{"gitId":"Dethada"},"content":"deadline return book /by Sunday","lastModifiedDate":"2024-01-20"},{"lineNumber":5,"author":{"gitId":"Dethada"},"content":"list","lastModifiedDate":"2024-01-20"},{"lineNumber":6,"author":{"gitId":"Dethada"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2024-01-20"},{"lineNumber":7,"author":{"gitId":"Dethada"},"content":"list","lastModifiedDate":"2024-01-20"},{"lineNumber":8,"author":{"gitId":"Dethada"},"content":"deadline do homework /by no idea :-p","lastModifiedDate":"2024-01-20"},{"lineNumber":9,"author":{"gitId":"Dethada"},"content":"list","lastModifiedDate":"2024-01-20"},{"lineNumber":10,"author":{"gitId":"Dethada"},"content":"mark 1","lastModifiedDate":"2024-01-20"},{"lineNumber":11,"author":{"gitId":"Dethada"},"content":"list","lastModifiedDate":"2024-01-20"},{"lineNumber":12,"author":{"gitId":"Dethada"},"content":"mark 1","lastModifiedDate":"2024-01-20"},{"lineNumber":13,"author":{"gitId":"Dethada"},"content":"list","lastModifiedDate":"2024-01-20"},{"lineNumber":14,"author":{"gitId":"Dethada"},"content":"unmark 1","lastModifiedDate":"2024-01-20"},{"lineNumber":15,"author":{"gitId":"Dethada"},"content":"list","lastModifiedDate":"2024-01-20"},{"lineNumber":16,"author":{"gitId":"Dethada"},"content":"delete 1","lastModifiedDate":"2024-01-26"},{"lineNumber":17,"author":{"gitId":"Dethada"},"content":"list","lastModifiedDate":"2024-01-26"},{"lineNumber":18,"author":{"gitId":"Dethada"},"content":"something that does not exist","lastModifiedDate":"2024-01-21"},{"lineNumber":19,"author":{"gitId":"Dethada"},"content":"mark","lastModifiedDate":"2024-01-21"},{"lineNumber":20,"author":{"gitId":"Dethada"},"content":"mark a","lastModifiedDate":"2024-01-21"},{"lineNumber":21,"author":{"gitId":"Dethada"},"content":"mark 9999999","lastModifiedDate":"2024-01-21"},{"lineNumber":22,"author":{"gitId":"Dethada"},"content":"unmark","lastModifiedDate":"2024-01-21"},{"lineNumber":23,"author":{"gitId":"Dethada"},"content":"unmark a","lastModifiedDate":"2024-01-21"},{"lineNumber":24,"author":{"gitId":"Dethada"},"content":"unmark 9999999","lastModifiedDate":"2024-01-21"},{"lineNumber":25,"author":{"gitId":"Dethada"},"content":"todo","lastModifiedDate":"2024-01-21"},{"lineNumber":26,"author":{"gitId":"Dethada"},"content":"deadline","lastModifiedDate":"2024-01-21"},{"lineNumber":27,"author":{"gitId":"Dethada"},"content":"deadline a","lastModifiedDate":"2024-01-21"},{"lineNumber":28,"author":{"gitId":"Dethada"},"content":"deadline a /by","lastModifiedDate":"2024-01-21"},{"lineNumber":29,"author":{"gitId":"Dethada"},"content":"event","lastModifiedDate":"2024-01-21"},{"lineNumber":30,"author":{"gitId":"Dethada"},"content":"event a","lastModifiedDate":"2024-01-21"},{"lineNumber":31,"author":{"gitId":"Dethada"},"content":"event a /from /to","lastModifiedDate":"2024-01-21"},{"lineNumber":32,"author":{"gitId":"Dethada"},"content":"event a /from 2pm /to","lastModifiedDate":"2024-01-21"},{"lineNumber":33,"author":{"gitId":"Dethada"},"content":"event a /from /to 4pm","lastModifiedDate":"2024-01-21"},{"lineNumber":34,"author":{"gitId":"Dethada"},"content":"event a /from /to 4pm","lastModifiedDate":"2024-01-21"},{"lineNumber":35,"author":{"gitId":"Dethada"},"content":"delete","lastModifiedDate":"2024-01-26"},{"lineNumber":36,"author":{"gitId":"Dethada"},"content":"delete a","lastModifiedDate":"2024-01-26"},{"lineNumber":37,"author":{"gitId":"Dethada"},"content":"delete 9999999","lastModifiedDate":"2024-01-26"},{"lineNumber":38,"author":{"gitId":"Dethada"},"content":"bye","lastModifiedDate":"2024-01-20"}],"authorContributionMap":{"Dethada":38}},{"path":"text-ui-test/runtest.sh","fileType":"sh","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"#!/usr/bin/env bash","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"# create bin directory if it doesn\u0027t exist","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"if [ ! -d \"../bin\" ]","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":" mkdir ../bin","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"# delete output from previous run","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"if [ -e \"./ACTUAL.TXT\" ]","lastModifiedDate":"2020-05-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":" rm ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"Dethada"},"content":"# delete data from previous run","lastModifiedDate":"2024-01-27"},{"lineNumber":16,"author":{"gitId":"Dethada"},"content":"if [ -e \"./cappy.csv\" ]","lastModifiedDate":"2024-01-27"},{"lineNumber":17,"author":{"gitId":"Dethada"},"content":"then","lastModifiedDate":"2024-01-27"},{"lineNumber":18,"author":{"gitId":"Dethada"},"content":" rm cappy.csv","lastModifiedDate":"2024-01-27"},{"lineNumber":19,"author":{"gitId":"Dethada"},"content":"fi","lastModifiedDate":"2024-01-27"},{"lineNumber":20,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":21,"author":{"gitId":"-"},"content":"# compile the code into the bin folder, terminates if error occurred","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"Dethada"},"content":"if ! javac -cp ../src/main/java/cappy -Xlint:none -d ../bin ../src/main/java/cappy/**/*.java","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" echo \"********** BUILD FAILURE **********\"","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" exit 1","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"# run the program, feed commands from input.txt file and redirect the output to the ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"Dethada"},"content":"java -classpath ../bin Cappy \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":"# convert to UNIX format","lastModifiedDate":"2020-05-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":"cp EXPECTED.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":"dos2unix ACTUAL.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":"# compare the output to the expected output","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":"diff ACTUAL.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":"if [ $? -eq 0 ]","lastModifiedDate":"2020-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":" echo \"Test result: PASSED\"","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":" exit 0","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":"else","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":" echo \"Test result: FAILED\"","lastModifiedDate":"2020-05-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":" exit 1","lastModifiedDate":"2020-05-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"Dethada":8,"-":36}}] diff --git a/Dethada_ip_master/commits.json b/Dethada_ip_master/commits.json index 201572ec..38b4d302 100644 --- a/Dethada_ip_master/commits.json +++ b/Dethada_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"Dethada":[{"date":"2024-01-20","commitResults":[{"hash":"296bf48387ea18686a0284b8b317cd416cf99779","isMergeCommit":false,"messageTitle":"Renamed chatbot and finish initial skeletal version","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":12,"deletions":6}}},{"hash":"259dff0d8d8b0c2858c3e3e6b5178708b1015403","isMergeCommit":false,"messageTitle":"Echo user input - created a print function to handle output formatting","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":35,"deletions":5}}},{"hash":"c68bf75be6e0b8912e485307dfd7d7b60bc5f37d","isMergeCommit":false,"messageTitle":"Edited print method to take String[] instead","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":7}}},{"hash":"b4b3e29f82cfa212e62c5e759a0be76ed298e96a","isMergeCommit":false,"messageTitle":"Fix chatbot name","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"94fb560eaece5ffbff07c7e3867a5999ee4dd5a9","isMergeCommit":false,"messageTitle":"Able to add and list tasks now","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":18,"deletions":2}}},{"hash":"aea886e68066322e3c5dec29ec2a29946bc4bc35","isMergeCommit":false,"messageTitle":"Mark tasks as done - Switch from stroing tasks in ArrayList\u003cString\u003e to Task and TaskList - Added ability to mark tasks as done","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":83,"deletions":13}}},{"hash":"f414732bb03550d7f5efebda3708b92cd6b26171","isMergeCommit":false,"messageTitle":"Add ability to unmark tasks","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":1}}},{"hash":"23bc8a35484251e6056b441510a8fe73ffd5efba","isMergeCommit":false,"messageTitle":"Add indentations to output","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":3}}},{"hash":"c7e7860b46992f725391c3546c88431870747fcf","isMergeCommit":false,"messageTitle":"Added new task types: Todos, Events and Deadlines","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":99,"deletions":5}}},{"hash":"4f01a598f6f731e15312259a3a7837d44a3c84a9","isMergeCommit":false,"messageTitle":"Convert bye and list commands to static fields too","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":2}}},{"hash":"61632b25a2417792938c9164e60206104742c648","isMergeCommit":false,"messageTitle":"Added print(String msg) and removed Duke.* prefix","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":27,"deletions":28}}},{"hash":"4f16994095b30a8a3a7d37df54b2ef6a23a4a341","isMergeCommit":false,"messageTitle":"use the stored HORIZONTAL_LINE and INDENT","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":6,"deletions":6}}},{"hash":"2217adf3a74b39df272e5d5a68e2a8cca2404294","isMergeCommit":false,"messageTitle":"Switch to use print(String msg)","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":2}}},{"hash":"000037c4d55f649a6ea6ab4746e8c90ccd9d94a3","isMergeCommit":false,"messageTitle":"Fix compilation errors","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":6,"deletions":6}}},{"hash":"c927d9b249f5e272b8fd9a7f3c405270e2cb0124","isMergeCommit":false,"messageTitle":"Add \"Here are the tasks in your list:\" to output of list command","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":1}}},{"hash":"6732b84eac1158d79c59e42f6472f485debc0a48","isMergeCommit":false,"messageTitle":"Added input and expected output for testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":16,"deletions":0}}},{"hash":"a95264ae9560560fdae8ae4cb8dcd73647893ebc","isMergeCommit":false,"messageTitle":"command prefix -\u003e command","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":12,"deletions":12}}}]},{"date":"2024-01-21","commitResults":[{"hash":"e554dbcc91b98b0c00da2a0e0368be313d78aa38","isMergeCommit":false,"messageTitle":"Handle errors for mark/unmark commands","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":51,"deletions":19}}},{"hash":"4c6dc32225eb0be110e74cf875d5b73cd0f1c27f","isMergeCommit":false,"messageTitle":"Use custom exception class DukeException","messageBody":"","tags":["A-Exceptions"],"fileTypesAndContributionMap":{"java":{"insertions":87,"deletions":75}}},{"hash":"1dbc28371aeac60b5412006bae583ff40090ff62","isMergeCommit":false,"messageTitle":"Updated test files","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":7,"deletions":0}}},{"hash":"94d45ee6365506bbfc0d19eb0d45a69c3c3822ec","isMergeCommit":false,"messageTitle":"Reformat","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":15}}},{"hash":"525bc1fad5a188c91e951e826afe2bd6e2cea985","isMergeCommit":false,"messageTitle":"Handle errors for todo","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":5,"deletions":1}}},{"hash":"9eecdfa32d1e78dc69d0649b98eed0f0e9e89ef8","isMergeCommit":false,"messageTitle":"Updated test files","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0}}},{"hash":"6bc32ba726933fff407030b1069ea7a017370b52","isMergeCommit":false,"messageTitle":"Handle errors for deadline and event","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":4}}},{"hash":"523aa37a0d8bd1ae81c3c3b78ec0c4fa10f48d51","isMergeCommit":false,"messageTitle":"Updated test files","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"txt":{"insertions":9,"deletions":0}}},{"hash":"a3dee402a75b77f4cb78f8baa86a1e74b8db2843","isMergeCommit":false,"messageTitle":"Added delete command","messageBody":"","tags":["Level-6","A-Inheritance","A-Collections","A-Classes"],"fileTypesAndContributionMap":{"java":{"insertions":30,"deletions":0}}}]},{"date":"2024-01-26","commitResults":[{"hash":"7a2258d2684c53af96b53a6c243ca210eb438abe","isMergeCommit":false,"messageTitle":"Updated test files","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":5,"deletions":0}}},{"hash":"e6dc1722fc941207bd945196a39bd754ccf2f420","isMergeCommit":false,"messageTitle":"Save tasks to disk","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":126,"deletions":10}}}]},{"date":"2024-01-27","commitResults":[{"hash":"e588bb0a570aed2f987530eff5587490ef5fc0bf","isMergeCommit":false,"messageTitle":"New feature: Save to and load task list from disk","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":83,"deletions":30}}},{"hash":"67f96a2644c10c6aefaa1d18664f9a2a8ccbffd4","isMergeCommit":false,"messageTitle":"Updated test script to remove generated data","messageBody":"","fileTypesAndContributionMap":{"sh":{"insertions":7,"deletions":1}}},{"hash":"76875c8fa3aed53895d84ac7b8102a02757a83f9","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}}]},{"date":"2024-01-28","commitResults":[{"hash":"69ac60ab66e50d1c7e4a0579e9e0f21a74c73f4f","isMergeCommit":false,"messageTitle":"Parse datetime for datetime inputs","messageBody":"Datetime inputs was previously stored as a String.\n","fileTypesAndContributionMap":{"java":{"insertions":47,"deletions":18}}},{"hash":"d5fdc2054558a53a8f8a95fb6cc05f169e7f4f66","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}},{"hash":"25d054e756324fb78ad138b848721b611f11c907","isMergeCommit":false,"messageTitle":"Split into more classes","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":457,"deletions":231}}},{"hash":"614005a7e0a2b7f8bb0a70e752f58d2b7a892ba6","isMergeCommit":true,"messageTitle":"Merge branch \u0027A-MoreOOP\u0027","messageBody":"","tags":["A-MoreOOP","A-Enums"],"fileTypesAndContributionMap":{}}]},{"date":"2024-01-29","commitResults":[{"hash":"0590bd3cdcc94a29dab3d280cf69047d20542e72","isMergeCommit":false,"messageTitle":"Organize into Packages","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":236,"deletions":81}}},{"hash":"8b34f32a8cd871b9281595899d2b11c309af61a2","isMergeCommit":false,"messageTitle":"Update test script to handle new dir structure","messageBody":"","fileTypesAndContributionMap":{"sh":{"insertions":2,"deletions":2}}},{"hash":"396fedc591d38a59e3dde98bf535b63bcf3daa1f","isMergeCommit":true,"messageTitle":"Merge branch \u0027A-Packages\u0027","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{}},{"hash":"1af9abb6966bd2470bc53cf70ee262d38a9c90d1","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027origin/add-gradle-support\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"557382addf738360dc3131b1911c017e4447a7dc","isMergeCommit":false,"messageTitle":"Update class path","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{"gradle":{"insertions":2,"deletions":2}}},{"hash":"28ceb1ff08aeff376d102b2efa18dc992dc34fcd","isMergeCommit":false,"messageTitle":"Add a dummy junit test class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":17,"deletions":0}}},{"hash":"b018c4fc5cf3805899d8b1a9da8ced05b2748e44","isMergeCommit":false,"messageTitle":"Add junit tests","messageBody":"- Also update gitignore to ignore gradle generated files\n","fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":1},"java":{"insertions":263,"deletions":9}}},{"hash":"c44ea68b0c3538481ab35525f315adfd37535290","isMergeCommit":true,"messageTitle":"Merge branch \u0027junit\u0027","messageBody":"","tags":["A-Junit"],"fileTypesAndContributionMap":{}},{"hash":"b567dc323c05958dd9da86aa378ff718d54d86c5","isMergeCommit":false,"messageTitle":"Update Jar filename","messageBody":"","tags":["A-Jar"],"fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":1}}}]}]},"authorFileTypeContributionMap":{"Dethada":{"java":1170,"md":0,"fxml":0,"sh":8,"bat":0,"gradle":3,"txt":38}},"authorContributionVariance":{"Dethada":69365.97},"authorDisplayNameMap":{"Dethada":"DAVI..YUAN"}} +{"authorDailyContributionsMap":{"Dethada":[{"date":"2024-01-20","commitResults":[{"hash":"296bf48387ea18686a0284b8b317cd416cf99779","isMergeCommit":false,"messageTitle":"Renamed chatbot and finish initial skeletal version","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":12,"deletions":6}}},{"hash":"259dff0d8d8b0c2858c3e3e6b5178708b1015403","isMergeCommit":false,"messageTitle":"Echo user input - created a print function to handle output formatting","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":35,"deletions":5}}},{"hash":"c68bf75be6e0b8912e485307dfd7d7b60bc5f37d","isMergeCommit":false,"messageTitle":"Edited print method to take String[] instead","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":7}}},{"hash":"b4b3e29f82cfa212e62c5e759a0be76ed298e96a","isMergeCommit":false,"messageTitle":"Fix chatbot name","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"94fb560eaece5ffbff07c7e3867a5999ee4dd5a9","isMergeCommit":false,"messageTitle":"Able to add and list tasks now","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":18,"deletions":2}}},{"hash":"aea886e68066322e3c5dec29ec2a29946bc4bc35","isMergeCommit":false,"messageTitle":"Mark tasks as done - Switch from stroing tasks in ArrayList\u003cString\u003e to Task and TaskList - Added ability to mark tasks as done","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":83,"deletions":13}}},{"hash":"f414732bb03550d7f5efebda3708b92cd6b26171","isMergeCommit":false,"messageTitle":"Add ability to unmark tasks","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":1}}},{"hash":"23bc8a35484251e6056b441510a8fe73ffd5efba","isMergeCommit":false,"messageTitle":"Add indentations to output","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":3}}},{"hash":"c7e7860b46992f725391c3546c88431870747fcf","isMergeCommit":false,"messageTitle":"Added new task types: Todos, Events and Deadlines","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":99,"deletions":5}}},{"hash":"4f01a598f6f731e15312259a3a7837d44a3c84a9","isMergeCommit":false,"messageTitle":"Convert bye and list commands to static fields too","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":2}}},{"hash":"61632b25a2417792938c9164e60206104742c648","isMergeCommit":false,"messageTitle":"Added print(String msg) and removed Duke.* prefix","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":27,"deletions":28}}},{"hash":"4f16994095b30a8a3a7d37df54b2ef6a23a4a341","isMergeCommit":false,"messageTitle":"use the stored HORIZONTAL_LINE and INDENT","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":6,"deletions":6}}},{"hash":"2217adf3a74b39df272e5d5a68e2a8cca2404294","isMergeCommit":false,"messageTitle":"Switch to use print(String msg)","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":2}}},{"hash":"000037c4d55f649a6ea6ab4746e8c90ccd9d94a3","isMergeCommit":false,"messageTitle":"Fix compilation errors","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":6,"deletions":6}}},{"hash":"c927d9b249f5e272b8fd9a7f3c405270e2cb0124","isMergeCommit":false,"messageTitle":"Add \"Here are the tasks in your list:\" to output of list command","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":1}}},{"hash":"6732b84eac1158d79c59e42f6472f485debc0a48","isMergeCommit":false,"messageTitle":"Added input and expected output for testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":16,"deletions":0}}},{"hash":"a95264ae9560560fdae8ae4cb8dcd73647893ebc","isMergeCommit":false,"messageTitle":"command prefix -\u003e command","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":12,"deletions":12}}}]},{"date":"2024-01-21","commitResults":[{"hash":"e554dbcc91b98b0c00da2a0e0368be313d78aa38","isMergeCommit":false,"messageTitle":"Handle errors for mark/unmark commands","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":51,"deletions":19}}},{"hash":"4c6dc32225eb0be110e74cf875d5b73cd0f1c27f","isMergeCommit":false,"messageTitle":"Use custom exception class DukeException","messageBody":"","tags":["A-Exceptions"],"fileTypesAndContributionMap":{"java":{"insertions":87,"deletions":75}}},{"hash":"1dbc28371aeac60b5412006bae583ff40090ff62","isMergeCommit":false,"messageTitle":"Updated test files","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":7,"deletions":0}}},{"hash":"94d45ee6365506bbfc0d19eb0d45a69c3c3822ec","isMergeCommit":false,"messageTitle":"Reformat","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":15}}},{"hash":"525bc1fad5a188c91e951e826afe2bd6e2cea985","isMergeCommit":false,"messageTitle":"Handle errors for todo","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":5,"deletions":1}}},{"hash":"9eecdfa32d1e78dc69d0649b98eed0f0e9e89ef8","isMergeCommit":false,"messageTitle":"Updated test files","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0}}},{"hash":"6bc32ba726933fff407030b1069ea7a017370b52","isMergeCommit":false,"messageTitle":"Handle errors for deadline and event","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":4}}},{"hash":"523aa37a0d8bd1ae81c3c3b78ec0c4fa10f48d51","isMergeCommit":false,"messageTitle":"Updated test files","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"txt":{"insertions":9,"deletions":0}}},{"hash":"a3dee402a75b77f4cb78f8baa86a1e74b8db2843","isMergeCommit":false,"messageTitle":"Added delete command","messageBody":"","tags":["Level-6","A-Inheritance","A-Collections","A-Classes"],"fileTypesAndContributionMap":{"java":{"insertions":30,"deletions":0}}}]},{"date":"2024-01-26","commitResults":[{"hash":"7a2258d2684c53af96b53a6c243ca210eb438abe","isMergeCommit":false,"messageTitle":"Updated test files","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":5,"deletions":0}}},{"hash":"e6dc1722fc941207bd945196a39bd754ccf2f420","isMergeCommit":false,"messageTitle":"Save tasks to disk","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":126,"deletions":10}}}]},{"date":"2024-01-27","commitResults":[{"hash":"e588bb0a570aed2f987530eff5587490ef5fc0bf","isMergeCommit":false,"messageTitle":"New feature: Save to and load task list from disk","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":83,"deletions":30}}},{"hash":"67f96a2644c10c6aefaa1d18664f9a2a8ccbffd4","isMergeCommit":false,"messageTitle":"Updated test script to remove generated data","messageBody":"","fileTypesAndContributionMap":{"sh":{"insertions":7,"deletions":1}}},{"hash":"76875c8fa3aed53895d84ac7b8102a02757a83f9","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}}]},{"date":"2024-01-28","commitResults":[{"hash":"69ac60ab66e50d1c7e4a0579e9e0f21a74c73f4f","isMergeCommit":false,"messageTitle":"Parse datetime for datetime inputs","messageBody":"Datetime inputs was previously stored as a String.\n","fileTypesAndContributionMap":{"java":{"insertions":47,"deletions":18}}},{"hash":"d5fdc2054558a53a8f8a95fb6cc05f169e7f4f66","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}},{"hash":"25d054e756324fb78ad138b848721b611f11c907","isMergeCommit":false,"messageTitle":"Split into more classes","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":457,"deletions":231}}},{"hash":"614005a7e0a2b7f8bb0a70e752f58d2b7a892ba6","isMergeCommit":true,"messageTitle":"Merge branch \u0027A-MoreOOP\u0027","messageBody":"","tags":["A-MoreOOP","A-Enums"],"fileTypesAndContributionMap":{}}]},{"date":"2024-01-29","commitResults":[{"hash":"0590bd3cdcc94a29dab3d280cf69047d20542e72","isMergeCommit":false,"messageTitle":"Organize into Packages","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":236,"deletions":81}}},{"hash":"8b34f32a8cd871b9281595899d2b11c309af61a2","isMergeCommit":false,"messageTitle":"Update test script to handle new dir structure","messageBody":"","fileTypesAndContributionMap":{"sh":{"insertions":2,"deletions":2}}},{"hash":"396fedc591d38a59e3dde98bf535b63bcf3daa1f","isMergeCommit":true,"messageTitle":"Merge branch \u0027A-Packages\u0027","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{}},{"hash":"1af9abb6966bd2470bc53cf70ee262d38a9c90d1","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027origin/add-gradle-support\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"557382addf738360dc3131b1911c017e4447a7dc","isMergeCommit":false,"messageTitle":"Update class path","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{"gradle":{"insertions":2,"deletions":2}}},{"hash":"28ceb1ff08aeff376d102b2efa18dc992dc34fcd","isMergeCommit":false,"messageTitle":"Add a dummy junit test class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":17,"deletions":0}}},{"hash":"b018c4fc5cf3805899d8b1a9da8ced05b2748e44","isMergeCommit":false,"messageTitle":"Add junit tests","messageBody":"- Also update gitignore to ignore gradle generated files\n","fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":1},"java":{"insertions":263,"deletions":9}}},{"hash":"c44ea68b0c3538481ab35525f315adfd37535290","isMergeCommit":true,"messageTitle":"Merge branch \u0027junit\u0027","messageBody":"","tags":["A-Junit"],"fileTypesAndContributionMap":{}},{"hash":"b567dc323c05958dd9da86aa378ff718d54d86c5","isMergeCommit":false,"messageTitle":"Update Jar filename","messageBody":"","tags":["A-Jar"],"fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":1}}},{"hash":"354d9f5e4f871af06417f4c545d26d3faf0a4e05","isMergeCommit":false,"messageTitle":"Auto format","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":229,"deletions":166}}},{"hash":"44911421adcdefd484c1418d694ba73459e9b308","isMergeCommit":false,"messageTitle":"Avoid unnecessary use of this with fields","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":33,"deletions":33}}}]},{"date":"2024-01-30","commitResults":[{"hash":"e7e2272556b25c24fac484a32e38da0f150dadb9","isMergeCommit":false,"messageTitle":"Add javadocs for main source code","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":458,"deletions":26}}},{"hash":"ed5981305c61d51a1b0ed284994842fb6e87a44f","isMergeCommit":false,"messageTitle":"Add find command","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":52,"deletions":3}}},{"hash":"f7e7d0aa1aa1bf752c3e22aa0ceee9efad869d8f","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-Javadoc\u0027","messageBody":"","tags":["A-JavaDoc"],"fileTypesAndContributionMap":{}},{"hash":"91517bb789ff34404294d1d94147d914a921c05b","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-CodingStandard\u0027","messageBody":"","tags":["A-CodingStandard"],"fileTypesAndContributionMap":{}},{"hash":"996acd5cbb73d2e85a2fd60ea11c55de3e46ad6f","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-9\u0027","messageBody":"","tags":["Level-9"],"fileTypesAndContributionMap":{}},{"hash":"0a42ff511f0d3396d2053df29439ac06e4df7c91","isMergeCommit":false,"messageTitle":"Rename boolean variables","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":11,"deletions":11}}},{"hash":"3dd81c4de66df4163c28810433c3ad4081d21835","isMergeCommit":false,"messageTitle":"Allow multi word descriptions","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":7,"deletions":3}}},{"hash":"86534bb6a2d02ba24054ed27b03ef1e95b38e542","isMergeCommit":false,"messageTitle":"Change HashMap to Map","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":3}}},{"hash":"d5f12a66216a353b68678fa32f84df4001cd1625","isMergeCommit":false,"messageTitle":"Add javadoc for TaskList::search","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":6,"deletions":0}}}]}]},"authorFileTypeContributionMap":{"Dethada":{"java":1722,"md":0,"fxml":0,"sh":8,"bat":0,"gradle":3,"txt":38}},"authorContributionVariance":{"Dethada":118289.74},"authorDisplayNameMap":{"Dethada":"DAVI..YUAN"}} diff --git a/DingBao-sys_ip_master/authorship.json b/DingBao-sys_ip_master/authorship.json index b73de684..db951a99 100644 --- a/DingBao-sys_ip_master/authorship.json +++ b/DingBao-sys_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"DingBao-sys"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"DingBao-sys"},"content":" String deadlineDate;","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"DingBao-sys"},"content":" public Deadline(String descr, String deadline) {","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"DingBao-sys"},"content":" super(descr);","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"DingBao-sys"},"content":" this.deadlineDate \u003d deadline;","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"DingBao-sys"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"DingBao-sys"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"DingBao-sys"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"DingBao-sys"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"DingBao-sys"},"content":" return String.format(\"[D]%s(by: %s)\", super.toString(), this.deadlineDate);","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"DingBao-sys"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"DingBao-sys"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"DingBao-sys":12}},{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"DingBao-sys"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"DingBao-sys"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"DingBao-sys"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":5,"author":{"gitId":"DingBao-sys"},"content":" private static final String hRULER \u003d \"____________________________________________________________\\n\";","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"DingBao-sys"},"content":" private static boolean isNumeric(String s) {","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"DingBao-sys"},"content":" if (s \u003d\u003d null) {","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"DingBao-sys"},"content":" return false;","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"DingBao-sys"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"DingBao-sys"},"content":" try {","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"DingBao-sys"},"content":" Integer.parseInt(s);","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"DingBao-sys"},"content":" } catch(NumberFormatException e) {","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"DingBao-sys"},"content":" return false;","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"DingBao-sys"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"DingBao-sys"},"content":" return true;","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"DingBao-sys"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":17,"author":{"gitId":"DingBao-sys"},"content":" private static void run() {","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"DingBao-sys"},"content":" ArrayList\u003cTask\u003e storage \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"DingBao-sys"},"content":" int currentIdx \u003d 0;","lastModifiedDate":"2024-01-23"},{"lineNumber":20,"author":{"gitId":"DingBao-sys"},"content":" Scanner sc \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-23"},{"lineNumber":21,"author":{"gitId":"DingBao-sys"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":22,"author":{"gitId":"DingBao-sys"},"content":" while (true) {","lastModifiedDate":"2024-01-23"},{"lineNumber":23,"author":{"gitId":"DingBao-sys"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"DingBao-sys"},"content":" String echoInput \u003d sc.nextLine();","lastModifiedDate":"2024-01-23"},{"lineNumber":25,"author":{"gitId":"DingBao-sys"},"content":" Task newTask;","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"DingBao-sys"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":27,"author":{"gitId":"DingBao-sys"},"content":" if (echoInput.equals(\"bye\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":28,"author":{"gitId":"DingBao-sys"},"content":" return;","lastModifiedDate":"2024-01-23"},{"lineNumber":29,"author":{"gitId":"DingBao-sys"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":30,"author":{"gitId":"DingBao-sys"},"content":" if (echoInput.equals(\"list\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":31,"author":{"gitId":"DingBao-sys"},"content":" System.out.printf(\"%s Here are the tasks in your list:\\n\", hRULER);","lastModifiedDate":"2024-01-23"},{"lineNumber":32,"author":{"gitId":"DingBao-sys"},"content":" for (int i \u003d 0; i \u003c currentIdx; i++) {","lastModifiedDate":"2024-01-23"},{"lineNumber":33,"author":{"gitId":"DingBao-sys"},"content":" System.out.printf(\" %d.%s\\n\", i + 1, storage.get(i).toString());","lastModifiedDate":"2024-01-25"},{"lineNumber":34,"author":{"gitId":"DingBao-sys"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":35,"author":{"gitId":"DingBao-sys"},"content":" System.out.println(hRULER);","lastModifiedDate":"2024-01-23"},{"lineNumber":36,"author":{"gitId":"DingBao-sys"},"content":" continue;","lastModifiedDate":"2024-01-23"},{"lineNumber":37,"author":{"gitId":"DingBao-sys"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":38,"author":{"gitId":"DingBao-sys"},"content":" if (echoInput.substring(0, 4).equals(\"mark\")","lastModifiedDate":"2024-01-23"},{"lineNumber":39,"author":{"gitId":"DingBao-sys"},"content":" \u0026\u0026 isNumeric(echoInput.substring(5))) {","lastModifiedDate":"2024-01-24"},{"lineNumber":40,"author":{"gitId":"DingBao-sys"},"content":" int taskIdx \u003d Integer.parseInt(echoInput.substring(5));","lastModifiedDate":"2024-01-24"},{"lineNumber":41,"author":{"gitId":"DingBao-sys"},"content":" if (taskIdx \u003e\u003d currentIdx) {","lastModifiedDate":"2024-01-28"},{"lineNumber":42,"author":{"gitId":"DingBao-sys"},"content":" throw new InvalidTaskIndexException(currentIdx);","lastModifiedDate":"2024-01-28"},{"lineNumber":43,"author":{"gitId":"DingBao-sys"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":44,"author":{"gitId":"DingBao-sys"},"content":" storage.get(taskIdx - 1).markDone();","lastModifiedDate":"2024-01-25"},{"lineNumber":45,"author":{"gitId":"DingBao-sys"},"content":" continue;","lastModifiedDate":"2024-01-23"},{"lineNumber":46,"author":{"gitId":"DingBao-sys"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":47,"author":{"gitId":"DingBao-sys"},"content":" else if (echoInput.substring(0, 4).equals(\"todo\")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":48,"author":{"gitId":"DingBao-sys"},"content":" if (echoInput.length() \u003d\u003d 4) {","lastModifiedDate":"2024-01-25"},{"lineNumber":49,"author":{"gitId":"DingBao-sys"},"content":" throw new EmptyDescriptionException(\"todo\");","lastModifiedDate":"2024-01-25"},{"lineNumber":50,"author":{"gitId":"DingBao-sys"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":51,"author":{"gitId":"DingBao-sys"},"content":" newTask \u003d new ToDo(echoInput.substring(5));","lastModifiedDate":"2024-01-24"},{"lineNumber":52,"author":{"gitId":"DingBao-sys"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":53,"author":{"gitId":"DingBao-sys"},"content":" else if (echoInput.substring(0, 5).equals(\"event\")) {","lastModifiedDate":"2024-01-24"},{"lineNumber":54,"author":{"gitId":"DingBao-sys"},"content":" if (echoInput.length() \u003d\u003d 5) {","lastModifiedDate":"2024-01-25"},{"lineNumber":55,"author":{"gitId":"DingBao-sys"},"content":" throw new EmptyDescriptionException(\"event\");","lastModifiedDate":"2024-01-25"},{"lineNumber":56,"author":{"gitId":"DingBao-sys"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":57,"author":{"gitId":"DingBao-sys"},"content":" int startIdx \u003d 0;","lastModifiedDate":"2024-01-24"},{"lineNumber":58,"author":{"gitId":"DingBao-sys"},"content":" int numOfSlash \u003d 0;","lastModifiedDate":"2024-01-28"},{"lineNumber":59,"author":{"gitId":"DingBao-sys"},"content":" while (startIdx \u003c echoInput.length()) {","lastModifiedDate":"2024-01-24"},{"lineNumber":60,"author":{"gitId":"DingBao-sys"},"content":" if (echoInput.charAt(startIdx) !\u003d \u0027/\u0027) {","lastModifiedDate":"2024-01-24"},{"lineNumber":61,"author":{"gitId":"DingBao-sys"},"content":" startIdx++;","lastModifiedDate":"2024-01-24"},{"lineNumber":62,"author":{"gitId":"DingBao-sys"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":63,"author":{"gitId":"DingBao-sys"},"content":" numOfSlash++;","lastModifiedDate":"2024-01-28"},{"lineNumber":64,"author":{"gitId":"DingBao-sys"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":65,"author":{"gitId":"DingBao-sys"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":66,"author":{"gitId":"DingBao-sys"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":67,"author":{"gitId":"DingBao-sys"},"content":" int endIdx \u003d startIdx + 1;","lastModifiedDate":"2024-01-24"},{"lineNumber":68,"author":{"gitId":"DingBao-sys"},"content":" while (endIdx \u003c echoInput.length()) {","lastModifiedDate":"2024-01-24"},{"lineNumber":69,"author":{"gitId":"DingBao-sys"},"content":" if (echoInput.charAt(endIdx) !\u003d \u0027/\u0027) {","lastModifiedDate":"2024-01-24"},{"lineNumber":70,"author":{"gitId":"DingBao-sys"},"content":" endIdx++;","lastModifiedDate":"2024-01-24"},{"lineNumber":71,"author":{"gitId":"DingBao-sys"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":72,"author":{"gitId":"DingBao-sys"},"content":" numOfSlash++;","lastModifiedDate":"2024-01-28"},{"lineNumber":73,"author":{"gitId":"DingBao-sys"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":74,"author":{"gitId":"DingBao-sys"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":75,"author":{"gitId":"DingBao-sys"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":76,"author":{"gitId":"DingBao-sys"},"content":" if (numOfSlash \u003c 2) {","lastModifiedDate":"2024-01-28"},{"lineNumber":77,"author":{"gitId":"DingBao-sys"},"content":" throw new InvalidEventException();","lastModifiedDate":"2024-01-28"},{"lineNumber":78,"author":{"gitId":"DingBao-sys"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":79,"author":{"gitId":"DingBao-sys"},"content":" newTask \u003d new Event(echoInput.substring(6, startIdx),","lastModifiedDate":"2024-01-24"},{"lineNumber":80,"author":{"gitId":"DingBao-sys"},"content":" echoInput.substring(startIdx + 6, endIdx),","lastModifiedDate":"2024-01-24"},{"lineNumber":81,"author":{"gitId":"DingBao-sys"},"content":" echoInput.substring(endIdx + 4));","lastModifiedDate":"2024-01-24"},{"lineNumber":82,"author":{"gitId":"DingBao-sys"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":83,"author":{"gitId":"DingBao-sys"},"content":" else if (echoInput.substring(0, 6).equals(\"unmark\") \u0026\u0026","lastModifiedDate":"2024-01-25"},{"lineNumber":84,"author":{"gitId":"DingBao-sys"},"content":" isNumeric(echoInput.substring(7))) {","lastModifiedDate":"2024-01-25"},{"lineNumber":85,"author":{"gitId":"DingBao-sys"},"content":" int taskIdx \u003d Integer.parseInt(echoInput.substring(7));","lastModifiedDate":"2024-01-25"},{"lineNumber":86,"author":{"gitId":"DingBao-sys"},"content":" if (taskIdx \u003e\u003d currentIdx) {","lastModifiedDate":"2024-01-28"},{"lineNumber":87,"author":{"gitId":"DingBao-sys"},"content":" throw new InvalidTaskIndexException(currentIdx);","lastModifiedDate":"2024-01-28"},{"lineNumber":88,"author":{"gitId":"DingBao-sys"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":89,"author":{"gitId":"DingBao-sys"},"content":" storage.get(taskIdx - 1).unMarkDone();","lastModifiedDate":"2024-01-25"},{"lineNumber":90,"author":{"gitId":"DingBao-sys"},"content":" continue;","lastModifiedDate":"2024-01-25"},{"lineNumber":91,"author":{"gitId":"DingBao-sys"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":92,"author":{"gitId":"DingBao-sys"},"content":" else if (echoInput.substring(0, 6).equals(\"delete\") \u0026\u0026","lastModifiedDate":"2024-01-25"},{"lineNumber":93,"author":{"gitId":"DingBao-sys"},"content":" isNumeric(echoInput.substring(7))) {","lastModifiedDate":"2024-01-25"},{"lineNumber":94,"author":{"gitId":"DingBao-sys"},"content":" int taskIdx \u003d Integer.parseInt(echoInput.substring(7));","lastModifiedDate":"2024-01-25"},{"lineNumber":95,"author":{"gitId":"DingBao-sys"},"content":" if (taskIdx \u003e\u003d currentIdx) {","lastModifiedDate":"2024-01-28"},{"lineNumber":96,"author":{"gitId":"DingBao-sys"},"content":" throw new InvalidTaskIndexException(currentIdx);","lastModifiedDate":"2024-01-28"},{"lineNumber":97,"author":{"gitId":"DingBao-sys"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":98,"author":{"gitId":"DingBao-sys"},"content":" Task removed \u003d storage.remove(taskIdx - 1);","lastModifiedDate":"2024-01-25"},{"lineNumber":99,"author":{"gitId":"DingBao-sys"},"content":" currentIdx--;","lastModifiedDate":"2024-01-25"},{"lineNumber":100,"author":{"gitId":"DingBao-sys"},"content":" System.out.printf(\"%s Noted. I\u0027ve removed this task:\\n %s\\n Now you have %d tasks in the list.\\n%s\",","lastModifiedDate":"2024-01-25"},{"lineNumber":101,"author":{"gitId":"DingBao-sys"},"content":" hRULER, removed, currentIdx, hRULER);","lastModifiedDate":"2024-01-25"},{"lineNumber":102,"author":{"gitId":"DingBao-sys"},"content":" continue;","lastModifiedDate":"2024-01-25"},{"lineNumber":103,"author":{"gitId":"DingBao-sys"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":104,"author":{"gitId":"DingBao-sys"},"content":" else if (echoInput.substring(0, 8).equals(\"deadline\")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":105,"author":{"gitId":"DingBao-sys"},"content":" if (echoInput.length() \u003d\u003d 8) {","lastModifiedDate":"2024-01-25"},{"lineNumber":106,"author":{"gitId":"DingBao-sys"},"content":" throw new EmptyDescriptionException(\"deadline\");","lastModifiedDate":"2024-01-25"},{"lineNumber":107,"author":{"gitId":"DingBao-sys"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":108,"author":{"gitId":"DingBao-sys"},"content":" int deadlineStartIdx \u003d 0;","lastModifiedDate":"2024-01-25"},{"lineNumber":109,"author":{"gitId":"DingBao-sys"},"content":" boolean foundTime \u003d false;","lastModifiedDate":"2024-01-25"},{"lineNumber":110,"author":{"gitId":"DingBao-sys"},"content":" while (deadlineStartIdx \u003c echoInput.length()) {","lastModifiedDate":"2024-01-25"},{"lineNumber":111,"author":{"gitId":"DingBao-sys"},"content":" if (echoInput.charAt(deadlineStartIdx) !\u003d \u0027/\u0027) {","lastModifiedDate":"2024-01-25"},{"lineNumber":112,"author":{"gitId":"DingBao-sys"},"content":" deadlineStartIdx++;","lastModifiedDate":"2024-01-25"},{"lineNumber":113,"author":{"gitId":"DingBao-sys"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":114,"author":{"gitId":"DingBao-sys"},"content":" foundTime \u003d true;","lastModifiedDate":"2024-01-25"},{"lineNumber":115,"author":{"gitId":"DingBao-sys"},"content":" break;","lastModifiedDate":"2024-01-25"},{"lineNumber":116,"author":{"gitId":"DingBao-sys"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":117,"author":{"gitId":"DingBao-sys"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":118,"author":{"gitId":"DingBao-sys"},"content":" if (!foundTime) {","lastModifiedDate":"2024-01-25"},{"lineNumber":119,"author":{"gitId":"DingBao-sys"},"content":" throw new InvalidDeadlineException();","lastModifiedDate":"2024-01-25"},{"lineNumber":120,"author":{"gitId":"DingBao-sys"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":121,"author":{"gitId":"DingBao-sys"},"content":" newTask \u003d new Deadline(echoInput.substring(9, deadlineStartIdx),","lastModifiedDate":"2024-01-25"},{"lineNumber":122,"author":{"gitId":"DingBao-sys"},"content":" echoInput.substring(deadlineStartIdx + 4));","lastModifiedDate":"2024-01-25"},{"lineNumber":123,"author":{"gitId":"DingBao-sys"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":124,"author":{"gitId":"DingBao-sys"},"content":" else {","lastModifiedDate":"2024-01-25"},{"lineNumber":125,"author":{"gitId":"DingBao-sys"},"content":" throw new UnknownInputException();","lastModifiedDate":"2024-01-25"},{"lineNumber":126,"author":{"gitId":"DingBao-sys"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":127,"author":{"gitId":"DingBao-sys"},"content":" storage.add(newTask);","lastModifiedDate":"2024-01-25"},{"lineNumber":128,"author":{"gitId":"DingBao-sys"},"content":" currentIdx++;","lastModifiedDate":"2024-01-25"},{"lineNumber":129,"author":{"gitId":"DingBao-sys"},"content":" System.out.printf(\"%s Got it. I\u0027ve added this task:\\n \" +","lastModifiedDate":"2024-01-24"},{"lineNumber":130,"author":{"gitId":"DingBao-sys"},"content":" \" %s\\n Now you have %d tasks in the list.\\n%s\", hRULER, newTask, currentIdx, hRULER);","lastModifiedDate":"2024-01-24"},{"lineNumber":131,"author":{"gitId":"DingBao-sys"},"content":" } catch (StringIndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":132,"author":{"gitId":"DingBao-sys"},"content":" System.out.printf(\"%s%s%s\", hRULER, new UnknownInputException(), hRULER);","lastModifiedDate":"2024-01-25"},{"lineNumber":133,"author":{"gitId":"DingBao-sys"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":134,"author":{"gitId":"DingBao-sys"},"content":" System.out.printf(\"%s%s%s\", hRULER, e, hRULER);","lastModifiedDate":"2024-01-25"},{"lineNumber":135,"author":{"gitId":"DingBao-sys"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":136,"author":{"gitId":"DingBao-sys"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":137,"author":{"gitId":"DingBao-sys"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":138,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2019-07-29"},{"lineNumber":139,"author":{"gitId":"DingBao-sys"},"content":" String[] token \u003d new String[]{","lastModifiedDate":"2024-01-22"},{"lineNumber":140,"author":{"gitId":"DingBao-sys"},"content":" \"____________________________________________________________\",","lastModifiedDate":"2024-01-22"},{"lineNumber":141,"author":{"gitId":"DingBao-sys"},"content":" \"Hello! I\u0027m chinesepoliceman\",","lastModifiedDate":"2024-01-22"},{"lineNumber":142,"author":{"gitId":"DingBao-sys"},"content":" \"What can I do for you?\",","lastModifiedDate":"2024-01-22"},{"lineNumber":143,"author":{"gitId":"DingBao-sys"},"content":" \"____________________________________________________________\",","lastModifiedDate":"2024-01-22"},{"lineNumber":144,"author":{"gitId":"DingBao-sys"},"content":" \" Bye. Hope to see you again soon!\",","lastModifiedDate":"2024-01-22"},{"lineNumber":145,"author":{"gitId":"DingBao-sys"},"content":" \"____________________________________________________________\"","lastModifiedDate":"2024-01-22"},{"lineNumber":146,"author":{"gitId":"DingBao-sys"},"content":" };","lastModifiedDate":"2024-01-22"},{"lineNumber":147,"author":{"gitId":"DingBao-sys"},"content":" for (int i \u003d 0; i \u003c 4; i++) {","lastModifiedDate":"2024-01-23"},{"lineNumber":148,"author":{"gitId":"DingBao-sys"},"content":" System.out.println(token[i]);","lastModifiedDate":"2024-01-23"},{"lineNumber":149,"author":{"gitId":"DingBao-sys"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":150,"author":{"gitId":"DingBao-sys"},"content":" run();","lastModifiedDate":"2024-01-23"},{"lineNumber":151,"author":{"gitId":"DingBao-sys"},"content":" for (int i \u003d 3; i \u003c 6; i++) {","lastModifiedDate":"2024-01-23"},{"lineNumber":152,"author":{"gitId":"DingBao-sys"},"content":" System.out.println(token[i]);","lastModifiedDate":"2024-01-23"},{"lineNumber":153,"author":{"gitId":"DingBao-sys"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":154,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":155,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"DingBao-sys":151,"-":4}},{"path":"src/main/java/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"DingBao-sys"},"content":"public class DukeException extends Throwable {","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"DingBao-sys"},"content":" public DukeException() {","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"DingBao-sys"},"content":" super();","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"DingBao-sys"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"DingBao-sys"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"DingBao-sys":5}},{"path":"src/main/java/EmptyDescriptionException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"DingBao-sys"},"content":"public class EmptyDescriptionException extends DukeException {","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"DingBao-sys"},"content":" String taskType;","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"DingBao-sys"},"content":" public EmptyDescriptionException(String TaskType) {","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"DingBao-sys"},"content":" super();","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"DingBao-sys"},"content":" this.taskType \u003d TaskType;","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"DingBao-sys"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"DingBao-sys"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"DingBao-sys"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"DingBao-sys"},"content":" public String toString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"DingBao-sys"},"content":" return String.format(\"You definitely are a genius creating a %s with no description.\\nI hope you are genius enough \" +","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"DingBao-sys"},"content":" \"to try again with an adequate description\\n\", this.taskType);","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"DingBao-sys"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"DingBao-sys"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"DingBao-sys":13}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"DingBao-sys"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"DingBao-sys"},"content":" private String start;","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"DingBao-sys"},"content":" private String end;","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"DingBao-sys"},"content":" public Event(String desc, String start, String end) {","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"DingBao-sys"},"content":" super(desc);","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"DingBao-sys"},"content":" this.start \u003d start;","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"DingBao-sys"},"content":" this.end \u003d end;","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"DingBao-sys"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"DingBao-sys"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"DingBao-sys"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"DingBao-sys"},"content":" return String.format(\"[E]%s(from: %sto: %s)\",","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"DingBao-sys"},"content":" super.toString(),start, end);","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"DingBao-sys"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"DingBao-sys"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"DingBao-sys":14}},{"path":"src/main/java/InvalidDeadlineException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"DingBao-sys"},"content":"public class InvalidDeadlineException extends DukeException {","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"DingBao-sys"},"content":" public InvalidDeadlineException() {","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"DingBao-sys"},"content":" super();","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"DingBao-sys"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"DingBao-sys"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"DingBao-sys"},"content":" public String toString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"DingBao-sys"},"content":" return \"Maybe you do not know what a deadline is,\\nbut please have key in a valid time or day as a deadline following\\n\" +","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"DingBao-sys"},"content":" \"a \u0027/\u0027\\n\";","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"DingBao-sys"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"DingBao-sys"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"DingBao-sys":10}},{"path":"src/main/java/InvalidEventException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"DingBao-sys"},"content":"public class InvalidEventException extends DukeException {","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"DingBao-sys"},"content":" public InvalidEventException() {","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"DingBao-sys"},"content":" super();","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"DingBao-sys"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"DingBao-sys"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"DingBao-sys"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"DingBao-sys"},"content":" public String toString() {","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"DingBao-sys"},"content":" return \"After I try so hard, you want to cook me by keying the date and time wrongly\\n\" +","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"DingBao-sys"},"content":" \"try again by adding the time in the format [task description] / from: starttime / end : endtime\\n\";","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"DingBao-sys"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"DingBao-sys"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"DingBao-sys":11}},{"path":"src/main/java/InvalidTaskIndexException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"DingBao-sys"},"content":"public class InvalidTaskIndexException extends DukeException {","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"DingBao-sys"},"content":" private int currentSize;","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"DingBao-sys"},"content":" public InvalidTaskIndexException(int size) {","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"DingBao-sys"},"content":" super();","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"DingBao-sys"},"content":" this.currentSize \u003d size;","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"DingBao-sys"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"DingBao-sys"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"DingBao-sys"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"DingBao-sys"},"content":" public String toString() {","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"DingBao-sys"},"content":" return String.format(\" Stop trolling and pick a number\\n within %d\\n\", currentSize);","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"DingBao-sys"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"DingBao-sys"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"DingBao-sys"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"DingBao-sys":13}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"DingBao-sys"},"content":"public class Task {","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"DingBao-sys"},"content":" private final static String hRULER \u003d \"____________________________________________________________\\n\";","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"DingBao-sys"},"content":" private final String description;","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"DingBao-sys"},"content":" private String status \u003d \"[ ]\";","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"DingBao-sys"},"content":" public Task(String token) {","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"DingBao-sys"},"content":" this.description \u003d token;","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"DingBao-sys"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"DingBao-sys"},"content":" public void markDone() {","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"DingBao-sys"},"content":" this.status \u003d \"[X]\";","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"DingBao-sys"},"content":" System.out.printf(\"%s Nice! I\u0027ve marked this task as done:\\n %s\\n%s\",","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"DingBao-sys"},"content":" hRULER, this.toString(), hRULER);","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"DingBao-sys"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"DingBao-sys"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"DingBao-sys"},"content":" public void unMarkDone() {","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"DingBao-sys"},"content":" this.status \u003d \"[ ]\";","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"DingBao-sys"},"content":" System.out.printf(\"%s OK, I\u0027ve marked this task as not done yet:\\n %s\\n%s\",","lastModifiedDate":"2024-01-23"},{"lineNumber":17,"author":{"gitId":"DingBao-sys"},"content":" hRULER, this.toString(), hRULER);","lastModifiedDate":"2024-01-23"},{"lineNumber":18,"author":{"gitId":"DingBao-sys"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":19,"author":{"gitId":"DingBao-sys"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":20,"author":{"gitId":"DingBao-sys"},"content":" public String toString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":21,"author":{"gitId":"DingBao-sys"},"content":" return String.format(\"%s %s\", this.status, this.description);","lastModifiedDate":"2024-01-23"},{"lineNumber":22,"author":{"gitId":"DingBao-sys"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":23,"author":{"gitId":"DingBao-sys"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"DingBao-sys":23}},{"path":"src/main/java/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"DingBao-sys"},"content":"public class ToDo extends Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"DingBao-sys"},"content":" public ToDo(String s) {","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"DingBao-sys"},"content":" super(s);","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"DingBao-sys"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"DingBao-sys"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"DingBao-sys"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"DingBao-sys"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"DingBao-sys"},"content":" return String.format(\"[T]%s\", super.toString());","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"DingBao-sys"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"DingBao-sys"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"DingBao-sys":10}},{"path":"src/main/java/UnknownInputException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"DingBao-sys"},"content":"public class UnknownInputException extends DukeException {","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"DingBao-sys"},"content":" public UnknownInputException() {","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"DingBao-sys"},"content":" super();","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"DingBao-sys"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"DingBao-sys"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"DingBao-sys"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"DingBao-sys"},"content":" public String toString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"DingBao-sys"},"content":" return \"If you want to type gibberish you can craft your own Duke,\\nhowever if you wish to continue talking to me \" +","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"DingBao-sys"},"content":" \"here are the available commands:\\nlist\\ntodo\\nevent\\ndeadline\\n\";","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"DingBao-sys"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"DingBao-sys"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"DingBao-sys":11}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"DingBao-sys"},"content":"todo borrow book","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"DingBao-sys"},"content":"list","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"DingBao-sys"},"content":"deadline return book /by Sunday","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"DingBao-sys"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"DingBao-sys":4}},{"path":"text-ui-test/input1.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"DingBao-sys"},"content":"todo read book","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"DingBao-sys"},"content":"mark 1","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"DingBao-sys"},"content":"deadline return book /by June 6th","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"DingBao-sys"},"content":"mark 2","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"DingBao-sys"},"content":"event project meeting /from Aug 6th 2pm /to 4pm","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"DingBao-sys"},"content":"todo join sport club","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"DingBao-sys"},"content":"mark 4","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"DingBao-sys"},"content":"todo borrow book","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"DingBao-sys"},"content":"list","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"DingBao-sys"},"content":"delete 4","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"DingBao-sys"},"content":"mark 5","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"DingBao-sys"},"content":"unmark 5","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"DingBao-sys":12}},{"path":"text-ui-test/output.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"DingBao-sys"},"content":"\u001b[?1049h\u001b[\u003e4;2m\u001b[?1h\u001b\u003d\u001b[?2004h\u001b[?1004h\u001b[1;67r\u001b[?12h\u001b[?12l\u001b[22;2t\u001b[22;1t\u001b[27m\u001b[23m\u001b[29m\u001b[m\u001b[H\u001b[2J\u001b[?25l\u001b[67;1H\"runtest.sh\" [noeol] 38L, 848B\u001b[1;1H\u001b[96m#!/usr/bin/env bash","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"DingBao-sys"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"DingBao-sys"},"content":"# create bin directory if it doesn\u0027t exist\u001b[m","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"DingBao-sys"},"content":"\u001b[93mif [\u001b[m \u001b[93m!\u001b[m \u001b[93m-d\u001b[m \u001b[93m\"\u001b[m\u001b[95m../bin\u001b[m\u001b[93m\"\u001b[m \u001b[93m]","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"DingBao-sys"},"content":"then","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"DingBao-sys"},"content":"\u001b[m \u001b[93mmkdir\u001b[m ../bin","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"DingBao-sys"},"content":"\u001b[93mfi\u001b[m","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"DingBao-sys"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"DingBao-sys"},"content":"\u001b[96m# delete output from previous run\u001b[m","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"DingBao-sys"},"content":"\u001b[93mif [\u001b[m \u001b[93m-e\u001b[m \u001b[93m\"\u001b[m\u001b[95m./ACTUAL.TXT\u001b[m\u001b[93m\"\u001b[m \u001b[93m]","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"DingBao-sys"},"content":"then","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"DingBao-sys"},"content":"\u001b[m \u001b[93mrm\u001b[m ACTUAL.TXT","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"DingBao-sys"},"content":"\u001b[93mfi\u001b[m","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"DingBao-sys"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"DingBao-sys"},"content":"\u001b[96m# compile the code into the bin folder, terminates if error occurred\u001b[m","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"DingBao-sys"},"content":"\u001b[93mif !\u001b[m javac \u001b[38;5;224m-cp\u001b[m ../src/main/java \u001b[38;5;224m-Xlint\u001b[m:none \u001b[93m-d\u001b[m ../bin ../src/main/java/*.java","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"DingBao-sys"},"content":"\u001b[93mthen","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"DingBao-sys"},"content":"\u001b[m \u001b[93mecho\u001b[m\u001b[95m \u001b[m\u001b[93m\"\u001b[m\u001b[95m********** BUILD FAILURE **********\u001b[m\u001b[93m\"","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"DingBao-sys"},"content":"\u001b[m \u001b[93mexit\u001b[m \u001b[95m1\u001b[m","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"DingBao-sys"},"content":"\u001b[93mfi\u001b[m","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"DingBao-sys"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"DingBao-sys"},"content":"\u001b[96m# run the program, feed commands from input.txt file and redirect the output to the ACTUAL.TXT\u001b[m","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"DingBao-sys"},"content":"java \u001b[38;5;224m-classpath\u001b[m ../bin Duke \u001b[93m\u003c\u001b[m input.txt \u001b[93m\u003e\u001b[m ACTUAL.TXT","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"DingBao-sys"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"DingBao-sys"},"content":"\u001b[96m# convert to UNIX format\u001b[m","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"DingBao-sys"},"content":"cp EXPECTED.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"DingBao-sys"},"content":"dos2unix ACTUAL.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"DingBao-sys"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"DingBao-sys"},"content":"\u001b[96m# compare the output to the expected output\u001b[m","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"DingBao-sys"},"content":"diff ACTUAL.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"DingBao-sys"},"content":"\u001b[93mif [\u001b[m \u001b[38;5;81m$?\u001b[m \u001b[93m-eq\u001b[m \u001b[95m0\u001b[m \u001b[93m]","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"DingBao-sys"},"content":"then","lastModifiedDate":"2024-01-28"},{"lineNumber":33,"author":{"gitId":"DingBao-sys"},"content":"\u001b[m \u001b[93mecho\u001b[m\u001b[95m \u001b[m\u001b[93m\"\u001b[m\u001b[95mTest result: PASSED\u001b[m\u001b[93m\"","lastModifiedDate":"2024-01-28"},{"lineNumber":34,"author":{"gitId":"DingBao-sys"},"content":"\u001b[m \u001b[93mexit\u001b[m \u001b[95m0\u001b[m","lastModifiedDate":"2024-01-28"},{"lineNumber":35,"author":{"gitId":"DingBao-sys"},"content":"\u001b[93melse","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"DingBao-sys"},"content":"\u001b[m \u001b[93mecho\u001b[m\u001b[95m \u001b[m\u001b[93m\"\u001b[m\u001b[95mTest result: FAILED\u001b[m\u001b[93m\"","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"DingBao-sys"},"content":"\u001b[m \u001b[93mexit\u001b[m \u001b[95m1\u001b[m","lastModifiedDate":"2024-01-28"},{"lineNumber":38,"author":{"gitId":"DingBao-sys"},"content":"\u001b[93mfi\u001b[m","lastModifiedDate":"2024-01-28"},{"lineNumber":39,"author":{"gitId":"DingBao-sys"},"content":"\u001b[94m~ \u001b[40;1H~ \u001b[41;1H~ \u001b[42;1H~ \u001b[43;1H~ \u001b[44;1H~ \u001b[45;1H~ \u001b[46;1H~ \u001b[47;1H~ \u001b[48;1H~ \u001b[49;1H~ \u001b[50;1H~ \u001b[51;1H~ \u001b[52;1H~ \u001b[53;1H~ \u001b[54;1H~ \u001b[55;1H~ \u001b[56;1H~ \u001b[57;1H~ \u001b[58;1H~ \u001b[59;1H~ \u001b[60;1H~ \u001b[61;1H~ \u001b[62;1H~ \u001b[63;1H~ \u001b[64;1H~ \u001b[65;1H~ \u001b[66;1H~ \u001b[m\u001b[67;197H1,1\u001b[11CAll\u001b[1;1H\u001b[?25h\u001b[?4m\u001b[?25l\u001b[67;197H2,0-1\u001b[2;1H\u001b[?25h\u001b[67;1H\u001b[?2004l\u001b[\u003e4;m\u001b[23;2t\u001b[23;1t\u001b[67;1H\u001b[K\u001b[67;1H\u001b[?1004l\u001b[?2004l\u001b[?1l\u001b\u003e\u001b[?1049l\u001b[\u003e4;m","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"DingBao-sys":39}},{"path":"text-ui-test/runtest.sh","fileType":"sh","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"#!/usr/bin/env bash","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"# create bin directory if it doesn\u0027t exist","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"if [ ! -d \"../bin\" ]","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":" mkdir ../bin","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"# delete output from previous run","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"if [ -e \"./ACTUAL.TXT\" ]","lastModifiedDate":"2020-05-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":" rm ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"DingBao-sys"},"content":"if [ -e \"./ACTUAL1.TXT\" ]","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"DingBao-sys"},"content":"then","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"DingBao-sys"},"content":" rm ACTUAL1.TXT","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"DingBao-sys"},"content":"fi","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"DingBao-sys"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"-"},"content":"# compile the code into the bin folder, terminates if error occurred","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"if ! javac -cp ../src/main/java -Xlint:none -d ../bin ../src/main/java/*.java","lastModifiedDate":"2020-08-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" echo \"********** BUILD FAILURE **********\"","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" exit 1","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":"# run the program, feed commands from input.txt file and redirect the output to the ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"java -classpath ../bin Duke \u003cinput.txt \u003eACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"DingBao-sys"},"content":"java -classpath ../bin Duke \u003c input1.txt \u003e ACTUAL1.TXT","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":"# convert to UNIX format","lastModifiedDate":"2020-05-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":"cp EXPECTED.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":"diff ACTUAL.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"if [ $? -eq 0 ]","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" echo \"Test result: PASSED\"","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" exit 0","lastModifiedDate":"2020-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":"else","lastModifiedDate":"2020-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":" echo \"Test result: FAILED\"","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":" exit 1","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"DingBao-sys"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"DingBao-sys"},"content":"cp EXPECTED1.TXT EXPECTED1-UNIX.TXT","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"DingBao-sys"},"content":"diff ACTUAL1.TXT EXPECTED1-UNIX.TXT","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"DingBao-sys"},"content":"if [ $? -eq 0 ]","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"DingBao-sys"},"content":"then","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"DingBao-sys"},"content":" echo \"Test result: PASSED\"","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"DingBao-sys"},"content":" exit 0","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"DingBao-sys"},"content":"else","lastModifiedDate":"2024-01-29"},{"lineNumber":50,"author":{"gitId":"DingBao-sys"},"content":" echo \"Test result: FAILED\"","lastModifiedDate":"2024-01-29"},{"lineNumber":51,"author":{"gitId":"DingBao-sys"},"content":" exit 1","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"DingBao-sys"},"content":"fi","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"DingBao-sys":17,"-":35}}] +[{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"DingBao-sys"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"DingBao-sys"},"content":" String deadlineDate;","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"DingBao-sys"},"content":" public Deadline(String descr, String deadline) {","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"DingBao-sys"},"content":" super(descr);","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"DingBao-sys"},"content":" this.deadlineDate \u003d deadline;","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"DingBao-sys"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"DingBao-sys"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"DingBao-sys"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"DingBao-sys"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"DingBao-sys"},"content":" return String.format(\"[D]%s(by: %s)\", super.toString(), this.deadlineDate);","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"DingBao-sys"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"DingBao-sys"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"DingBao-sys":12}},{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"DingBao-sys"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"DingBao-sys"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"DingBao-sys"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":5,"author":{"gitId":"DingBao-sys"},"content":" private static final String hRULER \u003d \"____________________________________________________________\\n\";","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"DingBao-sys"},"content":" private enum Commands {","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"DingBao-sys"},"content":" bye,","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"DingBao-sys"},"content":" list,","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"DingBao-sys"},"content":" mark,","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"DingBao-sys"},"content":" todo,","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"DingBao-sys"},"content":" event,","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"DingBao-sys"},"content":" unmark,","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"DingBao-sys"},"content":" delete,","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"DingBao-sys"},"content":" deadline","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"DingBao-sys"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"DingBao-sys"},"content":" private static boolean isNumeric(String s) {","lastModifiedDate":"2024-01-23"},{"lineNumber":17,"author":{"gitId":"DingBao-sys"},"content":" if (s \u003d\u003d null) {","lastModifiedDate":"2024-01-23"},{"lineNumber":18,"author":{"gitId":"DingBao-sys"},"content":" return false;","lastModifiedDate":"2024-01-23"},{"lineNumber":19,"author":{"gitId":"DingBao-sys"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":20,"author":{"gitId":"DingBao-sys"},"content":" try {","lastModifiedDate":"2024-01-23"},{"lineNumber":21,"author":{"gitId":"DingBao-sys"},"content":" Integer.parseInt(s);","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"DingBao-sys"},"content":" } catch(NumberFormatException e) {","lastModifiedDate":"2024-01-23"},{"lineNumber":23,"author":{"gitId":"DingBao-sys"},"content":" return false;","lastModifiedDate":"2024-01-23"},{"lineNumber":24,"author":{"gitId":"DingBao-sys"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":25,"author":{"gitId":"DingBao-sys"},"content":" return true;","lastModifiedDate":"2024-01-23"},{"lineNumber":26,"author":{"gitId":"DingBao-sys"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":27,"author":{"gitId":"DingBao-sys"},"content":" private static void run() {","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"DingBao-sys"},"content":" ArrayList\u003cTask\u003e storage \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"DingBao-sys"},"content":" int currentIdx \u003d 0;","lastModifiedDate":"2024-01-23"},{"lineNumber":30,"author":{"gitId":"DingBao-sys"},"content":" Scanner sc \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-23"},{"lineNumber":31,"author":{"gitId":"DingBao-sys"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":32,"author":{"gitId":"DingBao-sys"},"content":" while (true) {","lastModifiedDate":"2024-01-23"},{"lineNumber":33,"author":{"gitId":"DingBao-sys"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":34,"author":{"gitId":"DingBao-sys"},"content":" String echoInput \u003d sc.nextLine();","lastModifiedDate":"2024-01-23"},{"lineNumber":35,"author":{"gitId":"DingBao-sys"},"content":" String[] words \u003d echoInput.split(\" \", 2);","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"DingBao-sys"},"content":" Commands token \u003d Commands.valueOf(words[0]);","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"DingBao-sys"},"content":" Task newTask \u003d null;","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"DingBao-sys"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":39,"author":{"gitId":"DingBao-sys"},"content":" switch (token) {","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"DingBao-sys"},"content":" case bye:","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"DingBao-sys"},"content":" return;","lastModifiedDate":"2024-01-23"},{"lineNumber":42,"author":{"gitId":"DingBao-sys"},"content":" case list:","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"DingBao-sys"},"content":" System.out.printf(\"%s Here are the tasks in your list:\\n\", hRULER);","lastModifiedDate":"2024-01-23"},{"lineNumber":44,"author":{"gitId":"DingBao-sys"},"content":" for (int i \u003d 0; i \u003c currentIdx; i++) {","lastModifiedDate":"2024-01-23"},{"lineNumber":45,"author":{"gitId":"DingBao-sys"},"content":" System.out.printf(\" %d.%s\\n\", i + 1, storage.get(i).toString());","lastModifiedDate":"2024-01-25"},{"lineNumber":46,"author":{"gitId":"DingBao-sys"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":47,"author":{"gitId":"DingBao-sys"},"content":" System.out.println(hRULER);","lastModifiedDate":"2024-01-23"},{"lineNumber":48,"author":{"gitId":"DingBao-sys"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"DingBao-sys"},"content":" case mark:","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"DingBao-sys"},"content":" if (words.length \u003d\u003d 1 || !isNumeric(words[1])) {","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"DingBao-sys"},"content":" throw new InvalidTaskIndexException(currentIdx);","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"DingBao-sys"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":53,"author":{"gitId":"DingBao-sys"},"content":" int taskIdx \u003d Integer.parseInt(words[1]) - 1;","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"DingBao-sys"},"content":" if (taskIdx \u003e\u003d currentIdx || taskIdx \u003c 0) {","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"DingBao-sys"},"content":" throw new InvalidTaskIndexException(currentIdx);","lastModifiedDate":"2024-01-28"},{"lineNumber":56,"author":{"gitId":"DingBao-sys"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":57,"author":{"gitId":"DingBao-sys"},"content":" storage.get(taskIdx).markDone();","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"DingBao-sys"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":59,"author":{"gitId":"DingBao-sys"},"content":" case unmark:","lastModifiedDate":"2024-01-30"},{"lineNumber":60,"author":{"gitId":"DingBao-sys"},"content":" if (words.length \u003d\u003d 1 || !isNumeric(words[1])) {","lastModifiedDate":"2024-01-30"},{"lineNumber":61,"author":{"gitId":"DingBao-sys"},"content":" throw new InvalidTaskIndexException(currentIdx);","lastModifiedDate":"2024-01-30"},{"lineNumber":62,"author":{"gitId":"DingBao-sys"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":63,"author":{"gitId":"DingBao-sys"},"content":" int taskIdx1 \u003d Integer.parseInt(words[1]) - 1;","lastModifiedDate":"2024-01-30"},{"lineNumber":64,"author":{"gitId":"DingBao-sys"},"content":" if (taskIdx1 \u003e\u003d currentIdx || taskIdx1 \u003c 0) {","lastModifiedDate":"2024-01-30"},{"lineNumber":65,"author":{"gitId":"DingBao-sys"},"content":" throw new InvalidTaskIndexException(currentIdx);","lastModifiedDate":"2024-01-30"},{"lineNumber":66,"author":{"gitId":"DingBao-sys"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":67,"author":{"gitId":"DingBao-sys"},"content":" storage.get(taskIdx1).unMarkDone();","lastModifiedDate":"2024-01-30"},{"lineNumber":68,"author":{"gitId":"DingBao-sys"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":69,"author":{"gitId":"DingBao-sys"},"content":" case delete:","lastModifiedDate":"2024-01-30"},{"lineNumber":70,"author":{"gitId":"DingBao-sys"},"content":" if (words.length \u003d\u003d 1 || !isNumeric(words[1])) {","lastModifiedDate":"2024-01-30"},{"lineNumber":71,"author":{"gitId":"DingBao-sys"},"content":" throw new InvalidTaskIndexException(currentIdx);","lastModifiedDate":"2024-01-30"},{"lineNumber":72,"author":{"gitId":"DingBao-sys"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":73,"author":{"gitId":"DingBao-sys"},"content":" int taskIdx2 \u003d Integer.parseInt(words[1]) - 1;","lastModifiedDate":"2024-01-30"},{"lineNumber":74,"author":{"gitId":"DingBao-sys"},"content":" if (taskIdx2 \u003e\u003d currentIdx || taskIdx2 \u003c 0) {","lastModifiedDate":"2024-01-30"},{"lineNumber":75,"author":{"gitId":"DingBao-sys"},"content":" throw new InvalidTaskIndexException(currentIdx);","lastModifiedDate":"2024-01-30"},{"lineNumber":76,"author":{"gitId":"DingBao-sys"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":77,"author":{"gitId":"DingBao-sys"},"content":" Task removed \u003d storage.remove(taskIdx2);","lastModifiedDate":"2024-01-30"},{"lineNumber":78,"author":{"gitId":"DingBao-sys"},"content":" currentIdx--;","lastModifiedDate":"2024-01-30"},{"lineNumber":79,"author":{"gitId":"DingBao-sys"},"content":" System.out.printf(\"%s Noted. I\u0027ve removed this task:\\n %s\\n Now you have %d tasks in the list.\\n%s\",","lastModifiedDate":"2024-01-30"},{"lineNumber":80,"author":{"gitId":"DingBao-sys"},"content":" hRULER, removed, currentIdx, hRULER);","lastModifiedDate":"2024-01-30"},{"lineNumber":81,"author":{"gitId":"DingBao-sys"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":82,"author":{"gitId":"DingBao-sys"},"content":" case todo:","lastModifiedDate":"2024-01-30"},{"lineNumber":83,"author":{"gitId":"DingBao-sys"},"content":" if (words.length \u003d\u003d 1) {","lastModifiedDate":"2024-01-30"},{"lineNumber":84,"author":{"gitId":"DingBao-sys"},"content":" throw new EmptyDescriptionException(\"todo\");","lastModifiedDate":"2024-01-30"},{"lineNumber":85,"author":{"gitId":"DingBao-sys"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":86,"author":{"gitId":"DingBao-sys"},"content":" newTask \u003d new ToDo(words[1]);","lastModifiedDate":"2024-01-30"},{"lineNumber":87,"author":{"gitId":"DingBao-sys"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":88,"author":{"gitId":"DingBao-sys"},"content":" case event:","lastModifiedDate":"2024-01-30"},{"lineNumber":89,"author":{"gitId":"DingBao-sys"},"content":" if (words.length \u003d\u003d 1) {","lastModifiedDate":"2024-01-30"},{"lineNumber":90,"author":{"gitId":"DingBao-sys"},"content":" throw new EmptyDescriptionException(\"event\");","lastModifiedDate":"2024-01-25"},{"lineNumber":91,"author":{"gitId":"DingBao-sys"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":92,"author":{"gitId":"DingBao-sys"},"content":" int startIdx \u003d 0;","lastModifiedDate":"2024-01-24"},{"lineNumber":93,"author":{"gitId":"DingBao-sys"},"content":" int numOfSlash \u003d 0;","lastModifiedDate":"2024-01-28"},{"lineNumber":94,"author":{"gitId":"DingBao-sys"},"content":" while (startIdx \u003c words[1].length()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":95,"author":{"gitId":"DingBao-sys"},"content":" if (words[1].charAt(startIdx) !\u003d \u0027/\u0027) {","lastModifiedDate":"2024-01-30"},{"lineNumber":96,"author":{"gitId":"DingBao-sys"},"content":" startIdx++;","lastModifiedDate":"2024-01-24"},{"lineNumber":97,"author":{"gitId":"DingBao-sys"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":98,"author":{"gitId":"DingBao-sys"},"content":" numOfSlash++;","lastModifiedDate":"2024-01-28"},{"lineNumber":99,"author":{"gitId":"DingBao-sys"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":100,"author":{"gitId":"DingBao-sys"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":101,"author":{"gitId":"DingBao-sys"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":102,"author":{"gitId":"DingBao-sys"},"content":" int endIdx \u003d startIdx + 1;","lastModifiedDate":"2024-01-24"},{"lineNumber":103,"author":{"gitId":"DingBao-sys"},"content":" while (endIdx \u003c words[1].length()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":104,"author":{"gitId":"DingBao-sys"},"content":" if (words[1].charAt(endIdx) !\u003d \u0027/\u0027) {","lastModifiedDate":"2024-01-30"},{"lineNumber":105,"author":{"gitId":"DingBao-sys"},"content":" endIdx++;","lastModifiedDate":"2024-01-24"},{"lineNumber":106,"author":{"gitId":"DingBao-sys"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":107,"author":{"gitId":"DingBao-sys"},"content":" numOfSlash++;","lastModifiedDate":"2024-01-28"},{"lineNumber":108,"author":{"gitId":"DingBao-sys"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":109,"author":{"gitId":"DingBao-sys"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":110,"author":{"gitId":"DingBao-sys"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":111,"author":{"gitId":"DingBao-sys"},"content":" if (numOfSlash \u003c 2) {","lastModifiedDate":"2024-01-28"},{"lineNumber":112,"author":{"gitId":"DingBao-sys"},"content":" throw new InvalidEventException();","lastModifiedDate":"2024-01-28"},{"lineNumber":113,"author":{"gitId":"DingBao-sys"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":114,"author":{"gitId":"DingBao-sys"},"content":" newTask \u003d new Event(words[1].substring(0, startIdx),","lastModifiedDate":"2024-01-30"},{"lineNumber":115,"author":{"gitId":"DingBao-sys"},"content":" words[1].substring(startIdx + 6, endIdx),","lastModifiedDate":"2024-01-30"},{"lineNumber":116,"author":{"gitId":"DingBao-sys"},"content":" words[1].substring(endIdx + 4));","lastModifiedDate":"2024-01-30"},{"lineNumber":117,"author":{"gitId":"DingBao-sys"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":118,"author":{"gitId":"DingBao-sys"},"content":" case deadline:","lastModifiedDate":"2024-01-30"},{"lineNumber":119,"author":{"gitId":"DingBao-sys"},"content":" if (words.length \u003d\u003d 1) {","lastModifiedDate":"2024-01-30"},{"lineNumber":120,"author":{"gitId":"DingBao-sys"},"content":" throw new EmptyDescriptionException(\"deadline\");","lastModifiedDate":"2024-01-25"},{"lineNumber":121,"author":{"gitId":"DingBao-sys"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":122,"author":{"gitId":"DingBao-sys"},"content":" int deadlineStartIdx \u003d 0;","lastModifiedDate":"2024-01-25"},{"lineNumber":123,"author":{"gitId":"DingBao-sys"},"content":" boolean foundTime \u003d false;","lastModifiedDate":"2024-01-25"},{"lineNumber":124,"author":{"gitId":"DingBao-sys"},"content":" while (deadlineStartIdx \u003c words[1].length()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":125,"author":{"gitId":"DingBao-sys"},"content":" if (words[1].charAt(deadlineStartIdx) !\u003d \u0027/\u0027) {","lastModifiedDate":"2024-01-30"},{"lineNumber":126,"author":{"gitId":"DingBao-sys"},"content":" deadlineStartIdx++;","lastModifiedDate":"2024-01-25"},{"lineNumber":127,"author":{"gitId":"DingBao-sys"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":128,"author":{"gitId":"DingBao-sys"},"content":" foundTime \u003d true;","lastModifiedDate":"2024-01-25"},{"lineNumber":129,"author":{"gitId":"DingBao-sys"},"content":" break;","lastModifiedDate":"2024-01-25"},{"lineNumber":130,"author":{"gitId":"DingBao-sys"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":131,"author":{"gitId":"DingBao-sys"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":132,"author":{"gitId":"DingBao-sys"},"content":" if (!foundTime) {","lastModifiedDate":"2024-01-25"},{"lineNumber":133,"author":{"gitId":"DingBao-sys"},"content":" throw new InvalidDeadlineException();","lastModifiedDate":"2024-01-25"},{"lineNumber":134,"author":{"gitId":"DingBao-sys"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":135,"author":{"gitId":"DingBao-sys"},"content":" newTask \u003d new Deadline(words[1].substring(0, deadlineStartIdx),","lastModifiedDate":"2024-01-30"},{"lineNumber":136,"author":{"gitId":"DingBao-sys"},"content":" words[1].substring(deadlineStartIdx + 4));","lastModifiedDate":"2024-01-30"},{"lineNumber":137,"author":{"gitId":"DingBao-sys"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":138,"author":{"gitId":"DingBao-sys"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":139,"author":{"gitId":"DingBao-sys"},"content":" if (newTask !\u003d null) {","lastModifiedDate":"2024-01-30"},{"lineNumber":140,"author":{"gitId":"DingBao-sys"},"content":" storage.add(newTask);","lastModifiedDate":"2024-01-25"},{"lineNumber":141,"author":{"gitId":"DingBao-sys"},"content":" currentIdx++;","lastModifiedDate":"2024-01-25"},{"lineNumber":142,"author":{"gitId":"DingBao-sys"},"content":" System.out.printf(\"%s Got it. I\u0027ve added this task:\\n \" +","lastModifiedDate":"2024-01-24"},{"lineNumber":143,"author":{"gitId":"DingBao-sys"},"content":" \" %s\\n Now you have %d tasks in the list.\\n%s\", hRULER, newTask, currentIdx, hRULER);","lastModifiedDate":"2024-01-24"},{"lineNumber":144,"author":{"gitId":"DingBao-sys"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":145,"author":{"gitId":"DingBao-sys"},"content":" } catch (IllegalArgumentException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":146,"author":{"gitId":"DingBao-sys"},"content":" System.out.printf(\"%s%s%s\", hRULER, new UnknownInputException(), hRULER);","lastModifiedDate":"2024-01-25"},{"lineNumber":147,"author":{"gitId":"DingBao-sys"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":148,"author":{"gitId":"DingBao-sys"},"content":" System.out.printf(\"%s%s%s\", hRULER, e, hRULER);","lastModifiedDate":"2024-01-25"},{"lineNumber":149,"author":{"gitId":"DingBao-sys"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":150,"author":{"gitId":"DingBao-sys"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":151,"author":{"gitId":"DingBao-sys"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":152,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2019-07-29"},{"lineNumber":153,"author":{"gitId":"DingBao-sys"},"content":" String[] token \u003d new String[]{","lastModifiedDate":"2024-01-22"},{"lineNumber":154,"author":{"gitId":"DingBao-sys"},"content":" \"____________________________________________________________\",","lastModifiedDate":"2024-01-22"},{"lineNumber":155,"author":{"gitId":"DingBao-sys"},"content":" \"Hello! I\u0027m chinesepoliceman\",","lastModifiedDate":"2024-01-22"},{"lineNumber":156,"author":{"gitId":"DingBao-sys"},"content":" \"What can I do for you?\",","lastModifiedDate":"2024-01-22"},{"lineNumber":157,"author":{"gitId":"DingBao-sys"},"content":" \"____________________________________________________________\",","lastModifiedDate":"2024-01-22"},{"lineNumber":158,"author":{"gitId":"DingBao-sys"},"content":" \" Bye. Hope to see you again soon!\",","lastModifiedDate":"2024-01-22"},{"lineNumber":159,"author":{"gitId":"DingBao-sys"},"content":" \"____________________________________________________________\"","lastModifiedDate":"2024-01-22"},{"lineNumber":160,"author":{"gitId":"DingBao-sys"},"content":" };","lastModifiedDate":"2024-01-22"},{"lineNumber":161,"author":{"gitId":"DingBao-sys"},"content":" for (int i \u003d 0; i \u003c 4; i++) {","lastModifiedDate":"2024-01-23"},{"lineNumber":162,"author":{"gitId":"DingBao-sys"},"content":" System.out.println(token[i]);","lastModifiedDate":"2024-01-23"},{"lineNumber":163,"author":{"gitId":"DingBao-sys"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":164,"author":{"gitId":"DingBao-sys"},"content":" run();","lastModifiedDate":"2024-01-23"},{"lineNumber":165,"author":{"gitId":"DingBao-sys"},"content":" for (int i \u003d 3; i \u003c 6; i++) {","lastModifiedDate":"2024-01-23"},{"lineNumber":166,"author":{"gitId":"DingBao-sys"},"content":" System.out.println(token[i]);","lastModifiedDate":"2024-01-23"},{"lineNumber":167,"author":{"gitId":"DingBao-sys"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":168,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":169,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"},{"lineNumber":170,"author":{"gitId":"DingBao-sys"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":171,"author":{"gitId":"DingBao-sys"},"content":"// private static void run() {","lastModifiedDate":"2024-01-30"},{"lineNumber":172,"author":{"gitId":"DingBao-sys"},"content":"// ArrayList\u003cTask\u003e storage \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-30"},{"lineNumber":173,"author":{"gitId":"DingBao-sys"},"content":"// int currentIdx \u003d 0;","lastModifiedDate":"2024-01-30"},{"lineNumber":174,"author":{"gitId":"DingBao-sys"},"content":"// Scanner sc \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-30"},{"lineNumber":175,"author":{"gitId":"DingBao-sys"},"content":"//","lastModifiedDate":"2024-01-30"},{"lineNumber":176,"author":{"gitId":"DingBao-sys"},"content":"// while (true) {","lastModifiedDate":"2024-01-30"},{"lineNumber":177,"author":{"gitId":"DingBao-sys"},"content":"// try {","lastModifiedDate":"2024-01-30"},{"lineNumber":178,"author":{"gitId":"DingBao-sys"},"content":"// String echoInput \u003d sc.nextLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":179,"author":{"gitId":"DingBao-sys"},"content":"// Task newTask;","lastModifiedDate":"2024-01-30"},{"lineNumber":180,"author":{"gitId":"DingBao-sys"},"content":"//","lastModifiedDate":"2024-01-30"},{"lineNumber":181,"author":{"gitId":"DingBao-sys"},"content":"// if (echoInput.equals(\"bye\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":182,"author":{"gitId":"DingBao-sys"},"content":"// return;","lastModifiedDate":"2024-01-30"},{"lineNumber":183,"author":{"gitId":"DingBao-sys"},"content":"// }","lastModifiedDate":"2024-01-30"},{"lineNumber":184,"author":{"gitId":"DingBao-sys"},"content":"// if (echoInput.equals(\"list\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":185,"author":{"gitId":"DingBao-sys"},"content":"// System.out.printf(\"%s Here are the tasks in your list:\\n\", hRULER);","lastModifiedDate":"2024-01-30"},{"lineNumber":186,"author":{"gitId":"DingBao-sys"},"content":"// for (int i \u003d 0; i \u003c currentIdx; i++) {","lastModifiedDate":"2024-01-30"},{"lineNumber":187,"author":{"gitId":"DingBao-sys"},"content":"// System.out.printf(\" %d.%s\\n\", i + 1, storage.get(i).toString());","lastModifiedDate":"2024-01-30"},{"lineNumber":188,"author":{"gitId":"DingBao-sys"},"content":"// }","lastModifiedDate":"2024-01-30"},{"lineNumber":189,"author":{"gitId":"DingBao-sys"},"content":"// System.out.println(hRULER);","lastModifiedDate":"2024-01-30"},{"lineNumber":190,"author":{"gitId":"DingBao-sys"},"content":"// continue;","lastModifiedDate":"2024-01-30"},{"lineNumber":191,"author":{"gitId":"DingBao-sys"},"content":"// }","lastModifiedDate":"2024-01-30"},{"lineNumber":192,"author":{"gitId":"DingBao-sys"},"content":"// if (echoInput.substring(0, 4).equals(\"mark\")","lastModifiedDate":"2024-01-30"},{"lineNumber":193,"author":{"gitId":"DingBao-sys"},"content":"// \u0026\u0026 isNumeric(echoInput.substring(5))) {","lastModifiedDate":"2024-01-30"},{"lineNumber":194,"author":{"gitId":"DingBao-sys"},"content":"// int taskIdx \u003d Integer.parseInt(echoInput.substring(5));","lastModifiedDate":"2024-01-30"},{"lineNumber":195,"author":{"gitId":"DingBao-sys"},"content":"// if (taskIdx \u003e\u003d currentIdx) {","lastModifiedDate":"2024-01-30"},{"lineNumber":196,"author":{"gitId":"DingBao-sys"},"content":"// throw new InvalidTaskIndexException(currentIdx);","lastModifiedDate":"2024-01-30"},{"lineNumber":197,"author":{"gitId":"DingBao-sys"},"content":"// }","lastModifiedDate":"2024-01-30"},{"lineNumber":198,"author":{"gitId":"DingBao-sys"},"content":"// storage.get(taskIdx - 1).markDone();","lastModifiedDate":"2024-01-30"},{"lineNumber":199,"author":{"gitId":"DingBao-sys"},"content":"// continue;","lastModifiedDate":"2024-01-30"},{"lineNumber":200,"author":{"gitId":"DingBao-sys"},"content":"// }","lastModifiedDate":"2024-01-30"},{"lineNumber":201,"author":{"gitId":"DingBao-sys"},"content":"// else if (echoInput.substring(0, 4).equals(\"todo\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":202,"author":{"gitId":"DingBao-sys"},"content":"// if (echoInput.length() \u003d\u003d 4) {","lastModifiedDate":"2024-01-30"},{"lineNumber":203,"author":{"gitId":"DingBao-sys"},"content":"// throw new EmptyDescriptionException(\"todo\");","lastModifiedDate":"2024-01-30"},{"lineNumber":204,"author":{"gitId":"DingBao-sys"},"content":"// }","lastModifiedDate":"2024-01-30"},{"lineNumber":205,"author":{"gitId":"DingBao-sys"},"content":"// newTask \u003d new ToDo(echoInput.substring(5));","lastModifiedDate":"2024-01-30"},{"lineNumber":206,"author":{"gitId":"DingBao-sys"},"content":"// }","lastModifiedDate":"2024-01-30"},{"lineNumber":207,"author":{"gitId":"DingBao-sys"},"content":"// else if (echoInput.substring(0, 5).equals(\"event\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":208,"author":{"gitId":"DingBao-sys"},"content":"// if (echoInput.length() \u003d\u003d 5) {","lastModifiedDate":"2024-01-30"},{"lineNumber":209,"author":{"gitId":"DingBao-sys"},"content":"// throw new EmptyDescriptionException(\"event\");","lastModifiedDate":"2024-01-30"},{"lineNumber":210,"author":{"gitId":"DingBao-sys"},"content":"// }","lastModifiedDate":"2024-01-30"},{"lineNumber":211,"author":{"gitId":"DingBao-sys"},"content":"// int startIdx \u003d 0;","lastModifiedDate":"2024-01-30"},{"lineNumber":212,"author":{"gitId":"DingBao-sys"},"content":"// int numOfSlash \u003d 0;","lastModifiedDate":"2024-01-30"},{"lineNumber":213,"author":{"gitId":"DingBao-sys"},"content":"// while (startIdx \u003c echoInput.length()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":214,"author":{"gitId":"DingBao-sys"},"content":"// if (echoInput.charAt(startIdx) !\u003d \u0027/\u0027) {","lastModifiedDate":"2024-01-30"},{"lineNumber":215,"author":{"gitId":"DingBao-sys"},"content":"// startIdx++;","lastModifiedDate":"2024-01-30"},{"lineNumber":216,"author":{"gitId":"DingBao-sys"},"content":"// } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":217,"author":{"gitId":"DingBao-sys"},"content":"// numOfSlash++;","lastModifiedDate":"2024-01-30"},{"lineNumber":218,"author":{"gitId":"DingBao-sys"},"content":"// break;","lastModifiedDate":"2024-01-30"},{"lineNumber":219,"author":{"gitId":"DingBao-sys"},"content":"// }","lastModifiedDate":"2024-01-30"},{"lineNumber":220,"author":{"gitId":"DingBao-sys"},"content":"// }","lastModifiedDate":"2024-01-30"},{"lineNumber":221,"author":{"gitId":"DingBao-sys"},"content":"// int endIdx \u003d startIdx + 1;","lastModifiedDate":"2024-01-30"},{"lineNumber":222,"author":{"gitId":"DingBao-sys"},"content":"// while (endIdx \u003c echoInput.length()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":223,"author":{"gitId":"DingBao-sys"},"content":"// if (echoInput.charAt(endIdx) !\u003d \u0027/\u0027) {","lastModifiedDate":"2024-01-30"},{"lineNumber":224,"author":{"gitId":"DingBao-sys"},"content":"// endIdx++;","lastModifiedDate":"2024-01-30"},{"lineNumber":225,"author":{"gitId":"DingBao-sys"},"content":"// } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":226,"author":{"gitId":"DingBao-sys"},"content":"// numOfSlash++;","lastModifiedDate":"2024-01-30"},{"lineNumber":227,"author":{"gitId":"DingBao-sys"},"content":"// break;","lastModifiedDate":"2024-01-30"},{"lineNumber":228,"author":{"gitId":"DingBao-sys"},"content":"// }","lastModifiedDate":"2024-01-30"},{"lineNumber":229,"author":{"gitId":"DingBao-sys"},"content":"// }","lastModifiedDate":"2024-01-30"},{"lineNumber":230,"author":{"gitId":"DingBao-sys"},"content":"// if (numOfSlash \u003c 2) {","lastModifiedDate":"2024-01-30"},{"lineNumber":231,"author":{"gitId":"DingBao-sys"},"content":"// throw new InvalidEventException();","lastModifiedDate":"2024-01-30"},{"lineNumber":232,"author":{"gitId":"DingBao-sys"},"content":"// }","lastModifiedDate":"2024-01-30"},{"lineNumber":233,"author":{"gitId":"DingBao-sys"},"content":"// newTask \u003d new Event(echoInput.substring(6, startIdx),","lastModifiedDate":"2024-01-30"},{"lineNumber":234,"author":{"gitId":"DingBao-sys"},"content":"// echoInput.substring(startIdx + 6, endIdx),","lastModifiedDate":"2024-01-30"},{"lineNumber":235,"author":{"gitId":"DingBao-sys"},"content":"// echoInput.substring(endIdx + 4));","lastModifiedDate":"2024-01-30"},{"lineNumber":236,"author":{"gitId":"DingBao-sys"},"content":"// }","lastModifiedDate":"2024-01-30"},{"lineNumber":237,"author":{"gitId":"DingBao-sys"},"content":"// else if (echoInput.substring(0, 6).equals(\"unmark\") \u0026\u0026","lastModifiedDate":"2024-01-30"},{"lineNumber":238,"author":{"gitId":"DingBao-sys"},"content":"// isNumeric(echoInput.substring(7))) {","lastModifiedDate":"2024-01-30"},{"lineNumber":239,"author":{"gitId":"DingBao-sys"},"content":"// int taskIdx \u003d Integer.parseInt(echoInput.substring(7));","lastModifiedDate":"2024-01-30"},{"lineNumber":240,"author":{"gitId":"DingBao-sys"},"content":"// if (taskIdx \u003e\u003d currentIdx) {","lastModifiedDate":"2024-01-30"},{"lineNumber":241,"author":{"gitId":"DingBao-sys"},"content":"// throw new InvalidTaskIndexException(currentIdx);","lastModifiedDate":"2024-01-30"},{"lineNumber":242,"author":{"gitId":"DingBao-sys"},"content":"// }","lastModifiedDate":"2024-01-30"},{"lineNumber":243,"author":{"gitId":"DingBao-sys"},"content":"// storage.get(taskIdx - 1).unMarkDone();","lastModifiedDate":"2024-01-30"},{"lineNumber":244,"author":{"gitId":"DingBao-sys"},"content":"// continue;","lastModifiedDate":"2024-01-30"},{"lineNumber":245,"author":{"gitId":"DingBao-sys"},"content":"// }","lastModifiedDate":"2024-01-30"},{"lineNumber":246,"author":{"gitId":"DingBao-sys"},"content":"// else if (echoInput.substring(0, 6).equals(\"delete\") \u0026\u0026","lastModifiedDate":"2024-01-30"},{"lineNumber":247,"author":{"gitId":"DingBao-sys"},"content":"// isNumeric(echoInput.substring(7))) {","lastModifiedDate":"2024-01-30"},{"lineNumber":248,"author":{"gitId":"DingBao-sys"},"content":"// int taskIdx \u003d Integer.parseInt(echoInput.substring(7));","lastModifiedDate":"2024-01-30"},{"lineNumber":249,"author":{"gitId":"DingBao-sys"},"content":"// if (taskIdx \u003e\u003d currentIdx) {","lastModifiedDate":"2024-01-30"},{"lineNumber":250,"author":{"gitId":"DingBao-sys"},"content":"// throw new InvalidTaskIndexException(currentIdx);","lastModifiedDate":"2024-01-30"},{"lineNumber":251,"author":{"gitId":"DingBao-sys"},"content":"// }","lastModifiedDate":"2024-01-30"},{"lineNumber":252,"author":{"gitId":"DingBao-sys"},"content":"// Task removed \u003d storage.remove(taskIdx - 1);","lastModifiedDate":"2024-01-30"},{"lineNumber":253,"author":{"gitId":"DingBao-sys"},"content":"// currentIdx--;","lastModifiedDate":"2024-01-30"},{"lineNumber":254,"author":{"gitId":"DingBao-sys"},"content":"// System.out.printf(\"%s Noted. I\u0027ve removed this task:\\n %s\\n Now you have %d tasks in the list.\\n%s\",","lastModifiedDate":"2024-01-30"},{"lineNumber":255,"author":{"gitId":"DingBao-sys"},"content":"// hRULER, removed, currentIdx, hRULER);","lastModifiedDate":"2024-01-30"},{"lineNumber":256,"author":{"gitId":"DingBao-sys"},"content":"// continue;","lastModifiedDate":"2024-01-30"},{"lineNumber":257,"author":{"gitId":"DingBao-sys"},"content":"// }","lastModifiedDate":"2024-01-30"},{"lineNumber":258,"author":{"gitId":"DingBao-sys"},"content":"// else if (echoInput.substring(0, 8).equals(\"deadline\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":259,"author":{"gitId":"DingBao-sys"},"content":"// if (echoInput.length() \u003d\u003d 8) {","lastModifiedDate":"2024-01-30"},{"lineNumber":260,"author":{"gitId":"DingBao-sys"},"content":"// throw new EmptyDescriptionException(\"deadline\");","lastModifiedDate":"2024-01-30"},{"lineNumber":261,"author":{"gitId":"DingBao-sys"},"content":"// }","lastModifiedDate":"2024-01-30"},{"lineNumber":262,"author":{"gitId":"DingBao-sys"},"content":"// int deadlineStartIdx \u003d 0;","lastModifiedDate":"2024-01-30"},{"lineNumber":263,"author":{"gitId":"DingBao-sys"},"content":"// boolean foundTime \u003d false;","lastModifiedDate":"2024-01-30"},{"lineNumber":264,"author":{"gitId":"DingBao-sys"},"content":"// while (deadlineStartIdx \u003c echoInput.length()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":265,"author":{"gitId":"DingBao-sys"},"content":"// if (echoInput.charAt(deadlineStartIdx) !\u003d \u0027/\u0027) {","lastModifiedDate":"2024-01-30"},{"lineNumber":266,"author":{"gitId":"DingBao-sys"},"content":"// deadlineStartIdx++;","lastModifiedDate":"2024-01-30"},{"lineNumber":267,"author":{"gitId":"DingBao-sys"},"content":"// } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":268,"author":{"gitId":"DingBao-sys"},"content":"// foundTime \u003d true;","lastModifiedDate":"2024-01-30"},{"lineNumber":269,"author":{"gitId":"DingBao-sys"},"content":"// break;","lastModifiedDate":"2024-01-30"},{"lineNumber":270,"author":{"gitId":"DingBao-sys"},"content":"// }","lastModifiedDate":"2024-01-30"},{"lineNumber":271,"author":{"gitId":"DingBao-sys"},"content":"// }","lastModifiedDate":"2024-01-30"},{"lineNumber":272,"author":{"gitId":"DingBao-sys"},"content":"// if (!foundTime) {","lastModifiedDate":"2024-01-30"},{"lineNumber":273,"author":{"gitId":"DingBao-sys"},"content":"// throw new InvalidDeadlineException();","lastModifiedDate":"2024-01-30"},{"lineNumber":274,"author":{"gitId":"DingBao-sys"},"content":"// }","lastModifiedDate":"2024-01-30"},{"lineNumber":275,"author":{"gitId":"DingBao-sys"},"content":"// newTask \u003d new Deadline(echoInput.substring(9, deadlineStartIdx),","lastModifiedDate":"2024-01-30"},{"lineNumber":276,"author":{"gitId":"DingBao-sys"},"content":"// echoInput.substring(deadlineStartIdx + 4));","lastModifiedDate":"2024-01-30"},{"lineNumber":277,"author":{"gitId":"DingBao-sys"},"content":"// }","lastModifiedDate":"2024-01-30"},{"lineNumber":278,"author":{"gitId":"DingBao-sys"},"content":"// else {","lastModifiedDate":"2024-01-30"},{"lineNumber":279,"author":{"gitId":"DingBao-sys"},"content":"// throw new UnknownInputException();","lastModifiedDate":"2024-01-30"},{"lineNumber":280,"author":{"gitId":"DingBao-sys"},"content":"// }","lastModifiedDate":"2024-01-30"},{"lineNumber":281,"author":{"gitId":"DingBao-sys"},"content":"// storage.add(newTask);","lastModifiedDate":"2024-01-30"},{"lineNumber":282,"author":{"gitId":"DingBao-sys"},"content":"// currentIdx++;","lastModifiedDate":"2024-01-30"},{"lineNumber":283,"author":{"gitId":"DingBao-sys"},"content":"// System.out.printf(\"%s Got it. I\u0027ve added this task:\\n \" +","lastModifiedDate":"2024-01-30"},{"lineNumber":284,"author":{"gitId":"DingBao-sys"},"content":"// \" %s\\n Now you have %d tasks in the list.\\n%s\", hRULER, newTask, currentIdx, hRULER);","lastModifiedDate":"2024-01-30"},{"lineNumber":285,"author":{"gitId":"DingBao-sys"},"content":"// } catch (StringIndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":286,"author":{"gitId":"DingBao-sys"},"content":"// System.out.printf(\"%s%s%s\", hRULER, new UnknownInputException(), hRULER);","lastModifiedDate":"2024-01-30"},{"lineNumber":287,"author":{"gitId":"DingBao-sys"},"content":"// } catch (DukeException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":288,"author":{"gitId":"DingBao-sys"},"content":"// System.out.printf(\"%s%s%s\", hRULER, e, hRULER);","lastModifiedDate":"2024-01-30"},{"lineNumber":289,"author":{"gitId":"DingBao-sys"},"content":"// }","lastModifiedDate":"2024-01-30"},{"lineNumber":290,"author":{"gitId":"DingBao-sys"},"content":"// }","lastModifiedDate":"2024-01-30"},{"lineNumber":291,"author":{"gitId":"DingBao-sys"},"content":"// }","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"DingBao-sys":287,"-":4}},{"path":"src/main/java/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"DingBao-sys"},"content":"public class DukeException extends Throwable {","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"DingBao-sys"},"content":" public DukeException() {","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"DingBao-sys"},"content":" super();","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"DingBao-sys"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"DingBao-sys"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"DingBao-sys":5}},{"path":"src/main/java/EmptyDescriptionException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"DingBao-sys"},"content":"public class EmptyDescriptionException extends DukeException {","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"DingBao-sys"},"content":" String taskType;","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"DingBao-sys"},"content":" public EmptyDescriptionException(String TaskType) {","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"DingBao-sys"},"content":" super();","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"DingBao-sys"},"content":" this.taskType \u003d TaskType;","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"DingBao-sys"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"DingBao-sys"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"DingBao-sys"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"DingBao-sys"},"content":" public String toString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"DingBao-sys"},"content":" return String.format(\"You definitely are a genius creating a %s with no description.\\nI hope you are genius enough \" +","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"DingBao-sys"},"content":" \"to try again with an adequate description\\n\", this.taskType);","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"DingBao-sys"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"DingBao-sys"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"DingBao-sys":13}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"DingBao-sys"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"DingBao-sys"},"content":" private String start;","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"DingBao-sys"},"content":" private String end;","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"DingBao-sys"},"content":" public Event(String desc, String start, String end) {","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"DingBao-sys"},"content":" super(desc);","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"DingBao-sys"},"content":" this.start \u003d start;","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"DingBao-sys"},"content":" this.end \u003d end;","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"DingBao-sys"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"DingBao-sys"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"DingBao-sys"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"DingBao-sys"},"content":" return String.format(\"[E]%s(from: %sto: %s)\",","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"DingBao-sys"},"content":" super.toString(),start, end);","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"DingBao-sys"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"DingBao-sys"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"DingBao-sys":14}},{"path":"src/main/java/InvalidDeadlineException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"DingBao-sys"},"content":"public class InvalidDeadlineException extends DukeException {","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"DingBao-sys"},"content":" public InvalidDeadlineException() {","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"DingBao-sys"},"content":" super();","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"DingBao-sys"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"DingBao-sys"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"DingBao-sys"},"content":" public String toString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"DingBao-sys"},"content":" return \"Maybe you do not know what a deadline is,\\nbut please have key in a valid time or day as a deadline following\\n\" +","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"DingBao-sys"},"content":" \"a \u0027/\u0027\\n\";","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"DingBao-sys"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"DingBao-sys"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"DingBao-sys":10}},{"path":"src/main/java/InvalidEventException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"DingBao-sys"},"content":"public class InvalidEventException extends DukeException {","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"DingBao-sys"},"content":" public InvalidEventException() {","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"DingBao-sys"},"content":" super();","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"DingBao-sys"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"DingBao-sys"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"DingBao-sys"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"DingBao-sys"},"content":" public String toString() {","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"DingBao-sys"},"content":" return \"After I try so hard, you want to cook me by keying the date and time wrongly\\n\" +","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"DingBao-sys"},"content":" \"try again by adding the time in the format [task description] / from: starttime / end : endtime\\n\";","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"DingBao-sys"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"DingBao-sys"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"DingBao-sys":11}},{"path":"src/main/java/InvalidTaskIndexException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"DingBao-sys"},"content":"public class InvalidTaskIndexException extends DukeException {","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"DingBao-sys"},"content":" private int currentSize;","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"DingBao-sys"},"content":" public InvalidTaskIndexException(int size) {","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"DingBao-sys"},"content":" super();","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"DingBao-sys"},"content":" this.currentSize \u003d size;","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"DingBao-sys"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"DingBao-sys"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"DingBao-sys"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"DingBao-sys"},"content":" public String toString() {","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"DingBao-sys"},"content":" return String.format(\" Stop trolling and pick a positive number\\n within %d\\n\", currentSize);","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"DingBao-sys"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"DingBao-sys"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"DingBao-sys"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"DingBao-sys":13}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"DingBao-sys"},"content":"public class Task {","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"DingBao-sys"},"content":" private final static String hRULER \u003d \"____________________________________________________________\\n\";","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"DingBao-sys"},"content":" private final String description;","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"DingBao-sys"},"content":" private String status \u003d \"[ ]\";","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"DingBao-sys"},"content":" public Task(String token) {","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"DingBao-sys"},"content":" this.description \u003d token;","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"DingBao-sys"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"DingBao-sys"},"content":" public void markDone() {","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"DingBao-sys"},"content":" this.status \u003d \"[X]\";","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"DingBao-sys"},"content":" System.out.printf(\"%s Nice! I\u0027ve marked this task as done:\\n %s\\n%s\",","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"DingBao-sys"},"content":" hRULER, this.toString(), hRULER);","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"DingBao-sys"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"DingBao-sys"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"DingBao-sys"},"content":" public void unMarkDone() {","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"DingBao-sys"},"content":" this.status \u003d \"[ ]\";","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"DingBao-sys"},"content":" System.out.printf(\"%s OK, I\u0027ve marked this task as not done yet:\\n %s\\n%s\",","lastModifiedDate":"2024-01-23"},{"lineNumber":17,"author":{"gitId":"DingBao-sys"},"content":" hRULER, this.toString(), hRULER);","lastModifiedDate":"2024-01-23"},{"lineNumber":18,"author":{"gitId":"DingBao-sys"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":19,"author":{"gitId":"DingBao-sys"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":20,"author":{"gitId":"DingBao-sys"},"content":" public String toString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":21,"author":{"gitId":"DingBao-sys"},"content":" return String.format(\"%s %s\", this.status, this.description);","lastModifiedDate":"2024-01-23"},{"lineNumber":22,"author":{"gitId":"DingBao-sys"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":23,"author":{"gitId":"DingBao-sys"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"DingBao-sys":23}},{"path":"src/main/java/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"DingBao-sys"},"content":"public class ToDo extends Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"DingBao-sys"},"content":" public ToDo(String s) {","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"DingBao-sys"},"content":" super(s);","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"DingBao-sys"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"DingBao-sys"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"DingBao-sys"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"DingBao-sys"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"DingBao-sys"},"content":" return String.format(\"[T]%s\", super.toString());","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"DingBao-sys"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"DingBao-sys"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"DingBao-sys":10}},{"path":"src/main/java/UnknownInputException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"DingBao-sys"},"content":"public class UnknownInputException extends DukeException {","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"DingBao-sys"},"content":" public UnknownInputException() {","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"DingBao-sys"},"content":" super();","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"DingBao-sys"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"DingBao-sys"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"DingBao-sys"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"DingBao-sys"},"content":" public String toString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"DingBao-sys"},"content":" return \"If you want to type gibberish you can craft your own Duke,\\nhowever if you wish to continue talking to me \" +","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"DingBao-sys"},"content":" \"here are the available commands:\\nlist\\ntodo\\nevent\\ndeadline\\n\";","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"DingBao-sys"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"DingBao-sys"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"DingBao-sys":11}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"DingBao-sys"},"content":"todo borrow book","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"DingBao-sys"},"content":"list","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"DingBao-sys"},"content":"deadline return book /by Sunday","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"DingBao-sys"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"DingBao-sys":4}},{"path":"text-ui-test/input1.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"DingBao-sys"},"content":"todo read book","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"DingBao-sys"},"content":"mark 1","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"DingBao-sys"},"content":"deadline return book /by June 6th","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"DingBao-sys"},"content":"mark 2","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"DingBao-sys"},"content":"event project meeting /from Aug 6th 2pm /to 4pm","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"DingBao-sys"},"content":"todo join sport club","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"DingBao-sys"},"content":"mark 4","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"DingBao-sys"},"content":"todo borrow book","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"DingBao-sys"},"content":"list","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"DingBao-sys"},"content":"delete 4","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"DingBao-sys"},"content":"mark 5","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"DingBao-sys"},"content":"unmark 5","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"DingBao-sys":12}},{"path":"text-ui-test/output.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"DingBao-sys"},"content":"\u001b[?1049h\u001b[\u003e4;2m\u001b[?1h\u001b\u003d\u001b[?2004h\u001b[?1004h\u001b[1;67r\u001b[?12h\u001b[?12l\u001b[22;2t\u001b[22;1t\u001b[27m\u001b[23m\u001b[29m\u001b[m\u001b[H\u001b[2J\u001b[?25l\u001b[67;1H\"runtest.sh\" [noeol] 38L, 848B\u001b[1;1H\u001b[96m#!/usr/bin/env bash","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"DingBao-sys"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"DingBao-sys"},"content":"# create bin directory if it doesn\u0027t exist\u001b[m","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"DingBao-sys"},"content":"\u001b[93mif [\u001b[m \u001b[93m!\u001b[m \u001b[93m-d\u001b[m \u001b[93m\"\u001b[m\u001b[95m../bin\u001b[m\u001b[93m\"\u001b[m \u001b[93m]","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"DingBao-sys"},"content":"then","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"DingBao-sys"},"content":"\u001b[m \u001b[93mmkdir\u001b[m ../bin","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"DingBao-sys"},"content":"\u001b[93mfi\u001b[m","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"DingBao-sys"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"DingBao-sys"},"content":"\u001b[96m# delete output from previous run\u001b[m","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"DingBao-sys"},"content":"\u001b[93mif [\u001b[m \u001b[93m-e\u001b[m \u001b[93m\"\u001b[m\u001b[95m./ACTUAL.TXT\u001b[m\u001b[93m\"\u001b[m \u001b[93m]","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"DingBao-sys"},"content":"then","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"DingBao-sys"},"content":"\u001b[m \u001b[93mrm\u001b[m ACTUAL.TXT","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"DingBao-sys"},"content":"\u001b[93mfi\u001b[m","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"DingBao-sys"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"DingBao-sys"},"content":"\u001b[96m# compile the code into the bin folder, terminates if error occurred\u001b[m","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"DingBao-sys"},"content":"\u001b[93mif !\u001b[m javac \u001b[38;5;224m-cp\u001b[m ../src/main/java \u001b[38;5;224m-Xlint\u001b[m:none \u001b[93m-d\u001b[m ../bin ../src/main/java/*.java","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"DingBao-sys"},"content":"\u001b[93mthen","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"DingBao-sys"},"content":"\u001b[m \u001b[93mecho\u001b[m\u001b[95m \u001b[m\u001b[93m\"\u001b[m\u001b[95m********** BUILD FAILURE **********\u001b[m\u001b[93m\"","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"DingBao-sys"},"content":"\u001b[m \u001b[93mexit\u001b[m \u001b[95m1\u001b[m","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"DingBao-sys"},"content":"\u001b[93mfi\u001b[m","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"DingBao-sys"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"DingBao-sys"},"content":"\u001b[96m# run the program, feed commands from input.txt file and redirect the output to the ACTUAL.TXT\u001b[m","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"DingBao-sys"},"content":"java \u001b[38;5;224m-classpath\u001b[m ../bin Duke \u001b[93m\u003c\u001b[m input.txt \u001b[93m\u003e\u001b[m ACTUAL.TXT","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"DingBao-sys"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"DingBao-sys"},"content":"\u001b[96m# convert to UNIX format\u001b[m","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"DingBao-sys"},"content":"cp EXPECTED.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"DingBao-sys"},"content":"dos2unix ACTUAL.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"DingBao-sys"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"DingBao-sys"},"content":"\u001b[96m# compare the output to the expected output\u001b[m","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"DingBao-sys"},"content":"diff ACTUAL.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"DingBao-sys"},"content":"\u001b[93mif [\u001b[m \u001b[38;5;81m$?\u001b[m \u001b[93m-eq\u001b[m \u001b[95m0\u001b[m \u001b[93m]","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"DingBao-sys"},"content":"then","lastModifiedDate":"2024-01-28"},{"lineNumber":33,"author":{"gitId":"DingBao-sys"},"content":"\u001b[m \u001b[93mecho\u001b[m\u001b[95m \u001b[m\u001b[93m\"\u001b[m\u001b[95mTest result: PASSED\u001b[m\u001b[93m\"","lastModifiedDate":"2024-01-28"},{"lineNumber":34,"author":{"gitId":"DingBao-sys"},"content":"\u001b[m \u001b[93mexit\u001b[m \u001b[95m0\u001b[m","lastModifiedDate":"2024-01-28"},{"lineNumber":35,"author":{"gitId":"DingBao-sys"},"content":"\u001b[93melse","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"DingBao-sys"},"content":"\u001b[m \u001b[93mecho\u001b[m\u001b[95m \u001b[m\u001b[93m\"\u001b[m\u001b[95mTest result: FAILED\u001b[m\u001b[93m\"","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"DingBao-sys"},"content":"\u001b[m \u001b[93mexit\u001b[m \u001b[95m1\u001b[m","lastModifiedDate":"2024-01-28"},{"lineNumber":38,"author":{"gitId":"DingBao-sys"},"content":"\u001b[93mfi\u001b[m","lastModifiedDate":"2024-01-28"},{"lineNumber":39,"author":{"gitId":"DingBao-sys"},"content":"\u001b[94m~ \u001b[40;1H~ \u001b[41;1H~ \u001b[42;1H~ \u001b[43;1H~ \u001b[44;1H~ \u001b[45;1H~ \u001b[46;1H~ \u001b[47;1H~ \u001b[48;1H~ \u001b[49;1H~ \u001b[50;1H~ \u001b[51;1H~ \u001b[52;1H~ \u001b[53;1H~ \u001b[54;1H~ \u001b[55;1H~ \u001b[56;1H~ \u001b[57;1H~ \u001b[58;1H~ \u001b[59;1H~ \u001b[60;1H~ \u001b[61;1H~ \u001b[62;1H~ \u001b[63;1H~ \u001b[64;1H~ \u001b[65;1H~ \u001b[66;1H~ \u001b[m\u001b[67;197H1,1\u001b[11CAll\u001b[1;1H\u001b[?25h\u001b[?4m\u001b[?25l\u001b[67;197H2,0-1\u001b[2;1H\u001b[?25h\u001b[67;1H\u001b[?2004l\u001b[\u003e4;m\u001b[23;2t\u001b[23;1t\u001b[67;1H\u001b[K\u001b[67;1H\u001b[?1004l\u001b[?2004l\u001b[?1l\u001b\u003e\u001b[?1049l\u001b[\u003e4;m","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"DingBao-sys":39}},{"path":"text-ui-test/runtest.sh","fileType":"sh","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"#!/usr/bin/env bash","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"# create bin directory if it doesn\u0027t exist","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"if [ ! -d \"../bin\" ]","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":" mkdir ../bin","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"# delete output from previous run","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"if [ -e \"./ACTUAL.TXT\" ]","lastModifiedDate":"2020-05-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":" rm ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"DingBao-sys"},"content":"if [ -e \"./ACTUAL1.TXT\" ]","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"DingBao-sys"},"content":"then","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"DingBao-sys"},"content":" rm ACTUAL1.TXT","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"DingBao-sys"},"content":"fi","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"DingBao-sys"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"-"},"content":"# compile the code into the bin folder, terminates if error occurred","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"if ! javac -cp ../src/main/java -Xlint:none -d ../bin ../src/main/java/*.java","lastModifiedDate":"2020-08-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" echo \"********** BUILD FAILURE **********\"","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" exit 1","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":"# run the program, feed commands from input.txt file and redirect the output to the ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"java -classpath ../bin Duke \u003cinput.txt \u003eACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"DingBao-sys"},"content":"java -classpath ../bin Duke \u003c input1.txt \u003e ACTUAL1.TXT","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":"# convert to UNIX format","lastModifiedDate":"2020-05-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":"cp EXPECTED.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":"diff ACTUAL.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"if [ $? -eq 0 ]","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" echo \"Test result: PASSED\"","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" exit 0","lastModifiedDate":"2020-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":"else","lastModifiedDate":"2020-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":" echo \"Test result: FAILED\"","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":" exit 1","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"DingBao-sys"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"DingBao-sys"},"content":"cp EXPECTED1.TXT EXPECTED1-UNIX.TXT","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"DingBao-sys"},"content":"diff ACTUAL1.TXT EXPECTED1-UNIX.TXT","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"DingBao-sys"},"content":"if [ $? -eq 0 ]","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"DingBao-sys"},"content":"then","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"DingBao-sys"},"content":" echo \"Test result: PASSED\"","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"DingBao-sys"},"content":" exit 0","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"DingBao-sys"},"content":"else","lastModifiedDate":"2024-01-29"},{"lineNumber":50,"author":{"gitId":"DingBao-sys"},"content":" echo \"Test result: FAILED\"","lastModifiedDate":"2024-01-29"},{"lineNumber":51,"author":{"gitId":"DingBao-sys"},"content":" exit 1","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"DingBao-sys"},"content":"fi","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"DingBao-sys":17,"-":35}}] diff --git a/DingBao-sys_ip_master/commits.json b/DingBao-sys_ip_master/commits.json index dd12b01f..cf5d57b4 100644 --- a/DingBao-sys_ip_master/commits.json +++ b/DingBao-sys_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"DingBao-sys":[{"date":"2024-01-22","commitResults":[{"hash":"2e7dc4b115b01d0aa2034e5ff0a9b06c646f6d9c","isMergeCommit":false,"messageTitle":"Finished Level-0","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":12,"deletions":6}}}]},{"date":"2024-01-23","commitResults":[{"hash":"29273a320de1db49e891a1d54269e0e5e16a85a7","isMergeCommit":false,"messageTitle":"Level-1","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":22,"deletions":3}}},{"hash":"52efefd51fa42926a4e5ada3033b32cb76083b30","isMergeCommit":false,"messageTitle":"Level-2","messageBody":"","tags":["Level-2-Add-List"],"fileTypesAndContributionMap":{"java":{"insertions":40,"deletions":13}}},{"hash":"32f1371f27a9cb17fdafa3c53c35a90309c6ad67","isMergeCommit":false,"messageTitle":"Level-3-Mark-as-Done","messageBody":"","tags":["Level-3-Mark-As-Done"],"fileTypesAndContributionMap":{"java":{"insertions":44,"deletions":7}}}]},{"date":"2024-01-24","commitResults":[{"hash":"a26517def06a2a436b994fe7ffad457111055531","isMergeCommit":false,"messageTitle":"Level-4-ToDo-Events-Deadline","messageBody":"","tags":["level-4-todo-event-deadline"],"fileTypesAndContributionMap":{"java":{"insertions":84,"deletions":12}}}]},{"date":"2024-01-25","commitResults":[{"hash":"fafbe8763629aea4dd07958ecaa9ff58b143bec3","isMergeCommit":false,"messageTitle":"Level-6-Exceptions","messageBody":"","tags":["Level-5-Handle-Errors"],"fileTypesAndContributionMap":{"java":{"insertions":127,"deletions":60}}},{"hash":"908549e2bc0535026c4810aed28b985c104c30d0","isMergeCommit":false,"messageTitle":"Level-6-Delete","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":18,"deletions":7}}}]},{"date":"2024-01-26","commitResults":[{"hash":"80881420503505f0a4ed3b4ad3a366d3314814a9","isMergeCommit":false,"messageTitle":"Delete src/main/java/Command.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":2}}}]},{"date":"2024-01-28","commitResults":[{"hash":"64902f938a064c14230027891a180371752b3ec3","isMergeCommit":false,"messageTitle":"level-6","messageBody":"","tags":["Level-6-Delete"],"fileTypesAndContributionMap":{"txt":{"insertions":48,"deletions":0},"java":{"insertions":42,"deletions":12}}}]},{"date":"2024-01-29","commitResults":[{"hash":"be1d45668af67cb240e8b445cb0edecee6ffdc53","isMergeCommit":false,"messageTitle":"A-TextUiTesting","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":7,"deletions":0},"sh":{"insertions":19,"deletions":5}}}]}]},"authorFileTypeContributionMap":{"DingBao-sys":{"java":273,"md":0,"fxml":0,"sh":17,"bat":0,"gradle":0,"txt":55}},"authorContributionVariance":{"DingBao-sys":4622.5947},"authorDisplayNameMap":{"DingBao-sys":"CS2103T-T11-1 SIM .. HAO"}} +{"authorDailyContributionsMap":{"DingBao-sys":[{"date":"2024-01-22","commitResults":[{"hash":"2e7dc4b115b01d0aa2034e5ff0a9b06c646f6d9c","isMergeCommit":false,"messageTitle":"Finished Level-0","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":12,"deletions":6}}}]},{"date":"2024-01-23","commitResults":[{"hash":"29273a320de1db49e891a1d54269e0e5e16a85a7","isMergeCommit":false,"messageTitle":"Level-1","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":22,"deletions":3}}},{"hash":"52efefd51fa42926a4e5ada3033b32cb76083b30","isMergeCommit":false,"messageTitle":"Level-2","messageBody":"","tags":["Level-2-Add-List"],"fileTypesAndContributionMap":{"java":{"insertions":40,"deletions":13}}},{"hash":"32f1371f27a9cb17fdafa3c53c35a90309c6ad67","isMergeCommit":false,"messageTitle":"Level-3-Mark-as-Done","messageBody":"","tags":["Level-3-Mark-As-Done"],"fileTypesAndContributionMap":{"java":{"insertions":44,"deletions":7}}}]},{"date":"2024-01-24","commitResults":[{"hash":"a26517def06a2a436b994fe7ffad457111055531","isMergeCommit":false,"messageTitle":"Level-4-ToDo-Events-Deadline","messageBody":"","tags":["level-4-todo-event-deadline"],"fileTypesAndContributionMap":{"java":{"insertions":84,"deletions":12}}}]},{"date":"2024-01-25","commitResults":[{"hash":"fafbe8763629aea4dd07958ecaa9ff58b143bec3","isMergeCommit":false,"messageTitle":"Level-6-Exceptions","messageBody":"","tags":["Level-5-Handle-Errors"],"fileTypesAndContributionMap":{"java":{"insertions":127,"deletions":60}}},{"hash":"908549e2bc0535026c4810aed28b985c104c30d0","isMergeCommit":false,"messageTitle":"Level-6-Delete","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":18,"deletions":7}}}]},{"date":"2024-01-26","commitResults":[{"hash":"80881420503505f0a4ed3b4ad3a366d3314814a9","isMergeCommit":false,"messageTitle":"Delete src/main/java/Command.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":2}}}]},{"date":"2024-01-28","commitResults":[{"hash":"64902f938a064c14230027891a180371752b3ec3","isMergeCommit":false,"messageTitle":"level-6","messageBody":"","tags":["Level-6-Delete"],"fileTypesAndContributionMap":{"txt":{"insertions":48,"deletions":0},"java":{"insertions":42,"deletions":12}}}]},{"date":"2024-01-29","commitResults":[{"hash":"be1d45668af67cb240e8b445cb0edecee6ffdc53","isMergeCommit":false,"messageTitle":"A-TextUiTesting","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":7,"deletions":0},"sh":{"insertions":19,"deletions":5}}}]},{"date":"2024-01-30","commitResults":[{"hash":"be110de188297cb79ab492885fd45607fdfc764d","isMergeCommit":false,"messageTitle":"Done Enums","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":238,"deletions":102}}}]}]},"authorFileTypeContributionMap":{"DingBao-sys":{"java":409,"md":0,"fxml":0,"sh":17,"bat":0,"gradle":0,"txt":55}},"authorContributionVariance":{"DingBao-sys":10501.583},"authorDisplayNameMap":{"DingBao-sys":"CS2103T-T11-1 SIM .. HAO"}} diff --git a/HongRay_ip_master/authorship.json b/HongRay_ip_master/authorship.json index dbbc2b09..c1f02ffb 100644 --- a/HongRay_ip_master/authorship.json +++ b/HongRay_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"HongRay"},"content":"public class Deadline extends Task{","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"HongRay"},"content":" protected String by;","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"HongRay"},"content":" public Deadline(String description, String by) {","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"HongRay"},"content":" super(description);","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"HongRay"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"HongRay"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"HongRay"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"HongRay"},"content":" return \"[D]\" + super.toString() + \" (by: \" + by + \")\";","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":13,"author":{"gitId":"HongRay"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"HongRay":13}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"HongRay"},"content":"public class Event extends Task{","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"HongRay"},"content":" protected String start;","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"HongRay"},"content":" protected String end;","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"HongRay"},"content":" public Event (String description, String start, String end) {","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"HongRay"},"content":" super(description);","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"HongRay"},"content":" this.start \u003d start;","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"HongRay"},"content":" this.end \u003d end;","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"HongRay"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"HongRay"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":13,"author":{"gitId":"HongRay"},"content":" return \"[E]\" + super.toString() + \" (from: \" + start + \" to: \" + end + \")\";","lastModifiedDate":"2024-01-22"},{"lineNumber":14,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":15,"author":{"gitId":"HongRay"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"HongRay":15}},{"path":"src/main/java/Handler.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"HongRay"},"content":"public class Handler {","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"HongRay"},"content":" public static void handleDelete(String[] parts, TaskList taskList, String dash) throws JayneException {","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"HongRay"},"content":" if (parts.length \u003c 2) {","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"HongRay"},"content":" throw JayneException.deleteEmptyException();","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"HongRay"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"HongRay"},"content":" int taskNumber \u003d Integer.parseInt(parts[1]);","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"HongRay"},"content":" if (taskNumber \u003c\u003d 0 || taskNumber \u003e taskList.getTaskCount()) {","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"HongRay"},"content":" throw JayneException.deleteExistException(taskNumber);","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"HongRay"},"content":" Task removedTask \u003d taskList.deleteTask(taskNumber);","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"HongRay"},"content":" System.out.println(dash + \"\\nNoted. I\u0027ve removed this task:\\n \" + removedTask + \"\\nNow you have \" + taskList.getTaskCount() + \" tasks in the list.\\n\" + dash);","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"HongRay"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"HongRay"},"content":" throw JayneException.deleteInvalidException();","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"HongRay"},"content":" public static void handleUnmark(String[] parts, TaskList taskList, String dash) throws JayneException {","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"HongRay"},"content":" if (parts.length \u003c 2) {","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"HongRay"},"content":" throw JayneException.unmarkEmptyException();","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"HongRay"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"HongRay"},"content":" int taskNumber \u003d Integer.parseInt(parts[1]);","lastModifiedDate":"2024-01-24"},{"lineNumber":23,"author":{"gitId":"HongRay"},"content":" if (taskNumber \u003c\u003d 0 || taskNumber \u003e taskList.getTaskCount()) {","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"HongRay"},"content":" throw JayneException.unmarkTaskExistException(taskNumber);","lastModifiedDate":"2024-01-24"},{"lineNumber":25,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":26,"author":{"gitId":"HongRay"},"content":" taskList.markTaskAsNotDone(taskNumber);","lastModifiedDate":"2024-01-24"},{"lineNumber":27,"author":{"gitId":"HongRay"},"content":" System.out.println(dash + \"\\nOK, I\u0027ve marked this task as not done yet:\\n \" + taskList.getTask(taskNumber) + \"\\n\" + dash);","lastModifiedDate":"2024-01-24"},{"lineNumber":28,"author":{"gitId":"HongRay"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":29,"author":{"gitId":"HongRay"},"content":" throw JayneException.unmarkException();","lastModifiedDate":"2024-01-24"},{"lineNumber":30,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":31,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":32,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":33,"author":{"gitId":"HongRay"},"content":" public static void handleDeadline(String[] parts, TaskList taskList, String dash) throws JayneException {","lastModifiedDate":"2024-01-24"},{"lineNumber":34,"author":{"gitId":"HongRay"},"content":" if (parts.length \u003c 2 || parts[1].isEmpty()) {","lastModifiedDate":"2024-01-24"},{"lineNumber":35,"author":{"gitId":"HongRay"},"content":" throw new JayneException(\"The description of a deadline cannot be empty.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":36,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":37,"author":{"gitId":"HongRay"},"content":" String[] deadlineParts \u003d parts[1].split(\" /by \", 2);","lastModifiedDate":"2024-01-24"},{"lineNumber":38,"author":{"gitId":"HongRay"},"content":" if (deadlineParts.length \u003c 2 || deadlineParts[1].isEmpty()) {","lastModifiedDate":"2024-01-24"},{"lineNumber":39,"author":{"gitId":"HongRay"},"content":" throw JayneException.deadlineException();","lastModifiedDate":"2024-01-24"},{"lineNumber":40,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":41,"author":{"gitId":"HongRay"},"content":" Deadline newDeadline \u003d new Deadline(deadlineParts[0], deadlineParts[1]);","lastModifiedDate":"2024-01-24"},{"lineNumber":42,"author":{"gitId":"HongRay"},"content":" taskList.addTask(newDeadline);","lastModifiedDate":"2024-01-24"},{"lineNumber":43,"author":{"gitId":"HongRay"},"content":" System.out.println(dash + \"\\nGot it. I\u0027ve added this task:\");","lastModifiedDate":"2024-01-24"},{"lineNumber":44,"author":{"gitId":"HongRay"},"content":" System.out.println(\" \" + newDeadline);","lastModifiedDate":"2024-01-24"},{"lineNumber":45,"author":{"gitId":"HongRay"},"content":" System.out.println(\"Now you have \" + taskList.getTaskCount() + \" tasks in the list.\" + \"\\n\" + dash);","lastModifiedDate":"2024-01-24"},{"lineNumber":46,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":47,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":48,"author":{"gitId":"HongRay"},"content":" public static void handleTodo(String[] parts, TaskList taskList, String dash) throws JayneException {","lastModifiedDate":"2024-01-24"},{"lineNumber":49,"author":{"gitId":"HongRay"},"content":" if (parts.length \u003c 2 || parts[1].isEmpty()) {","lastModifiedDate":"2024-01-24"},{"lineNumber":50,"author":{"gitId":"HongRay"},"content":" throw JayneException.todoException();","lastModifiedDate":"2024-01-24"},{"lineNumber":51,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":52,"author":{"gitId":"HongRay"},"content":" Todo newTodo \u003d new Todo(parts[1]);","lastModifiedDate":"2024-01-24"},{"lineNumber":53,"author":{"gitId":"HongRay"},"content":" taskList.addTask(newTodo);","lastModifiedDate":"2024-01-24"},{"lineNumber":54,"author":{"gitId":"HongRay"},"content":" System.out.println(dash + \"\\nGot it. I\u0027ve added this task:\");","lastModifiedDate":"2024-01-24"},{"lineNumber":55,"author":{"gitId":"HongRay"},"content":" System.out.println(\" \" + newTodo);","lastModifiedDate":"2024-01-24"},{"lineNumber":56,"author":{"gitId":"HongRay"},"content":" System.out.println(\"Now you have \" + taskList.getTaskCount() + \" tasks in the list.\" + \"\\n\" + dash);","lastModifiedDate":"2024-01-24"},{"lineNumber":57,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":58,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":59,"author":{"gitId":"HongRay"},"content":" public static void handleEvent(String[] parts, TaskList taskList, String dash) throws JayneException {","lastModifiedDate":"2024-01-24"},{"lineNumber":60,"author":{"gitId":"HongRay"},"content":" if (parts.length \u003c 2 || parts[1].isEmpty()) {","lastModifiedDate":"2024-01-24"},{"lineNumber":61,"author":{"gitId":"HongRay"},"content":" throw JayneException.emptyEventException();","lastModifiedDate":"2024-01-24"},{"lineNumber":62,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":63,"author":{"gitId":"HongRay"},"content":" String[] eventParts \u003d parts[1].split(\" /from \", 2);","lastModifiedDate":"2024-01-24"},{"lineNumber":64,"author":{"gitId":"HongRay"},"content":" if (eventParts.length \u003c 2 || eventParts[1].isEmpty()) {","lastModifiedDate":"2024-01-24"},{"lineNumber":65,"author":{"gitId":"HongRay"},"content":" throw JayneException.eventStartException();","lastModifiedDate":"2024-01-24"},{"lineNumber":66,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":67,"author":{"gitId":"HongRay"},"content":" String[] times \u003d eventParts[1].split(\" /to \", 2);","lastModifiedDate":"2024-01-24"},{"lineNumber":68,"author":{"gitId":"HongRay"},"content":" if (times.length \u003c 2 || times[1].isEmpty()) {","lastModifiedDate":"2024-01-24"},{"lineNumber":69,"author":{"gitId":"HongRay"},"content":" throw JayneException.eventEndException();","lastModifiedDate":"2024-01-24"},{"lineNumber":70,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":71,"author":{"gitId":"HongRay"},"content":" Event newEvent \u003d new Event(eventParts[0], times[0], times[1]);","lastModifiedDate":"2024-01-24"},{"lineNumber":72,"author":{"gitId":"HongRay"},"content":" taskList.addTask(newEvent);","lastModifiedDate":"2024-01-24"},{"lineNumber":73,"author":{"gitId":"HongRay"},"content":" System.out.println(dash + \"\\nGot it. I\u0027ve added this task:\");","lastModifiedDate":"2024-01-24"},{"lineNumber":74,"author":{"gitId":"HongRay"},"content":" System.out.println(\" \" + newEvent);","lastModifiedDate":"2024-01-24"},{"lineNumber":75,"author":{"gitId":"HongRay"},"content":" System.out.println(\"Now you have \" + taskList.getTaskCount() + \" tasks in the list.\" + \"\\n\" + dash);","lastModifiedDate":"2024-01-24"},{"lineNumber":76,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":77,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":78,"author":{"gitId":"HongRay"},"content":" public static void handleMark(String[] parts, TaskList taskList, String dash) throws JayneException {","lastModifiedDate":"2024-01-24"},{"lineNumber":79,"author":{"gitId":"HongRay"},"content":" if (parts.length \u003c 2) {","lastModifiedDate":"2024-01-24"},{"lineNumber":80,"author":{"gitId":"HongRay"},"content":" throw JayneException.markEmptyException();","lastModifiedDate":"2024-01-24"},{"lineNumber":81,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":82,"author":{"gitId":"HongRay"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":83,"author":{"gitId":"HongRay"},"content":" int taskNumber \u003d Integer.parseInt(parts[1]);","lastModifiedDate":"2024-01-24"},{"lineNumber":84,"author":{"gitId":"HongRay"},"content":" if (taskNumber \u003c\u003d 0 || taskNumber \u003e taskList.getTaskCount()) {","lastModifiedDate":"2024-01-24"},{"lineNumber":85,"author":{"gitId":"HongRay"},"content":" throw JayneException.markTaskExistException(taskNumber);","lastModifiedDate":"2024-01-24"},{"lineNumber":86,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":87,"author":{"gitId":"HongRay"},"content":" taskList.markTaskAsDone(taskNumber);","lastModifiedDate":"2024-01-24"},{"lineNumber":88,"author":{"gitId":"HongRay"},"content":" System.out.println(dash + \"\\nNice! I\u0027ve marked this task as done:\\n \" + taskList.getTask(taskNumber) + \"\\n\" + dash);","lastModifiedDate":"2024-01-24"},{"lineNumber":89,"author":{"gitId":"HongRay"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":90,"author":{"gitId":"HongRay"},"content":" throw JayneException.markInvalidTaskException();","lastModifiedDate":"2024-01-24"},{"lineNumber":91,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":92,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":93,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":94,"author":{"gitId":"HongRay"},"content":" public static void handleBye(String dash) {","lastModifiedDate":"2024-01-24"},{"lineNumber":95,"author":{"gitId":"HongRay"},"content":" System.out.println(dash);","lastModifiedDate":"2024-01-24"},{"lineNumber":96,"author":{"gitId":"HongRay"},"content":" System.out.println(\"Bye. Hope to see you again soon!\");","lastModifiedDate":"2024-01-24"},{"lineNumber":97,"author":{"gitId":"HongRay"},"content":" System.out.println(dash);","lastModifiedDate":"2024-01-24"},{"lineNumber":98,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":99,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":100,"author":{"gitId":"HongRay"},"content":" public static void handleList(TaskList taskList, String dash) {","lastModifiedDate":"2024-01-24"},{"lineNumber":101,"author":{"gitId":"HongRay"},"content":" System.out.println(dash);","lastModifiedDate":"2024-01-24"},{"lineNumber":102,"author":{"gitId":"HongRay"},"content":" taskList.display();","lastModifiedDate":"2024-01-24"},{"lineNumber":103,"author":{"gitId":"HongRay"},"content":" System.out.println(dash);","lastModifiedDate":"2024-01-24"},{"lineNumber":104,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":105,"author":{"gitId":"HongRay"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"HongRay":105}},{"path":"src/main/java/Jayne.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"HongRay"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"HongRay"},"content":"public class Jayne {","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"HongRay"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"HongRay"},"content":" Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"HongRay"},"content":" String dash \u003d \"___________________________________\";","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"HongRay"},"content":" System.out.println(dash);","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"HongRay"},"content":" System.out.println(\"Hello, I\u0027m Jayne\");","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"HongRay"},"content":" System.out.println(\"What can I do for you?\\n\" + dash);","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"HongRay"},"content":" TaskList taskList \u003d new TaskList();","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"HongRay"},"content":" while (true) {","lastModifiedDate":"2024-01-22"},{"lineNumber":13,"author":{"gitId":"HongRay"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"HongRay"},"content":" String input \u003d scanner.nextLine().trim();","lastModifiedDate":"2024-01-22"},{"lineNumber":15,"author":{"gitId":"HongRay"},"content":" if (input.isEmpty()) {","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"HongRay"},"content":" throw new JayneException(\"Input cannot be empty.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"HongRay"},"content":" String[] parts \u003d input.split(\" \", 2);","lastModifiedDate":"2024-01-22"},{"lineNumber":20,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":21,"author":{"gitId":"HongRay"},"content":" // Handle different cases","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"HongRay"},"content":" switch (parts[0].toLowerCase()) {","lastModifiedDate":"2024-01-24"},{"lineNumber":23,"author":{"gitId":"HongRay"},"content":" case \"bye\":","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"HongRay"},"content":" Handler.handleBye(dash);","lastModifiedDate":"2024-01-24"},{"lineNumber":25,"author":{"gitId":"HongRay"},"content":" return; // Exit the program","lastModifiedDate":"2024-01-24"},{"lineNumber":26,"author":{"gitId":"HongRay"},"content":" case \"list\":","lastModifiedDate":"2024-01-24"},{"lineNumber":27,"author":{"gitId":"HongRay"},"content":" Handler.handleList(taskList, dash);","lastModifiedDate":"2024-01-24"},{"lineNumber":28,"author":{"gitId":"HongRay"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":29,"author":{"gitId":"HongRay"},"content":" case \"mark\":","lastModifiedDate":"2024-01-24"},{"lineNumber":30,"author":{"gitId":"HongRay"},"content":" Handler.handleMark(parts, taskList, dash);","lastModifiedDate":"2024-01-24"},{"lineNumber":31,"author":{"gitId":"HongRay"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":32,"author":{"gitId":"HongRay"},"content":" case \"unmark\":","lastModifiedDate":"2024-01-24"},{"lineNumber":33,"author":{"gitId":"HongRay"},"content":" Handler.handleUnmark(parts, taskList, dash);","lastModifiedDate":"2024-01-24"},{"lineNumber":34,"author":{"gitId":"HongRay"},"content":" break;","lastModifiedDate":"2024-01-22"},{"lineNumber":35,"author":{"gitId":"HongRay"},"content":" case \"todo\":","lastModifiedDate":"2024-01-24"},{"lineNumber":36,"author":{"gitId":"HongRay"},"content":" Handler.handleTodo(parts, taskList, dash);","lastModifiedDate":"2024-01-24"},{"lineNumber":37,"author":{"gitId":"HongRay"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":38,"author":{"gitId":"HongRay"},"content":" case \"deadline\":","lastModifiedDate":"2024-01-24"},{"lineNumber":39,"author":{"gitId":"HongRay"},"content":" Handler.handleDeadline(parts, taskList, dash);","lastModifiedDate":"2024-01-24"},{"lineNumber":40,"author":{"gitId":"HongRay"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":41,"author":{"gitId":"HongRay"},"content":" case \"event\":","lastModifiedDate":"2024-01-24"},{"lineNumber":42,"author":{"gitId":"HongRay"},"content":" Handler.handleEvent(parts, taskList, dash);","lastModifiedDate":"2024-01-24"},{"lineNumber":43,"author":{"gitId":"HongRay"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":44,"author":{"gitId":"HongRay"},"content":" case \"delete\":","lastModifiedDate":"2024-01-24"},{"lineNumber":45,"author":{"gitId":"HongRay"},"content":" Handler.handleDelete(parts, taskList, dash);","lastModifiedDate":"2024-01-24"},{"lineNumber":46,"author":{"gitId":"HongRay"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":47,"author":{"gitId":"HongRay"},"content":" default:","lastModifiedDate":"2024-01-24"},{"lineNumber":48,"author":{"gitId":"HongRay"},"content":" throw new JayneException(\"What are you typing. please include either bye, list, mark, umark, todo, deadline or event in your inputs please\");","lastModifiedDate":"2024-01-24"},{"lineNumber":49,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":50,"author":{"gitId":"HongRay"},"content":" } catch (JayneException e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":51,"author":{"gitId":"HongRay"},"content":" System.out.println(dash + \"\\nHuh?!?!? \" + e.getMessage() + \"\\n\" + dash);","lastModifiedDate":"2024-01-24"},{"lineNumber":52,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":53,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":54,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":55,"author":{"gitId":"HongRay"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"HongRay":55}},{"path":"src/main/java/JayneException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"HongRay"},"content":"public class JayneException extends Exception {","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"HongRay"},"content":" public JayneException(String message) {","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"HongRay"},"content":" super(message);","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"HongRay"},"content":" //Deadline","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"HongRay"},"content":" public static JayneException deadlineException() {","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"HongRay"},"content":" return new JayneException(\"Where can have empty deadline time, enter deadline lah. E.g. deadline return book /by Sunday\");","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"HongRay"},"content":" //Unmark","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"HongRay"},"content":" public static JayneException unmarkException() {","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"HongRay"},"content":" return new JayneException(\"??? Invalid task number. Enter a valid number please. E.g. unmark 1\");","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"HongRay"},"content":" public static JayneException unmarkTaskExistException(int taskNumber) {","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"HongRay"},"content":" return new JayneException(\"Task number \" + taskNumber + \" does not exist. E.g. unmark 1\");","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"HongRay"},"content":" public static JayneException unmarkEmptyException() {","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"HongRay"},"content":" return new JayneException(\"What are you doing? The number of the task to unmark cannot be empty lah. E.g. unmark 1\");","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":23,"author":{"gitId":"HongRay"},"content":" //Delete","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"HongRay"},"content":" public static JayneException deleteEmptyException() {","lastModifiedDate":"2024-01-24"},{"lineNumber":25,"author":{"gitId":"HongRay"},"content":" return new JayneException(\"The task number to delete cannot be empty. E.g. delete 2\");","lastModifiedDate":"2024-01-24"},{"lineNumber":26,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":27,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":28,"author":{"gitId":"HongRay"},"content":" public static JayneException deleteInvalidException() {","lastModifiedDate":"2024-01-24"},{"lineNumber":29,"author":{"gitId":"HongRay"},"content":" return new JayneException(\"??? Invalid task number. Enter a valid number please. E.g. delete 2\");","lastModifiedDate":"2024-01-24"},{"lineNumber":30,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":31,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":32,"author":{"gitId":"HongRay"},"content":" public static JayneException deleteExistException(int taskNumber) {","lastModifiedDate":"2024-01-24"},{"lineNumber":33,"author":{"gitId":"HongRay"},"content":" return new JayneException(\"Task number \" + taskNumber + \" does not exist. E.g. delete 2\");","lastModifiedDate":"2024-01-24"},{"lineNumber":34,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":35,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":36,"author":{"gitId":"HongRay"},"content":" //to-do","lastModifiedDate":"2024-01-24"},{"lineNumber":37,"author":{"gitId":"HongRay"},"content":" public static JayneException todoException() {","lastModifiedDate":"2024-01-24"},{"lineNumber":38,"author":{"gitId":"HongRay"},"content":" return new JayneException(\"Huh?? why your description of a todo is empty! Please enter description. E.g. todo read book\");","lastModifiedDate":"2024-01-24"},{"lineNumber":39,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":40,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":41,"author":{"gitId":"HongRay"},"content":" //event","lastModifiedDate":"2024-01-24"},{"lineNumber":42,"author":{"gitId":"HongRay"},"content":" public static JayneException emptyEventException() {","lastModifiedDate":"2024-01-24"},{"lineNumber":43,"author":{"gitId":"HongRay"},"content":" return new JayneException(\"The description of an event cannot be empty lah. E.g. event project meeting /from Mon 2pm /to 4pm\");","lastModifiedDate":"2024-01-24"},{"lineNumber":44,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":45,"author":{"gitId":"HongRay"},"content":" public static JayneException eventStartException() {","lastModifiedDate":"2024-01-24"},{"lineNumber":46,"author":{"gitId":"HongRay"},"content":" return new JayneException(\"The event start time cannot be empty. E.g. event project meeting /from Mon 2pm /to 4pm\");","lastModifiedDate":"2024-01-24"},{"lineNumber":47,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":48,"author":{"gitId":"HongRay"},"content":" public static JayneException eventEndException() {","lastModifiedDate":"2024-01-24"},{"lineNumber":49,"author":{"gitId":"HongRay"},"content":" return new JayneException(\"The event end time cannot be empty please. E.g. event project meeting /from Mon 2pm /to 4pm\");","lastModifiedDate":"2024-01-24"},{"lineNumber":50,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":51,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":52,"author":{"gitId":"HongRay"},"content":" //Mark","lastModifiedDate":"2024-01-24"},{"lineNumber":53,"author":{"gitId":"HongRay"},"content":" public static JayneException markEmptyException() {","lastModifiedDate":"2024-01-24"},{"lineNumber":54,"author":{"gitId":"HongRay"},"content":" return new JayneException(\"The task number to mark cannot be empty. E.g. mark 1\");","lastModifiedDate":"2024-01-24"},{"lineNumber":55,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":56,"author":{"gitId":"HongRay"},"content":" public static JayneException markTaskExistException(int taskNumber) {","lastModifiedDate":"2024-01-24"},{"lineNumber":57,"author":{"gitId":"HongRay"},"content":" return new JayneException(\"Task number \" + taskNumber + \" does not exist. E.g. mark 1\");","lastModifiedDate":"2024-01-24"},{"lineNumber":58,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":59,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":60,"author":{"gitId":"HongRay"},"content":" public static JayneException markInvalidTaskException() {","lastModifiedDate":"2024-01-24"},{"lineNumber":61,"author":{"gitId":"HongRay"},"content":" return new JayneException(\"??? Invalid task number. Enter a valid number please. E.g. mark 1\");","lastModifiedDate":"2024-01-24"},{"lineNumber":62,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":63,"author":{"gitId":"HongRay"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"HongRay":63}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"HongRay"},"content":"public class Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"HongRay"},"content":" protected String description;","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"HongRay"},"content":" protected boolean isDone;","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"HongRay"},"content":" public Task(String description) {","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"HongRay"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"HongRay"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"HongRay"},"content":" public void markAsDone() {","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"HongRay"},"content":" this.isDone \u003d true;","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":13,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":14,"author":{"gitId":"HongRay"},"content":" public void markAsNotDone() {","lastModifiedDate":"2024-01-22"},{"lineNumber":15,"author":{"gitId":"HongRay"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-22"},{"lineNumber":16,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":17,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":18,"author":{"gitId":"HongRay"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-01-22"},{"lineNumber":19,"author":{"gitId":"HongRay"},"content":" return (isDone ? \"[X]\" : \"[ ]\"); // mark done task with X","lastModifiedDate":"2024-01-22"},{"lineNumber":20,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":21,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":22,"author":{"gitId":"HongRay"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":23,"author":{"gitId":"HongRay"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":24,"author":{"gitId":"HongRay"},"content":" return getStatusIcon() + \" \" + description;","lastModifiedDate":"2024-01-22"},{"lineNumber":25,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":26,"author":{"gitId":"HongRay"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"HongRay":26}},{"path":"src/main/java/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"HongRay"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"HongRay"},"content":"import java.util.List;","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"HongRay"},"content":"//test","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"HongRay"},"content":"public class TaskList {","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"HongRay"},"content":" private final List\u003cTask\u003e taskArray;","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"HongRay"},"content":" private int taskCount;","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"HongRay"},"content":" public TaskList() {","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"HongRay"},"content":" this.taskArray \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"HongRay"},"content":"// public void add(String taskDescription) {","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"HongRay"},"content":"// taskArray.add(new Task(taskDescription));","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"HongRay"},"content":"// }","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":16,"author":{"gitId":"HongRay"},"content":" public int getTaskCount() {","lastModifiedDate":"2024-01-22"},{"lineNumber":17,"author":{"gitId":"HongRay"},"content":" return taskCount;","lastModifiedDate":"2024-01-22"},{"lineNumber":18,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":19,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":20,"author":{"gitId":"HongRay"},"content":" public Task deleteTask(int taskNumber) throws JayneException {","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"HongRay"},"content":" if (taskNumber \u003c 1 || taskNumber \u003e taskArray.size()) {","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"HongRay"},"content":" throw new JayneException(\"Task number \" + taskNumber + \" does not exist.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":23,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"HongRay"},"content":" this.taskCount \u003d taskCount - 1;","lastModifiedDate":"2024-01-24"},{"lineNumber":25,"author":{"gitId":"HongRay"},"content":" return taskArray.remove(taskNumber - 1);","lastModifiedDate":"2024-01-24"},{"lineNumber":26,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":27,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":28,"author":{"gitId":"HongRay"},"content":" public void addTask(Task task) {","lastModifiedDate":"2024-01-22"},{"lineNumber":29,"author":{"gitId":"HongRay"},"content":" taskArray.add(task);","lastModifiedDate":"2024-01-22"},{"lineNumber":30,"author":{"gitId":"HongRay"},"content":" this.taskCount \u003d taskCount + 1;","lastModifiedDate":"2024-01-22"},{"lineNumber":31,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":32,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":33,"author":{"gitId":"HongRay"},"content":" public Task getTask(int index) {","lastModifiedDate":"2024-01-22"},{"lineNumber":34,"author":{"gitId":"HongRay"},"content":" if (index \u003e\u003d 0 \u0026\u0026 index \u003c\u003d taskArray.size()) {","lastModifiedDate":"2024-01-22"},{"lineNumber":35,"author":{"gitId":"HongRay"},"content":" return taskArray.get(index - 1);","lastModifiedDate":"2024-01-22"},{"lineNumber":36,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":37,"author":{"gitId":"HongRay"},"content":" System.out.println(\"Index invalid\");","lastModifiedDate":"2024-01-22"},{"lineNumber":38,"author":{"gitId":"HongRay"},"content":" return null;","lastModifiedDate":"2024-01-22"},{"lineNumber":39,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":40,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":41,"author":{"gitId":"HongRay"},"content":" public void markTaskAsDone(int taskNumber) {","lastModifiedDate":"2024-01-22"},{"lineNumber":42,"author":{"gitId":"HongRay"},"content":" if (taskNumber \u003e\u003d 1 \u0026\u0026 taskNumber \u003c\u003d taskArray.size()) {","lastModifiedDate":"2024-01-22"},{"lineNumber":43,"author":{"gitId":"HongRay"},"content":" taskArray.get(taskNumber - 1).markAsDone();","lastModifiedDate":"2024-01-22"},{"lineNumber":44,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":45,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":46,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":47,"author":{"gitId":"HongRay"},"content":" public void markTaskAsNotDone(int taskNumber) {","lastModifiedDate":"2024-01-22"},{"lineNumber":48,"author":{"gitId":"HongRay"},"content":" if (taskNumber \u003e\u003d 1 \u0026\u0026 taskNumber \u003c\u003d taskArray.size()) {","lastModifiedDate":"2024-01-22"},{"lineNumber":49,"author":{"gitId":"HongRay"},"content":" taskArray.get(taskNumber - 1).markAsNotDone();","lastModifiedDate":"2024-01-22"},{"lineNumber":50,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":51,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":52,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":53,"author":{"gitId":"HongRay"},"content":" public void display() {","lastModifiedDate":"2024-01-22"},{"lineNumber":54,"author":{"gitId":"HongRay"},"content":" System.out.println(\"Here are the tasks in your list:\");","lastModifiedDate":"2024-01-22"},{"lineNumber":55,"author":{"gitId":"HongRay"},"content":" for (int i \u003d 0; i \u003c taskArray.size(); i++) {","lastModifiedDate":"2024-01-22"},{"lineNumber":56,"author":{"gitId":"HongRay"},"content":" System.out.println((i + 1) + \". \" + taskArray.get(i).toString());","lastModifiedDate":"2024-01-22"},{"lineNumber":57,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":58,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":59,"author":{"gitId":"HongRay"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"HongRay":59}},{"path":"src/main/java/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"HongRay"},"content":"public class Todo extends Task{","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"HongRay"},"content":" public Todo(String description) {","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"HongRay"},"content":" super(description);","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"HongRay"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"HongRay"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"HongRay"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"HongRay"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"HongRay":10}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"HongRay"},"content":"John Doe","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"HongRay"},"content":"todo borrow book","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"HongRay"},"content":"todo","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"HongRay"},"content":"deadline return book /by Sunday","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"HongRay"},"content":"deadline","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"HongRay"},"content":"deadline return book","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"HongRay"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"HongRay"},"content":"event","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"HongRay"},"content":"event project meeting","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"HongRay"},"content":"event project meeting /from","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"HongRay"},"content":"event project meeting /from Mon 2pm","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"HongRay"},"content":"event project meeting /to","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"HongRay"},"content":"deadline do homework /by no idea :-p","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"HongRay"},"content":"list","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"HongRay"},"content":"mark 1","lastModifiedDate":"2024-01-23"},{"lineNumber":17,"author":{"gitId":"HongRay"},"content":"mark","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"HongRay"},"content":"mark 3","lastModifiedDate":"2024-01-23"},{"lineNumber":19,"author":{"gitId":"HongRay"},"content":"mark 10","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"HongRay"},"content":"list","lastModifiedDate":"2024-01-23"},{"lineNumber":21,"author":{"gitId":"HongRay"},"content":"unmark 1","lastModifiedDate":"2024-01-23"},{"lineNumber":22,"author":{"gitId":"HongRay"},"content":"unmark","lastModifiedDate":"2024-01-24"},{"lineNumber":23,"author":{"gitId":"HongRay"},"content":"unmark 10","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"HongRay"},"content":"list","lastModifiedDate":"2024-01-23"},{"lineNumber":25,"author":{"gitId":"HongRay"},"content":"delete","lastModifiedDate":"2024-01-24"},{"lineNumber":26,"author":{"gitId":"HongRay"},"content":"delete 10","lastModifiedDate":"2024-01-24"},{"lineNumber":27,"author":{"gitId":"HongRay"},"content":"delete 3","lastModifiedDate":"2024-01-24"},{"lineNumber":28,"author":{"gitId":"HongRay"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":29,"author":{"gitId":"HongRay"},"content":"bye","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"HongRay":29}},{"path":"text-ui-test/runtest.bat","fileType":"bat","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"REM create bin directory if it doesn\u0027t exist","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"if not exist ..\\bin mkdir ..\\bin","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"REM delete output from previous run","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"if exist ACTUAL.TXT del ACTUAL.TXT","lastModifiedDate":"2020-08-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"REM compile the code into the bin folder","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"javac -cp ..\\src\\main\\java -Xlint:none -d ..\\bin ..\\src\\main\\java\\*.java","lastModifiedDate":"2020-08-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"IF ERRORLEVEL 1 (","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":" echo ********** BUILD FAILURE **********","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":" exit /b 1","lastModifiedDate":"2020-05-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":")","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":"REM no error here, errorlevel \u003d\u003d 0","lastModifiedDate":"2020-05-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"REM run the program, feed commands from input.txt file and redirect the output to the ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"HongRay"},"content":"java -classpath ..\\bin Jayne \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"REM compare the output to the expected output","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"FC ACTUAL.TXT EXPECTED.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"HongRay":2,"-":17}}] +[{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"HongRay"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"HongRay"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"HongRay"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"HongRay"},"content":"public class Deadline extends Task{","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"HongRay"},"content":" protected LocalDate by;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"HongRay"},"content":" public Deadline(String description, String by) {","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"HongRay"},"content":" super(description);","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"HongRay"},"content":" this.by \u003d parseDate(by);","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"HongRay"},"content":" private LocalDate parseDate(String dateString) {","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"HongRay"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"HongRay"},"content":" return LocalDate.parse(dateString);","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"HongRay"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"HongRay"},"content":" System.out.println(\"Unable to parse the date: \" + dateString);","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"HongRay"},"content":" return null; // Or handle it another way","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"HongRay"},"content":" private LocalDate parseDateTime(String dateTimeString) {","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"HongRay"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"HongRay"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"d/M/yyyy HHmm\");","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"HongRay"},"content":" return LocalDate.parse(dateTimeString, formatter);","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"HongRay"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"HongRay"},"content":" System.out.println(\"Unable to parse the date and time: \" + dateTimeString);","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"HongRay"},"content":" return null; // Or handle it another way","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"HongRay"},"content":" private String formatDate(LocalDate date) {","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"HongRay"},"content":" if (date \u003d\u003d null) {","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"HongRay"},"content":" return \"no date\";","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"HongRay"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"MMM dd yyyy\");","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"HongRay"},"content":" return date.format(formatter);","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":38,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":39,"author":{"gitId":"HongRay"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":40,"author":{"gitId":"HongRay"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":41,"author":{"gitId":"HongRay"},"content":" return \"[D]\" + super.toString() + \" (by: \" + formatDate(by) + \")\";","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":43,"author":{"gitId":"HongRay"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"HongRay"},"content":" public String toFileFormat() {","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"HongRay"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ISO_LOCAL_DATE;","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"HongRay"},"content":" return \"D | \" + super.toFileFormat() + \" | \" + (by !\u003d null ? by.format(formatter) : \"\");","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"HongRay"},"content":" public static Task fromFileFormat(String line) throws JayneException {","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"HongRay"},"content":" String[] parts \u003d line.split(\" \\\\| \");","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"HongRay"},"content":" if (parts.length \u003c 4 || !\"D\".equals(parts[0])) {","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"HongRay"},"content":" throw new JayneException(\"Invalid line format for Deadline\");","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"HongRay"},"content":" Deadline task \u003d new Deadline(parts[2], parts[3]);","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"HongRay"},"content":" if (\"1\".equals(parts[1])) {","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"HongRay"},"content":" task.markAsDone();","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"HongRay"},"content":" return task;","lastModifiedDate":"2024-01-30"},{"lineNumber":59,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":60,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":61,"author":{"gitId":"HongRay"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"HongRay":61}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"HongRay"},"content":"public class Event extends Task{","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"HongRay"},"content":" protected String start;","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"HongRay"},"content":" protected String end;","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"HongRay"},"content":" public Event (String description, String start, String end) {","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"HongRay"},"content":" super(description);","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"HongRay"},"content":" this.start \u003d start;","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"HongRay"},"content":" this.end \u003d end;","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"HongRay"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"HongRay"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":13,"author":{"gitId":"HongRay"},"content":" return \"[E]\" + super.toString() + \" (from: \" + start + \" to: \" + end + \")\";","lastModifiedDate":"2024-01-22"},{"lineNumber":14,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":15,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"HongRay"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"HongRay"},"content":" public String toFileFormat() {","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"HongRay"},"content":" return \"E | \" + super.toFileFormat() + \" | \" + start + \"-\" + end;","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"HongRay"},"content":" public static Task fromFileFormat(String line) throws JayneException {","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"HongRay"},"content":" String[] parts \u003d line.split(\" \\\\| \");","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"HongRay"},"content":" if (parts.length \u003c 4 || !\"E\".equals(parts[0])) {","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"HongRay"},"content":" throw new JayneException(\"Invalid line format for Event\");","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"HongRay"},"content":" // The \u0027from\u0027 and \u0027to\u0027 parts are combined in parts[3], so we need to split them","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"HongRay"},"content":" String[] times \u003d parts[3].split(\" to \", 2);","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"HongRay"},"content":" if (times.length \u003c 2) {","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"HongRay"},"content":" throw new JayneException(\"Invalid time format for Event\");","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"HongRay"},"content":" Event task \u003d new Event(parts[2], times[0], times[1]);","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"HongRay"},"content":" if (\"1\".equals(parts[1])) {","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"HongRay"},"content":" task.markAsDone();","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"HongRay"},"content":" return task;","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"HongRay"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"HongRay":39}},{"path":"src/main/java/Handler.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"HongRay"},"content":"public class Handler {","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"HongRay"},"content":" public static void handleDelete(String[] parts, TaskList taskList, String dash) throws JayneException {","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"HongRay"},"content":" if (parts.length \u003c 2) {","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"HongRay"},"content":" throw JayneException.deleteEmptyException();","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"HongRay"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"HongRay"},"content":" int taskNumber \u003d Integer.parseInt(parts[1]);","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"HongRay"},"content":" if (taskNumber \u003c\u003d 0 || taskNumber \u003e taskList.getTaskCount()) {","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"HongRay"},"content":" throw JayneException.deleteExistException(taskNumber);","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"HongRay"},"content":" Task removedTask \u003d taskList.deleteTask(taskNumber);","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"HongRay"},"content":" System.out.println(dash + \"\\nNoted. I\u0027ve removed this task:\\n \" + removedTask + \"\\nNow you have \" + taskList.getTaskCount() + \" tasks in the list.\\n\" + dash);","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"HongRay"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"HongRay"},"content":" throw JayneException.deleteInvalidException();","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"HongRay"},"content":" taskList.saveTasks();","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"HongRay"},"content":" public static void handleUnmark(String[] parts, TaskList taskList, String dash) throws JayneException {","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"HongRay"},"content":" if (parts.length \u003c 2) {","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"HongRay"},"content":" throw JayneException.unmarkEmptyException();","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":23,"author":{"gitId":"HongRay"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"HongRay"},"content":" int taskNumber \u003d Integer.parseInt(parts[1]);","lastModifiedDate":"2024-01-24"},{"lineNumber":25,"author":{"gitId":"HongRay"},"content":" if (taskNumber \u003c\u003d 0 || taskNumber \u003e taskList.getTaskCount()) {","lastModifiedDate":"2024-01-24"},{"lineNumber":26,"author":{"gitId":"HongRay"},"content":" throw JayneException.unmarkTaskExistException(taskNumber);","lastModifiedDate":"2024-01-24"},{"lineNumber":27,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":28,"author":{"gitId":"HongRay"},"content":" taskList.markTaskAsNotDone(taskNumber);","lastModifiedDate":"2024-01-24"},{"lineNumber":29,"author":{"gitId":"HongRay"},"content":" System.out.println(dash + \"\\nOK, I\u0027ve marked this task as not done yet:\\n \" + taskList.getTask(taskNumber) + \"\\n\" + dash);","lastModifiedDate":"2024-01-24"},{"lineNumber":30,"author":{"gitId":"HongRay"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":31,"author":{"gitId":"HongRay"},"content":" throw JayneException.unmarkException();","lastModifiedDate":"2024-01-24"},{"lineNumber":32,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":33,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"HongRay"},"content":" taskList.saveTasks();","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":36,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":37,"author":{"gitId":"HongRay"},"content":" public static void handleDeadline(String[] parts, TaskList taskList, String dash) throws JayneException {","lastModifiedDate":"2024-01-24"},{"lineNumber":38,"author":{"gitId":"HongRay"},"content":" if (parts.length \u003c 2 || parts[1].isEmpty()) {","lastModifiedDate":"2024-01-24"},{"lineNumber":39,"author":{"gitId":"HongRay"},"content":" throw new JayneException(\"The description of a deadline cannot be empty.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":40,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":41,"author":{"gitId":"HongRay"},"content":" String[] deadlineParts \u003d parts[1].split(\" /by \", 2);","lastModifiedDate":"2024-01-24"},{"lineNumber":42,"author":{"gitId":"HongRay"},"content":" if (deadlineParts.length \u003c 2 || deadlineParts[1].isEmpty()) {","lastModifiedDate":"2024-01-24"},{"lineNumber":43,"author":{"gitId":"HongRay"},"content":" throw JayneException.deadlineException();","lastModifiedDate":"2024-01-24"},{"lineNumber":44,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":45,"author":{"gitId":"HongRay"},"content":" Deadline newDeadline \u003d new Deadline(deadlineParts[0], deadlineParts[1]);","lastModifiedDate":"2024-01-24"},{"lineNumber":46,"author":{"gitId":"HongRay"},"content":" taskList.addTask(newDeadline);","lastModifiedDate":"2024-01-24"},{"lineNumber":47,"author":{"gitId":"HongRay"},"content":" System.out.println(dash + \"\\nGot it. I\u0027ve added this task:\");","lastModifiedDate":"2024-01-24"},{"lineNumber":48,"author":{"gitId":"HongRay"},"content":" System.out.println(\" \" + newDeadline);","lastModifiedDate":"2024-01-24"},{"lineNumber":49,"author":{"gitId":"HongRay"},"content":" System.out.println(\"Now you have \" + taskList.getTaskCount() + \" tasks in the list.\" + \"\\n\" + dash);","lastModifiedDate":"2024-01-24"},{"lineNumber":50,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"HongRay"},"content":" taskList.saveTasks();","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":53,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":54,"author":{"gitId":"HongRay"},"content":" public static void handleTodo(String[] parts, TaskList taskList, String dash) throws JayneException {","lastModifiedDate":"2024-01-24"},{"lineNumber":55,"author":{"gitId":"HongRay"},"content":" if (parts.length \u003c 2 || parts[1].isEmpty()) {","lastModifiedDate":"2024-01-24"},{"lineNumber":56,"author":{"gitId":"HongRay"},"content":" throw JayneException.todoException();","lastModifiedDate":"2024-01-24"},{"lineNumber":57,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":58,"author":{"gitId":"HongRay"},"content":" Todo newTodo \u003d new Todo(parts[1]);","lastModifiedDate":"2024-01-24"},{"lineNumber":59,"author":{"gitId":"HongRay"},"content":" taskList.addTask(newTodo);","lastModifiedDate":"2024-01-24"},{"lineNumber":60,"author":{"gitId":"HongRay"},"content":" System.out.println(dash + \"\\nGot it. I\u0027ve added this task:\");","lastModifiedDate":"2024-01-24"},{"lineNumber":61,"author":{"gitId":"HongRay"},"content":" System.out.println(\" \" + newTodo);","lastModifiedDate":"2024-01-24"},{"lineNumber":62,"author":{"gitId":"HongRay"},"content":" System.out.println(\"Now you have \" + taskList.getTaskCount() + \" tasks in the list.\" + \"\\n\" + dash);","lastModifiedDate":"2024-01-24"},{"lineNumber":63,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":64,"author":{"gitId":"HongRay"},"content":" taskList.saveTasks();","lastModifiedDate":"2024-01-30"},{"lineNumber":65,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":66,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":67,"author":{"gitId":"HongRay"},"content":" public static void handleEvent(String[] parts, TaskList taskList, String dash) throws JayneException {","lastModifiedDate":"2024-01-24"},{"lineNumber":68,"author":{"gitId":"HongRay"},"content":" if (parts.length \u003c 2 || parts[1].isEmpty()) {","lastModifiedDate":"2024-01-24"},{"lineNumber":69,"author":{"gitId":"HongRay"},"content":" throw JayneException.emptyEventException();","lastModifiedDate":"2024-01-24"},{"lineNumber":70,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":71,"author":{"gitId":"HongRay"},"content":" String[] eventParts \u003d parts[1].split(\" /from \", 2);","lastModifiedDate":"2024-01-24"},{"lineNumber":72,"author":{"gitId":"HongRay"},"content":" if (eventParts.length \u003c 2 || eventParts[1].isEmpty()) {","lastModifiedDate":"2024-01-24"},{"lineNumber":73,"author":{"gitId":"HongRay"},"content":" throw JayneException.eventStartException();","lastModifiedDate":"2024-01-24"},{"lineNumber":74,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":75,"author":{"gitId":"HongRay"},"content":" String[] times \u003d eventParts[1].split(\" /to \", 2);","lastModifiedDate":"2024-01-24"},{"lineNumber":76,"author":{"gitId":"HongRay"},"content":" if (times.length \u003c 2 || times[1].isEmpty()) {","lastModifiedDate":"2024-01-24"},{"lineNumber":77,"author":{"gitId":"HongRay"},"content":" throw JayneException.eventEndException();","lastModifiedDate":"2024-01-24"},{"lineNumber":78,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":79,"author":{"gitId":"HongRay"},"content":" Event newEvent \u003d new Event(eventParts[0], times[0], times[1]);","lastModifiedDate":"2024-01-24"},{"lineNumber":80,"author":{"gitId":"HongRay"},"content":" taskList.addTask(newEvent);","lastModifiedDate":"2024-01-24"},{"lineNumber":81,"author":{"gitId":"HongRay"},"content":" System.out.println(dash + \"\\nGot it. I\u0027ve added this task:\");","lastModifiedDate":"2024-01-24"},{"lineNumber":82,"author":{"gitId":"HongRay"},"content":" System.out.println(\" \" + newEvent);","lastModifiedDate":"2024-01-24"},{"lineNumber":83,"author":{"gitId":"HongRay"},"content":" System.out.println(\"Now you have \" + taskList.getTaskCount() + \" tasks in the list.\" + \"\\n\" + dash);","lastModifiedDate":"2024-01-24"},{"lineNumber":84,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":85,"author":{"gitId":"HongRay"},"content":" taskList.saveTasks();","lastModifiedDate":"2024-01-30"},{"lineNumber":86,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":87,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":88,"author":{"gitId":"HongRay"},"content":" public static void handleMark(String[] parts, TaskList taskList, String dash) throws JayneException {","lastModifiedDate":"2024-01-24"},{"lineNumber":89,"author":{"gitId":"HongRay"},"content":" if (parts.length \u003c 2) {","lastModifiedDate":"2024-01-24"},{"lineNumber":90,"author":{"gitId":"HongRay"},"content":" throw JayneException.markEmptyException();","lastModifiedDate":"2024-01-24"},{"lineNumber":91,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":92,"author":{"gitId":"HongRay"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":93,"author":{"gitId":"HongRay"},"content":" int taskNumber \u003d Integer.parseInt(parts[1]);","lastModifiedDate":"2024-01-24"},{"lineNumber":94,"author":{"gitId":"HongRay"},"content":" if (taskNumber \u003c\u003d 0 || taskNumber \u003e taskList.getTaskCount()) {","lastModifiedDate":"2024-01-24"},{"lineNumber":95,"author":{"gitId":"HongRay"},"content":" throw JayneException.markTaskExistException(taskNumber);","lastModifiedDate":"2024-01-24"},{"lineNumber":96,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":97,"author":{"gitId":"HongRay"},"content":" taskList.markTaskAsDone(taskNumber);","lastModifiedDate":"2024-01-24"},{"lineNumber":98,"author":{"gitId":"HongRay"},"content":" System.out.println(dash + \"\\nNice! I\u0027ve marked this task as done:\\n \" + taskList.getTask(taskNumber) + \"\\n\" + dash);","lastModifiedDate":"2024-01-24"},{"lineNumber":99,"author":{"gitId":"HongRay"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":100,"author":{"gitId":"HongRay"},"content":" throw JayneException.markInvalidTaskException();","lastModifiedDate":"2024-01-24"},{"lineNumber":101,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":102,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":103,"author":{"gitId":"HongRay"},"content":" taskList.saveTasks();","lastModifiedDate":"2024-01-30"},{"lineNumber":104,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":105,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":106,"author":{"gitId":"HongRay"},"content":" public static void handleBye(String dash) {","lastModifiedDate":"2024-01-24"},{"lineNumber":107,"author":{"gitId":"HongRay"},"content":" System.out.println(dash);","lastModifiedDate":"2024-01-24"},{"lineNumber":108,"author":{"gitId":"HongRay"},"content":" System.out.println(\"Bye. Hope to see you again soon!\");","lastModifiedDate":"2024-01-24"},{"lineNumber":109,"author":{"gitId":"HongRay"},"content":" System.out.println(dash);","lastModifiedDate":"2024-01-24"},{"lineNumber":110,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":111,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":112,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":113,"author":{"gitId":"HongRay"},"content":" public static void handleList(TaskList taskList, String dash) {","lastModifiedDate":"2024-01-24"},{"lineNumber":114,"author":{"gitId":"HongRay"},"content":" System.out.println(dash);","lastModifiedDate":"2024-01-24"},{"lineNumber":115,"author":{"gitId":"HongRay"},"content":" taskList.display();","lastModifiedDate":"2024-01-24"},{"lineNumber":116,"author":{"gitId":"HongRay"},"content":" System.out.println(dash);","lastModifiedDate":"2024-01-24"},{"lineNumber":117,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":118,"author":{"gitId":"HongRay"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"HongRay":118}},{"path":"src/main/java/Jayne.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"HongRay"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"HongRay"},"content":"public class Jayne {","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"HongRay"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"HongRay"},"content":" Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"HongRay"},"content":" String dash \u003d \"___________________________________\";","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"HongRay"},"content":" System.out.println(dash);","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"HongRay"},"content":" System.out.println(\"Hello, I\u0027m Jayne\");","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"HongRay"},"content":" System.out.println(\"What can I do for you?\\n\" + dash);","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"HongRay"},"content":" TaskList taskList \u003d new TaskList();","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"HongRay"},"content":" while (true) {","lastModifiedDate":"2024-01-22"},{"lineNumber":13,"author":{"gitId":"HongRay"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"HongRay"},"content":" String input \u003d scanner.nextLine().trim();","lastModifiedDate":"2024-01-22"},{"lineNumber":15,"author":{"gitId":"HongRay"},"content":" if (input.isEmpty()) {","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"HongRay"},"content":" throw new JayneException(\"Input cannot be empty.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"HongRay"},"content":" String[] parts \u003d input.split(\" \", 2);","lastModifiedDate":"2024-01-22"},{"lineNumber":20,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":21,"author":{"gitId":"HongRay"},"content":" // Handle different cases","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"HongRay"},"content":" switch (parts[0].toLowerCase()) {","lastModifiedDate":"2024-01-24"},{"lineNumber":23,"author":{"gitId":"HongRay"},"content":" case \"bye\":","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"HongRay"},"content":" Handler.handleBye(dash);","lastModifiedDate":"2024-01-24"},{"lineNumber":25,"author":{"gitId":"HongRay"},"content":" return; // Exit the program","lastModifiedDate":"2024-01-24"},{"lineNumber":26,"author":{"gitId":"HongRay"},"content":" case \"list\":","lastModifiedDate":"2024-01-24"},{"lineNumber":27,"author":{"gitId":"HongRay"},"content":" Handler.handleList(taskList, dash);","lastModifiedDate":"2024-01-24"},{"lineNumber":28,"author":{"gitId":"HongRay"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":29,"author":{"gitId":"HongRay"},"content":" case \"mark\":","lastModifiedDate":"2024-01-24"},{"lineNumber":30,"author":{"gitId":"HongRay"},"content":" Handler.handleMark(parts, taskList, dash);","lastModifiedDate":"2024-01-24"},{"lineNumber":31,"author":{"gitId":"HongRay"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":32,"author":{"gitId":"HongRay"},"content":" case \"unmark\":","lastModifiedDate":"2024-01-24"},{"lineNumber":33,"author":{"gitId":"HongRay"},"content":" Handler.handleUnmark(parts, taskList, dash);","lastModifiedDate":"2024-01-24"},{"lineNumber":34,"author":{"gitId":"HongRay"},"content":" break;","lastModifiedDate":"2024-01-22"},{"lineNumber":35,"author":{"gitId":"HongRay"},"content":" case \"todo\":","lastModifiedDate":"2024-01-24"},{"lineNumber":36,"author":{"gitId":"HongRay"},"content":" Handler.handleTodo(parts, taskList, dash);","lastModifiedDate":"2024-01-24"},{"lineNumber":37,"author":{"gitId":"HongRay"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":38,"author":{"gitId":"HongRay"},"content":" case \"deadline\":","lastModifiedDate":"2024-01-24"},{"lineNumber":39,"author":{"gitId":"HongRay"},"content":" Handler.handleDeadline(parts, taskList, dash);","lastModifiedDate":"2024-01-24"},{"lineNumber":40,"author":{"gitId":"HongRay"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":41,"author":{"gitId":"HongRay"},"content":" case \"event\":","lastModifiedDate":"2024-01-24"},{"lineNumber":42,"author":{"gitId":"HongRay"},"content":" Handler.handleEvent(parts, taskList, dash);","lastModifiedDate":"2024-01-24"},{"lineNumber":43,"author":{"gitId":"HongRay"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":44,"author":{"gitId":"HongRay"},"content":" case \"delete\":","lastModifiedDate":"2024-01-24"},{"lineNumber":45,"author":{"gitId":"HongRay"},"content":" Handler.handleDelete(parts, taskList, dash);","lastModifiedDate":"2024-01-24"},{"lineNumber":46,"author":{"gitId":"HongRay"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":47,"author":{"gitId":"HongRay"},"content":" default:","lastModifiedDate":"2024-01-24"},{"lineNumber":48,"author":{"gitId":"HongRay"},"content":" throw new JayneException(\"What are you typing. please include either bye, list, mark, umark, todo, deadline or event in your inputs please\");","lastModifiedDate":"2024-01-24"},{"lineNumber":49,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":50,"author":{"gitId":"HongRay"},"content":" } catch (JayneException e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":51,"author":{"gitId":"HongRay"},"content":" System.out.println(dash + \"\\nHuh?!?!? \" + e.getMessage() + \"\\n\" + dash);","lastModifiedDate":"2024-01-24"},{"lineNumber":52,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":53,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":54,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":55,"author":{"gitId":"HongRay"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"HongRay":55}},{"path":"src/main/java/JayneException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"HongRay"},"content":"public class JayneException extends Exception {","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"HongRay"},"content":" public JayneException(String message) {","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"HongRay"},"content":" super(message);","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"HongRay"},"content":" //Deadline","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"HongRay"},"content":" public static JayneException deadlineException() {","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"HongRay"},"content":" return new JayneException(\"Where can have empty deadline time, enter deadline lah. E.g. deadline return book /by Sunday\");","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"HongRay"},"content":" //Unmark","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"HongRay"},"content":" public static JayneException unmarkException() {","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"HongRay"},"content":" return new JayneException(\"??? Invalid task number. Enter a valid number please. E.g. unmark 1\");","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"HongRay"},"content":" public static JayneException unmarkTaskExistException(int taskNumber) {","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"HongRay"},"content":" return new JayneException(\"Task number \" + taskNumber + \" does not exist. E.g. unmark 1\");","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"HongRay"},"content":" public static JayneException unmarkEmptyException() {","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"HongRay"},"content":" return new JayneException(\"What are you doing? The number of the task to unmark cannot be empty lah. E.g. unmark 1\");","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":23,"author":{"gitId":"HongRay"},"content":" //Delete","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"HongRay"},"content":" public static JayneException deleteEmptyException() {","lastModifiedDate":"2024-01-24"},{"lineNumber":25,"author":{"gitId":"HongRay"},"content":" return new JayneException(\"The task number to delete cannot be empty. E.g. delete 2\");","lastModifiedDate":"2024-01-24"},{"lineNumber":26,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":27,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":28,"author":{"gitId":"HongRay"},"content":" public static JayneException deleteInvalidException() {","lastModifiedDate":"2024-01-24"},{"lineNumber":29,"author":{"gitId":"HongRay"},"content":" return new JayneException(\"??? Invalid task number. Enter a valid number please. E.g. delete 2\");","lastModifiedDate":"2024-01-24"},{"lineNumber":30,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":31,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":32,"author":{"gitId":"HongRay"},"content":" public static JayneException deleteExistException(int taskNumber) {","lastModifiedDate":"2024-01-24"},{"lineNumber":33,"author":{"gitId":"HongRay"},"content":" return new JayneException(\"Task number \" + taskNumber + \" does not exist. E.g. delete 2\");","lastModifiedDate":"2024-01-24"},{"lineNumber":34,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":35,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":36,"author":{"gitId":"HongRay"},"content":" //to-do","lastModifiedDate":"2024-01-24"},{"lineNumber":37,"author":{"gitId":"HongRay"},"content":" public static JayneException todoException() {","lastModifiedDate":"2024-01-24"},{"lineNumber":38,"author":{"gitId":"HongRay"},"content":" return new JayneException(\"Huh?? why your description of a todo is empty! Please enter description. E.g. todo read book\");","lastModifiedDate":"2024-01-24"},{"lineNumber":39,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":40,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":41,"author":{"gitId":"HongRay"},"content":" //event","lastModifiedDate":"2024-01-24"},{"lineNumber":42,"author":{"gitId":"HongRay"},"content":" public static JayneException emptyEventException() {","lastModifiedDate":"2024-01-24"},{"lineNumber":43,"author":{"gitId":"HongRay"},"content":" return new JayneException(\"The description of an event cannot be empty lah. E.g. event project meeting /from Mon 2pm /to 4pm\");","lastModifiedDate":"2024-01-24"},{"lineNumber":44,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":45,"author":{"gitId":"HongRay"},"content":" public static JayneException eventStartException() {","lastModifiedDate":"2024-01-24"},{"lineNumber":46,"author":{"gitId":"HongRay"},"content":" return new JayneException(\"The event start time cannot be empty. E.g. event project meeting /from Mon 2pm /to 4pm\");","lastModifiedDate":"2024-01-24"},{"lineNumber":47,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":48,"author":{"gitId":"HongRay"},"content":" public static JayneException eventEndException() {","lastModifiedDate":"2024-01-24"},{"lineNumber":49,"author":{"gitId":"HongRay"},"content":" return new JayneException(\"The event end time cannot be empty please. E.g. event project meeting /from Mon 2pm /to 4pm\");","lastModifiedDate":"2024-01-24"},{"lineNumber":50,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":51,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":52,"author":{"gitId":"HongRay"},"content":" //Mark","lastModifiedDate":"2024-01-24"},{"lineNumber":53,"author":{"gitId":"HongRay"},"content":" public static JayneException markEmptyException() {","lastModifiedDate":"2024-01-24"},{"lineNumber":54,"author":{"gitId":"HongRay"},"content":" return new JayneException(\"The task number to mark cannot be empty. E.g. mark 1\");","lastModifiedDate":"2024-01-24"},{"lineNumber":55,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":56,"author":{"gitId":"HongRay"},"content":" public static JayneException markTaskExistException(int taskNumber) {","lastModifiedDate":"2024-01-24"},{"lineNumber":57,"author":{"gitId":"HongRay"},"content":" return new JayneException(\"Task number \" + taskNumber + \" does not exist. E.g. mark 1\");","lastModifiedDate":"2024-01-24"},{"lineNumber":58,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":59,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":60,"author":{"gitId":"HongRay"},"content":" public static JayneException markInvalidTaskException() {","lastModifiedDate":"2024-01-24"},{"lineNumber":61,"author":{"gitId":"HongRay"},"content":" return new JayneException(\"??? Invalid task number. Enter a valid number please. E.g. mark 1\");","lastModifiedDate":"2024-01-24"},{"lineNumber":62,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":63,"author":{"gitId":"HongRay"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"HongRay":63}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"HongRay"},"content":"public class Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"HongRay"},"content":" protected String description;","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"HongRay"},"content":" protected boolean isDone;","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"HongRay"},"content":" public Task(String description) {","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"HongRay"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"HongRay"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"HongRay"},"content":" public void markAsDone() {","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"HongRay"},"content":" this.isDone \u003d true;","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":13,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":14,"author":{"gitId":"HongRay"},"content":" public void markAsNotDone() {","lastModifiedDate":"2024-01-22"},{"lineNumber":15,"author":{"gitId":"HongRay"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-22"},{"lineNumber":16,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":17,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":18,"author":{"gitId":"HongRay"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-01-22"},{"lineNumber":19,"author":{"gitId":"HongRay"},"content":" return (isDone ? \"[X]\" : \"[ ]\"); // mark done task with X","lastModifiedDate":"2024-01-22"},{"lineNumber":20,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":21,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":22,"author":{"gitId":"HongRay"},"content":" public String toFileFormat() {","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"HongRay"},"content":" return (isDone ? \"1\" : \"0\") + \" | \" + description;","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"HongRay"},"content":" public static Task fromFileFormat(String line) throws JayneException {","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"HongRay"},"content":" String[] parts \u003d line.split(\" \\\\| \");","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"HongRay"},"content":" if (parts.length \u003c 3) {","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"HongRay"},"content":" throw new JayneException(\"Invalid line format\");","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"HongRay"},"content":" Task task \u003d new Task(parts[2]);","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"HongRay"},"content":" if (\"1\".equals(parts[1])) {","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"HongRay"},"content":" task.markAsDone();","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"HongRay"},"content":" return task;","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"HongRay"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":39,"author":{"gitId":"HongRay"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":40,"author":{"gitId":"HongRay"},"content":" return getStatusIcon() + \" \" + description;","lastModifiedDate":"2024-01-22"},{"lineNumber":41,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":42,"author":{"gitId":"HongRay"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"HongRay":42}},{"path":"src/main/java/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"HongRay"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"HongRay"},"content":"import java.util.List;","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"HongRay"},"content":"import java.io.*;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"HongRay"},"content":"import java.nio.file.*;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"HongRay"},"content":"import java.util.*;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"HongRay"},"content":"//test","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"HongRay"},"content":"public class TaskList {","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"HongRay"},"content":" private final List\u003cTask\u003e taskArray;","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"HongRay"},"content":" private static final String FILE_PATH \u003d \"./data/jayne.txt\";","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"HongRay"},"content":" private int taskCount;","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":13,"author":{"gitId":"HongRay"},"content":" public TaskList() {","lastModifiedDate":"2024-01-22"},{"lineNumber":14,"author":{"gitId":"HongRay"},"content":" this.taskArray \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-22"},{"lineNumber":15,"author":{"gitId":"HongRay"},"content":" //checkAndDeleteFile();","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"HongRay"},"content":" renameFileIfExists();","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"HongRay"},"content":" loadTasks();","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"HongRay"},"content":" private void checkAndDeleteFile() {","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"HongRay"},"content":" Path path \u003d Paths.get(FILE_PATH);","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"HongRay"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"HongRay"},"content":" // Check if the file exists","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"HongRay"},"content":" if (Files.exists(path)) {","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"HongRay"},"content":" // Delete the file","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"HongRay"},"content":" Files.delete(path);","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"HongRay"},"content":" System.out.println(FILE_PATH + \" has been detected and deleted.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"HongRay"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"HongRay"},"content":" System.out.println(FILE_PATH + \" does not exist, no need to delete.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"HongRay"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"HongRay"},"content":" System.out.println(\"An error occurred while checking/deleting the file: \" + e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"HongRay"},"content":" private void renameFileIfExists() {","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"HongRay"},"content":" Path path \u003d Paths.get(FILE_PATH);","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"HongRay"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"HongRay"},"content":" if (Files.exists(path)) {","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"HongRay"},"content":" String newFileName \u003d getNewFileName(path);","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"HongRay"},"content":" Files.move(path, path.resolveSibling(newFileName));","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"HongRay"},"content":" System.out.println(FILE_PATH + \" has been renamed to \" + newFileName);","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"HongRay"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"HongRay"},"content":" System.out.println(FILE_PATH + \" does not exist, no need to rename.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"HongRay"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"HongRay"},"content":" System.out.println(\"An error occurred while renaming the file: \" + e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"HongRay"},"content":" private String getNewFileName(Path originalPath) {","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"HongRay"},"content":" int counter \u003d 1;","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"HongRay"},"content":" String originalFileName \u003d originalPath.getFileName().toString();","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"HongRay"},"content":" String fileWithoutExtension \u003d originalFileName.replaceFirst(\"[.][^.]+$\", \"\");","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"HongRay"},"content":" String extension \u003d originalFileName.substring(originalFileName.lastIndexOf(\".\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"HongRay"},"content":" Path parentDir \u003d originalPath.getParent();","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"HongRay"},"content":" while (true) {","lastModifiedDate":"2024-01-30"},{"lineNumber":59,"author":{"gitId":"HongRay"},"content":" String newName \u003d fileWithoutExtension + \"(\" + counter + \")\" + extension;","lastModifiedDate":"2024-01-30"},{"lineNumber":60,"author":{"gitId":"HongRay"},"content":" Path newPath \u003d parentDir.resolve(newName);","lastModifiedDate":"2024-01-30"},{"lineNumber":61,"author":{"gitId":"HongRay"},"content":" if (!Files.exists(newPath)) {","lastModifiedDate":"2024-01-30"},{"lineNumber":62,"author":{"gitId":"HongRay"},"content":" return newName;","lastModifiedDate":"2024-01-30"},{"lineNumber":63,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":64,"author":{"gitId":"HongRay"},"content":" counter++;","lastModifiedDate":"2024-01-30"},{"lineNumber":65,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":66,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":67,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":68,"author":{"gitId":"HongRay"},"content":" public void saveTasks() {","lastModifiedDate":"2024-01-30"},{"lineNumber":69,"author":{"gitId":"HongRay"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":70,"author":{"gitId":"HongRay"},"content":" Path path \u003d Paths.get(FILE_PATH);","lastModifiedDate":"2024-01-30"},{"lineNumber":71,"author":{"gitId":"HongRay"},"content":" Files.createDirectories(path.getParent());","lastModifiedDate":"2024-01-30"},{"lineNumber":72,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":73,"author":{"gitId":"HongRay"},"content":" BufferedWriter bw \u003d new BufferedWriter(new FileWriter(FILE_PATH));","lastModifiedDate":"2024-01-30"},{"lineNumber":74,"author":{"gitId":"HongRay"},"content":" for (Task task : taskArray) {","lastModifiedDate":"2024-01-30"},{"lineNumber":75,"author":{"gitId":"HongRay"},"content":" bw.write(task.toFileFormat() + \"\\n\");","lastModifiedDate":"2024-01-30"},{"lineNumber":76,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":77,"author":{"gitId":"HongRay"},"content":" bw.close();","lastModifiedDate":"2024-01-30"},{"lineNumber":78,"author":{"gitId":"HongRay"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":79,"author":{"gitId":"HongRay"},"content":" System.out.println(\"An error occurred while saving tasks to file: \" + e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":80,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":81,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":82,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":83,"author":{"gitId":"HongRay"},"content":" private void loadTasks() {","lastModifiedDate":"2024-01-30"},{"lineNumber":84,"author":{"gitId":"HongRay"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":85,"author":{"gitId":"HongRay"},"content":" Path path \u003d Paths.get(FILE_PATH);","lastModifiedDate":"2024-01-30"},{"lineNumber":86,"author":{"gitId":"HongRay"},"content":" if (!Files.exists(path)) {","lastModifiedDate":"2024-01-30"},{"lineNumber":87,"author":{"gitId":"HongRay"},"content":" return; // File doesn\u0027t exist, nothing to load","lastModifiedDate":"2024-01-30"},{"lineNumber":88,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":89,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":90,"author":{"gitId":"HongRay"},"content":" List\u003cString\u003e lines \u003d Files.readAllLines(path);","lastModifiedDate":"2024-01-30"},{"lineNumber":91,"author":{"gitId":"HongRay"},"content":" for (String line : lines) {","lastModifiedDate":"2024-01-30"},{"lineNumber":92,"author":{"gitId":"HongRay"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":93,"author":{"gitId":"HongRay"},"content":" Task task \u003d Task.fromFileFormat(line);","lastModifiedDate":"2024-01-30"},{"lineNumber":94,"author":{"gitId":"HongRay"},"content":" if (task !\u003d null) {","lastModifiedDate":"2024-01-30"},{"lineNumber":95,"author":{"gitId":"HongRay"},"content":" taskArray.add(task);","lastModifiedDate":"2024-01-30"},{"lineNumber":96,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":97,"author":{"gitId":"HongRay"},"content":" } catch (JayneException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":98,"author":{"gitId":"HongRay"},"content":" System.out.println(\"Error parsing line from file: \" + line);","lastModifiedDate":"2024-01-30"},{"lineNumber":99,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":100,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":101,"author":{"gitId":"HongRay"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":102,"author":{"gitId":"HongRay"},"content":" System.out.println(\"An error occurred while loading tasks from file: \" + e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":103,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":104,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":105,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":106,"author":{"gitId":"HongRay"},"content":" public int getTaskCount() {","lastModifiedDate":"2024-01-22"},{"lineNumber":107,"author":{"gitId":"HongRay"},"content":" return taskCount;","lastModifiedDate":"2024-01-22"},{"lineNumber":108,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":109,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":110,"author":{"gitId":"HongRay"},"content":" public Task deleteTask(int taskNumber) throws JayneException {","lastModifiedDate":"2024-01-24"},{"lineNumber":111,"author":{"gitId":"HongRay"},"content":" if (taskNumber \u003c 1 || taskNumber \u003e taskArray.size()) {","lastModifiedDate":"2024-01-24"},{"lineNumber":112,"author":{"gitId":"HongRay"},"content":" throw new JayneException(\"Task number \" + taskNumber + \" does not exist.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":113,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":114,"author":{"gitId":"HongRay"},"content":" this.taskCount \u003d taskCount - 1;","lastModifiedDate":"2024-01-24"},{"lineNumber":115,"author":{"gitId":"HongRay"},"content":" return taskArray.remove(taskNumber - 1);","lastModifiedDate":"2024-01-24"},{"lineNumber":116,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":117,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":118,"author":{"gitId":"HongRay"},"content":" public void addTask(Task task) {","lastModifiedDate":"2024-01-22"},{"lineNumber":119,"author":{"gitId":"HongRay"},"content":" taskArray.add(task);","lastModifiedDate":"2024-01-22"},{"lineNumber":120,"author":{"gitId":"HongRay"},"content":" this.taskCount \u003d taskCount + 1;","lastModifiedDate":"2024-01-22"},{"lineNumber":121,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":122,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":123,"author":{"gitId":"HongRay"},"content":" public Task getTask(int index) {","lastModifiedDate":"2024-01-22"},{"lineNumber":124,"author":{"gitId":"HongRay"},"content":" if (index \u003e\u003d 0 \u0026\u0026 index \u003c\u003d taskArray.size()) {","lastModifiedDate":"2024-01-22"},{"lineNumber":125,"author":{"gitId":"HongRay"},"content":" return taskArray.get(index - 1);","lastModifiedDate":"2024-01-22"},{"lineNumber":126,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":127,"author":{"gitId":"HongRay"},"content":" System.out.println(\"Index invalid\");","lastModifiedDate":"2024-01-22"},{"lineNumber":128,"author":{"gitId":"HongRay"},"content":" return null;","lastModifiedDate":"2024-01-22"},{"lineNumber":129,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":130,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":131,"author":{"gitId":"HongRay"},"content":" public void markTaskAsDone(int taskNumber) {","lastModifiedDate":"2024-01-22"},{"lineNumber":132,"author":{"gitId":"HongRay"},"content":" if (taskNumber \u003e\u003d 1 \u0026\u0026 taskNumber \u003c\u003d taskArray.size()) {","lastModifiedDate":"2024-01-22"},{"lineNumber":133,"author":{"gitId":"HongRay"},"content":" taskArray.get(taskNumber - 1).markAsDone();","lastModifiedDate":"2024-01-22"},{"lineNumber":134,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":135,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":136,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":137,"author":{"gitId":"HongRay"},"content":" public void markTaskAsNotDone(int taskNumber) {","lastModifiedDate":"2024-01-22"},{"lineNumber":138,"author":{"gitId":"HongRay"},"content":" if (taskNumber \u003e\u003d 1 \u0026\u0026 taskNumber \u003c\u003d taskArray.size()) {","lastModifiedDate":"2024-01-22"},{"lineNumber":139,"author":{"gitId":"HongRay"},"content":" taskArray.get(taskNumber - 1).markAsNotDone();","lastModifiedDate":"2024-01-22"},{"lineNumber":140,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":141,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":142,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":143,"author":{"gitId":"HongRay"},"content":" public void display() {","lastModifiedDate":"2024-01-22"},{"lineNumber":144,"author":{"gitId":"HongRay"},"content":" System.out.println(\"Here are the tasks in your list:\");","lastModifiedDate":"2024-01-22"},{"lineNumber":145,"author":{"gitId":"HongRay"},"content":" for (int i \u003d 0; i \u003c taskArray.size(); i++) {","lastModifiedDate":"2024-01-22"},{"lineNumber":146,"author":{"gitId":"HongRay"},"content":" System.out.println((i + 1) + \". \" + taskArray.get(i).toString());","lastModifiedDate":"2024-01-22"},{"lineNumber":147,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":148,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":149,"author":{"gitId":"HongRay"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"HongRay":149}},{"path":"src/main/java/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"HongRay"},"content":"public class Todo extends Task{","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"HongRay"},"content":" public Todo(String description) {","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"HongRay"},"content":" super(description);","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"HongRay"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"HongRay"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"HongRay"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"HongRay"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"HongRay"},"content":" public String toFileFormat() {","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"HongRay"},"content":" return \"T | \" + super.toFileFormat();","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"HongRay"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"HongRay":13}},{"path":"text-ui-test/TEST.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"HongRay"},"content":"todo read book","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"HongRay"},"content":"deadline return book /by June 6th","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"HongRay"},"content":"event project meeting Aug 6th /from 2 /to 4pm","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"HongRay"},"content":"todo join sport club","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"HongRay"},"content":"mark 1","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"HongRay"},"content":"mark 4","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"HongRay":6}},{"path":"text-ui-test/data/jayne.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"HongRay"},"content":"T | 1 | read book","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"HongRay"},"content":"D | 0 | return book | June 6th","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"HongRay"},"content":"E | 0 | project meeting Aug 6th | 2-4pm","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"HongRay"},"content":"T | 1 | join sport club","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"HongRay":4}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"HongRay"},"content":"John Doe","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"HongRay"},"content":"todo borrow book","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"HongRay"},"content":"todo","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"HongRay"},"content":"deadline return book /by Sunday","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"HongRay"},"content":"deadline","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"HongRay"},"content":"deadline return book","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"HongRay"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"HongRay"},"content":"event","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"HongRay"},"content":"event project meeting","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"HongRay"},"content":"event project meeting /from","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"HongRay"},"content":"event project meeting /from Mon 2pm","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"HongRay"},"content":"event project meeting /to","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"HongRay"},"content":"deadline do homework /by no idea :-p","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"HongRay"},"content":"list","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"HongRay"},"content":"mark 1","lastModifiedDate":"2024-01-23"},{"lineNumber":17,"author":{"gitId":"HongRay"},"content":"mark","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"HongRay"},"content":"mark 3","lastModifiedDate":"2024-01-23"},{"lineNumber":19,"author":{"gitId":"HongRay"},"content":"mark 10","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"HongRay"},"content":"list","lastModifiedDate":"2024-01-23"},{"lineNumber":21,"author":{"gitId":"HongRay"},"content":"unmark 1","lastModifiedDate":"2024-01-23"},{"lineNumber":22,"author":{"gitId":"HongRay"},"content":"unmark","lastModifiedDate":"2024-01-24"},{"lineNumber":23,"author":{"gitId":"HongRay"},"content":"unmark 10","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"HongRay"},"content":"list","lastModifiedDate":"2024-01-23"},{"lineNumber":25,"author":{"gitId":"HongRay"},"content":"delete","lastModifiedDate":"2024-01-24"},{"lineNumber":26,"author":{"gitId":"HongRay"},"content":"delete 10","lastModifiedDate":"2024-01-24"},{"lineNumber":27,"author":{"gitId":"HongRay"},"content":"delete 3","lastModifiedDate":"2024-01-24"},{"lineNumber":28,"author":{"gitId":"HongRay"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":29,"author":{"gitId":"HongRay"},"content":"bye","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"HongRay":29}},{"path":"text-ui-test/runtest.bat","fileType":"bat","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"REM create bin directory if it doesn\u0027t exist","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"if not exist ..\\bin mkdir ..\\bin","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"REM delete output from previous run","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"if exist ACTUAL.TXT del ACTUAL.TXT","lastModifiedDate":"2020-08-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"REM compile the code into the bin folder","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"javac -cp ..\\src\\main\\java -Xlint:none -d ..\\bin ..\\src\\main\\java\\*.java","lastModifiedDate":"2020-08-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"IF ERRORLEVEL 1 (","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":" echo ********** BUILD FAILURE **********","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":" exit /b 1","lastModifiedDate":"2020-05-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":")","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":"REM no error here, errorlevel \u003d\u003d 0","lastModifiedDate":"2020-05-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"REM run the program, feed commands from input.txt file and redirect the output to the ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"HongRay"},"content":"java -classpath ..\\bin Jayne \u003c TEST.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"REM compare the output to the expected output","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"FC ACTUAL.TXT EXPECTED.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"HongRay":2,"-":17}}] diff --git a/HongRay_ip_master/commits.json b/HongRay_ip_master/commits.json index 25ce56a1..ee125942 100644 --- a/HongRay_ip_master/commits.json +++ b/HongRay_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"HongRay":[{"date":"2024-01-22","commitResults":[{"hash":"7ed79f9d915e1fde5ced004e0290f9bd3569a300","isMergeCommit":false,"messageTitle":"Testing","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":0}}},{"hash":"fe0d02eeeb6d5b031e94133774343762b8968c16","isMergeCommit":false,"messageTitle":"Testing","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"5f8a3515fd15533b5dd211a6c1777513affde9e0","isMergeCommit":false,"messageTitle":"Level-0: Rename, Greet, Exit","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":9,"deletions":0}}},{"hash":"2e9487dce036629d3425290e4ca55c7ed46925fc","isMergeCommit":false,"messageTitle":"Level-1: Echo","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":17,"deletions":1}}},{"hash":"4e2029d26b77d1e5b0b8beef8145435f0bf6647d","isMergeCommit":false,"messageTitle":"Level-0","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":17}}},{"hash":"bc281f62a15c17a88f58efd5486b7d2b2e5a2de7","isMergeCommit":false,"messageTitle":"Level-1","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":17,"deletions":1}}},{"hash":"09f54f3fcdec0ec026c65443858b59c4ebaaf047","isMergeCommit":false,"messageTitle":"Level-2","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":31,"deletions":4}}},{"hash":"c8f3deb78408962b908601e48875f6f04abf3e24","isMergeCommit":false,"messageTitle":"Level-2","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":2}}},{"hash":"328563673d4ba3109553639378e9d003daccfee0","isMergeCommit":false,"messageTitle":"Level-3","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":66,"deletions":5}}},{"hash":"fffe9ba9a86eb0d2c9e575fff7bdfa5fd199aa3a","isMergeCommit":false,"messageTitle":"Level-4","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"java":{"insertions":80,"deletions":9}}}]},{"date":"2024-01-23","commitResults":[{"hash":"2fb99d263ff302a7197db3694f3c7eb44c101620","isMergeCommit":false,"messageTitle":"A-TextUiTesting","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"txt":{"insertions":11,"deletions":0},"java":{"insertions":10,"deletions":10},"bat":{"insertions":1,"deletions":4}}}]},{"date":"2024-01-24","commitResults":[{"hash":"c93c7e2f448bff8aea5deb9b8f68463eccd2d760","isMergeCommit":false,"messageTitle":"Level-5","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"txt":{"insertions":14,"deletions":0},"java":{"insertions":170,"deletions":65},"bat":{"insertions":1,"deletions":0}}},{"hash":"d2bbe2dd7eef0627ad2e1e355c489cf1a382eb5d","isMergeCommit":false,"messageTitle":"Level-6","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":0},"java":{"insertions":50,"deletions":4}}}]}]},"authorFileTypeContributionMap":{"HongRay":{"java":346,"md":0,"fxml":0,"sh":0,"bat":2,"gradle":0,"txt":29}},"authorContributionVariance":{"HongRay":17428.584},"authorDisplayNameMap":{"HongRay":"CS2103T-W13-3 NG H.. RAY"}} +{"authorDailyContributionsMap":{"HongRay":[{"date":"2024-01-22","commitResults":[{"hash":"7ed79f9d915e1fde5ced004e0290f9bd3569a300","isMergeCommit":false,"messageTitle":"Testing","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":0}}},{"hash":"fe0d02eeeb6d5b031e94133774343762b8968c16","isMergeCommit":false,"messageTitle":"Testing","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"5f8a3515fd15533b5dd211a6c1777513affde9e0","isMergeCommit":false,"messageTitle":"Level-0: Rename, Greet, Exit","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":9,"deletions":0}}},{"hash":"2e9487dce036629d3425290e4ca55c7ed46925fc","isMergeCommit":false,"messageTitle":"Level-1: Echo","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":17,"deletions":1}}},{"hash":"4e2029d26b77d1e5b0b8beef8145435f0bf6647d","isMergeCommit":false,"messageTitle":"Level-0","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":17}}},{"hash":"bc281f62a15c17a88f58efd5486b7d2b2e5a2de7","isMergeCommit":false,"messageTitle":"Level-1","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":17,"deletions":1}}},{"hash":"09f54f3fcdec0ec026c65443858b59c4ebaaf047","isMergeCommit":false,"messageTitle":"Level-2","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":31,"deletions":4}}},{"hash":"c8f3deb78408962b908601e48875f6f04abf3e24","isMergeCommit":false,"messageTitle":"Level-2","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":2}}},{"hash":"328563673d4ba3109553639378e9d003daccfee0","isMergeCommit":false,"messageTitle":"Level-3","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":66,"deletions":5}}},{"hash":"fffe9ba9a86eb0d2c9e575fff7bdfa5fd199aa3a","isMergeCommit":false,"messageTitle":"Level-4","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"java":{"insertions":80,"deletions":9}}}]},{"date":"2024-01-23","commitResults":[{"hash":"2fb99d263ff302a7197db3694f3c7eb44c101620","isMergeCommit":false,"messageTitle":"A-TextUiTesting","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"txt":{"insertions":11,"deletions":0},"java":{"insertions":10,"deletions":10},"bat":{"insertions":1,"deletions":4}}}]},{"date":"2024-01-24","commitResults":[{"hash":"c93c7e2f448bff8aea5deb9b8f68463eccd2d760","isMergeCommit":false,"messageTitle":"Level-5","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"txt":{"insertions":14,"deletions":0},"java":{"insertions":170,"deletions":65},"bat":{"insertions":1,"deletions":0}}},{"hash":"d2bbe2dd7eef0627ad2e1e355c489cf1a382eb5d","isMergeCommit":false,"messageTitle":"Level-6","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":0},"java":{"insertions":50,"deletions":4}}}]},{"date":"2024-01-30","commitResults":[{"hash":"ba842f34415f2cde6ba20e82a5ec00508ec64fd3","isMergeCommit":false,"messageTitle":"Level-7","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":167,"deletions":4},"bat":{"insertions":1,"deletions":1},"sh":{"insertions":0,"deletions":38}}},{"hash":"04658cc0821d533c35216635ede9b6445ee63557","isMergeCommit":false,"messageTitle":"Add test files","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"txt":{"insertions":10,"deletions":0}}},{"hash":"142d38f48502ccd0fb446ba3dd6dff06f1319666","isMergeCommit":false,"messageTitle":"Level-8","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":36,"deletions":5}}},{"hash":"0b8a8b97662943cec23c9038c0feaebb8c67a3a2","isMergeCommit":false,"messageTitle":"Level-8","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"60823a1ea2a98e086e51993e84bcf1cbcf10588e","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"HongRay":{"java":540,"md":0,"fxml":0,"sh":0,"bat":2,"gradle":0,"txt":39}},"authorContributionVariance":{"HongRay":14380.8545},"authorDisplayNameMap":{"HongRay":"CS2103T-W13-3 NG H.. RAY"}} diff --git a/HusseinSafwan02_ip_master/authorship.json b/HusseinSafwan02_ip_master/authorship.json index 1b494e9d..2e423d34 100644 --- a/HusseinSafwan02_ip_master/authorship.json +++ b/HusseinSafwan02_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"HusseinSafwan02"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"HusseinSafwan02"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":4,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2019-07-29"},{"lineNumber":5,"author":{"gitId":"HusseinSafwan02"},"content":" String cat \u003d \"(\\\\_/)\\n\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"HusseinSafwan02"},"content":" \"( •,•)\\n\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"HusseinSafwan02"},"content":" \"(\\\")_(\\\")\";","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"HusseinSafwan02"},"content":" System.out.println(\"RAWR!\\n\" + cat);","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"HusseinSafwan02"},"content":" String intro \u003d \"____________________________________________________________\\r\\n\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"HusseinSafwan02"},"content":" \" Hello! I\u0027m Mickey\\n\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"HusseinSafwan02"},"content":" \" What can I do for you?\\n\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"HusseinSafwan02"},"content":" \"____________________________________________________________\\r\\n\";","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"HusseinSafwan02"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"HusseinSafwan02"},"content":" String outro \u003d \"____________________________________________________________\\r\\n\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"HusseinSafwan02"},"content":" \" Bye. See you soon!\\n\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"HusseinSafwan02"},"content":" \"____________________________________________________________\\r\\n\";","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"HusseinSafwan02"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"HusseinSafwan02"},"content":" System.out.println(intro);","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"HusseinSafwan02"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"HusseinSafwan02"},"content":" Scanner sc \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"HusseinSafwan02"},"content":" String userInput;","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"HusseinSafwan02"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"HusseinSafwan02"},"content":" while(true) {","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"HusseinSafwan02"},"content":" userInput \u003d sc.nextLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"HusseinSafwan02"},"content":" if (userInput.equals(\"bye\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"HusseinSafwan02"},"content":" System.out.println(outro);","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"HusseinSafwan02"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"HusseinSafwan02"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"HusseinSafwan02"},"content":" System.out.println(userInput);","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"HusseinSafwan02"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"HusseinSafwan02"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"HusseinSafwan02"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":34,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"HusseinSafwan02":30,"-":4}}] +[{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"HusseinSafwan02"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"HusseinSafwan02"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":4,"author":{"gitId":"HusseinSafwan02"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"HusseinSafwan02"},"content":" public static String addComment (String task) {","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"HusseinSafwan02"},"content":" return \"____________________________________________________________\\r\\n\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"HusseinSafwan02"},"content":" \" Added: \" + task + \"\\n\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"HusseinSafwan02"},"content":" \"____________________________________________________________\\r\\n\";","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"HusseinSafwan02"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"HusseinSafwan02"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"HusseinSafwan02"},"content":" public static void listTasks(String[] taskList, int count) {","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"HusseinSafwan02"},"content":" for (int i \u003d 0; i \u003c count; i++ ) {","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"HusseinSafwan02"},"content":" int number \u003d i + 1;","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"HusseinSafwan02"},"content":" String result \u003d number + \". \" + taskList[i];","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"HusseinSafwan02"},"content":" System.out.println(result);","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"HusseinSafwan02"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"HusseinSafwan02"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"HusseinSafwan02"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2019-07-29"},{"lineNumber":20,"author":{"gitId":"HusseinSafwan02"},"content":" String mickey \u003d \"(\\\\_/)\\n\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"HusseinSafwan02"},"content":" \"( •,•)\\n\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"HusseinSafwan02"},"content":" \"(\\\")_(\\\")\";","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"HusseinSafwan02"},"content":" System.out.println(\"RAWR!\\n\" + mickey);","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"HusseinSafwan02"},"content":" String intro \u003d \"____________________________________________________________\\r\\n\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"HusseinSafwan02"},"content":" \" Hello! I\u0027m Mickey\\n\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"HusseinSafwan02"},"content":" \" What can I do for you?\\n\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"HusseinSafwan02"},"content":" \"____________________________________________________________\\r\\n\";","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"HusseinSafwan02"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"HusseinSafwan02"},"content":" String outro \u003d \"____________________________________________________________\\r\\n\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"HusseinSafwan02"},"content":" \" Bye. See you soon!\\n\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"HusseinSafwan02"},"content":" \"____________________________________________________________\\r\\n\";","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"HusseinSafwan02"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"HusseinSafwan02"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"HusseinSafwan02"},"content":" System.out.println(intro);","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"HusseinSafwan02"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"HusseinSafwan02"},"content":" Scanner sc \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"HusseinSafwan02"},"content":" String userInput;","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"HusseinSafwan02"},"content":" String[] tasks \u003d new String[100];","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"HusseinSafwan02"},"content":" int count \u003d 0;","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"HusseinSafwan02"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"HusseinSafwan02"},"content":" while(true) {","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"HusseinSafwan02"},"content":" userInput \u003d sc.nextLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"HusseinSafwan02"},"content":" if (userInput.equals(\"bye\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"HusseinSafwan02"},"content":" System.out.println(outro);","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"HusseinSafwan02"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"HusseinSafwan02"},"content":" } else if (userInput.equals(\"list\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"HusseinSafwan02"},"content":" System.out.print(\"____________________________________________________________\\r\\n\");","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"HusseinSafwan02"},"content":" listTasks(tasks, count);","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"HusseinSafwan02"},"content":" System.out.println(\"____________________________________________________________\\r\\n\");","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"HusseinSafwan02"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"HusseinSafwan02"},"content":" tasks[count] \u003d userInput;","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"HusseinSafwan02"},"content":" count++;","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"HusseinSafwan02"},"content":" System.out.println(addComment(userInput));","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"HusseinSafwan02"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"HusseinSafwan02"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"HusseinSafwan02"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":58,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"HusseinSafwan02":54,"-":4}}] diff --git a/HusseinSafwan02_ip_master/commits.json b/HusseinSafwan02_ip_master/commits.json index 058aadb7..d9b109f7 100644 --- a/HusseinSafwan02_ip_master/commits.json +++ b/HusseinSafwan02_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"HusseinSafwan02":[{"date":"2024-01-30","commitResults":[{"hash":"8df1c580a7ed3c407beb0b9815d312ef0fbb545d","isMergeCommit":false,"messageTitle":"Rename, Greet and Exit","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":12,"deletions":6}}},{"hash":"ad5e2fc5ec3c44dbbc7986c51ba6c3edef0fd18e","isMergeCommit":false,"messageTitle":"Echo and \"bye\"","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":22,"deletions":4}}}]}]},"authorFileTypeContributionMap":{"HusseinSafwan02":{"java":30,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":0,"txt":0}},"authorContributionVariance":{"HusseinSafwan02":147.88887},"authorDisplayNameMap":{"HusseinSafwan02":"CS2103T-T16-4 MUHA..SEIN"}} +{"authorDailyContributionsMap":{"HusseinSafwan02":[{"date":"2024-01-30","commitResults":[{"hash":"8df1c580a7ed3c407beb0b9815d312ef0fbb545d","isMergeCommit":false,"messageTitle":"Rename, Greet and Exit","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":12,"deletions":6}}},{"hash":"ad5e2fc5ec3c44dbbc7986c51ba6c3edef0fd18e","isMergeCommit":false,"messageTitle":"Echo and \"bye\"","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":22,"deletions":4}}},{"hash":"f8d119250456b5b5ff0e7256e1feb876486fe622","isMergeCommit":false,"messageTitle":"Added ability to store tasks","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":28,"deletions":4}}}]}]},"authorFileTypeContributionMap":{"HusseinSafwan02":{"java":54,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":0,"txt":0}},"authorContributionVariance":{"HusseinSafwan02":441.2222},"authorDisplayNameMap":{"HusseinSafwan02":"CS2103T-T16-4 MUHA..SEIN"}} diff --git a/Jajared_ip_master/authorship.json b/Jajared_ip_master/authorship.json index 14a16444..28551e27 100644 --- a/Jajared_ip_master/authorship.json +++ b/Jajared_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Jajared"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"Jajared"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"Jajared"},"content":" protected String by;","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"Jajared"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"Jajared"},"content":" public static Deadline createFromInput(String input) throws DukeException {","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"Jajared"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"Jajared"},"content":" String[] parts \u003d input.split(\"/by \");","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"Jajared"},"content":" String description \u003d parts[0].split(\"deadline \")[1];","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"Jajared"},"content":" String by \u003d parts[1];","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"Jajared"},"content":" return new Deadline(description, by);","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"Jajared"},"content":" } catch (ArrayIndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"Jajared"},"content":" throw new DukeException(\"Invalid deadline format. Please use \u0027deadline description /by date\u0027.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"Jajared"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"Jajared"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"Jajared"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"Jajared"},"content":" public Deadline(String description, String by) {","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"Jajared"},"content":" super(description);","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"Jajared"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"Jajared"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"Jajared"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"Jajared"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"Jajared"},"content":" public String toString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"Jajared"},"content":" return \"[D]\" + super.toString() + \" (by: \" + by + \")\";","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"Jajared"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"Jajared"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"Jajared":25}},{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Jajared"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"Jajared"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"Jajared"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":5,"author":{"gitId":"Jajared"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"Jajared"},"content":" private static ArrayList\u003cTask\u003e taskList \u003d new ArrayList\u003c\u003e();// Array of tasks","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"Jajared"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2019-07-29"},{"lineNumber":9,"author":{"gitId":"Jajared"},"content":" String input \u003d \"\";","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"Jajared"},"content":" String botName \u003d \"GeePeeTee\";","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"Jajared"},"content":" // Welcome Message","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"Jajared"},"content":" System.out.println(\"Hello! I\u0027m \" + botName + \"\\nWhat can I do for you?\");","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"Jajared"},"content":" Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"Jajared"},"content":" while (!input.equals(\"bye\")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"Jajared"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"Jajared"},"content":" input \u003d scanner.nextLine();","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"Jajared"},"content":" System.out.println(\"\\n--------------------------------------------------\");","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"Jajared"},"content":" if (input.equals(\"bye\")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"Jajared"},"content":" scanner.close();","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"Jajared"},"content":" System.out.println(\"Bye. Hope to see you again soon!\");","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"Jajared"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"Jajared"},"content":" processInput(input);","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"Jajared"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"Jajared"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"Jajared"},"content":" e.printErrorMessage();","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"Jajared"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"Jajared"},"content":" System.out.println(\"--------------------------------------------------\\n\");","lastModifiedDate":"2024-01-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":29,"author":{"gitId":"Jajared"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":30,"author":{"gitId":"Jajared"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":31,"author":{"gitId":"Jajared"},"content":" /*","lastModifiedDate":"2024-01-25"},{"lineNumber":32,"author":{"gitId":"Jajared"},"content":" * Process input","lastModifiedDate":"2024-01-25"},{"lineNumber":33,"author":{"gitId":"Jajared"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":34,"author":{"gitId":"Jajared"},"content":" private static void processInput(String input) throws DukeException {","lastModifiedDate":"2024-01-25"},{"lineNumber":35,"author":{"gitId":"Jajared"},"content":" if (input.equals(\"list\")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":36,"author":{"gitId":"Jajared"},"content":" printList(taskList);","lastModifiedDate":"2024-01-25"},{"lineNumber":37,"author":{"gitId":"Jajared"},"content":" } else if (input.startsWith(\"mark\")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":38,"author":{"gitId":"Jajared"},"content":" if (input.trim().equals(\"mark\")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":39,"author":{"gitId":"Jajared"},"content":" throw new DukeException(\"The index of a task cannot be empty.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":40,"author":{"gitId":"Jajared"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":41,"author":{"gitId":"Jajared"},"content":" int index \u003d Integer.parseInt(input.split(\" \")[1]);","lastModifiedDate":"2024-01-25"},{"lineNumber":42,"author":{"gitId":"Jajared"},"content":" if (index \u003e getTaskCount()) {","lastModifiedDate":"2024-01-25"},{"lineNumber":43,"author":{"gitId":"Jajared"},"content":" throw new DukeException(\"The index of a task cannot be greater than the number of tasks.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":44,"author":{"gitId":"Jajared"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":45,"author":{"gitId":"Jajared"},"content":" if (index \u003c\u003d 0) {","lastModifiedDate":"2024-01-25"},{"lineNumber":46,"author":{"gitId":"Jajared"},"content":" throw new DukeException(\"The index of a task cannot be 0 or negative.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":47,"author":{"gitId":"Jajared"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":48,"author":{"gitId":"Jajared"},"content":" if (taskList.get(index - 1) \u003d\u003d null) {","lastModifiedDate":"2024-01-25"},{"lineNumber":49,"author":{"gitId":"Jajared"},"content":" throw new DukeException(\"The task at index \" + index + \" does not exist.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":50,"author":{"gitId":"Jajared"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":51,"author":{"gitId":"Jajared"},"content":" taskList.get(index - 1).markAsDone();","lastModifiedDate":"2024-01-25"},{"lineNumber":52,"author":{"gitId":"Jajared"},"content":" } else if (input.startsWith(\"unmark\")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":53,"author":{"gitId":"Jajared"},"content":" if (input.trim().equals(\"unmark\")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":54,"author":{"gitId":"Jajared"},"content":" throw new DukeException(\"The index of a task cannot be empty.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":55,"author":{"gitId":"Jajared"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":56,"author":{"gitId":"Jajared"},"content":" int index \u003d Integer.parseInt(input.split(\" \")[1]);","lastModifiedDate":"2024-01-25"},{"lineNumber":57,"author":{"gitId":"Jajared"},"content":" if (index \u003e getTaskCount()) {","lastModifiedDate":"2024-01-25"},{"lineNumber":58,"author":{"gitId":"Jajared"},"content":" throw new DukeException(\"The index of a task cannot be greater than the number of tasks.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":59,"author":{"gitId":"Jajared"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":60,"author":{"gitId":"Jajared"},"content":" if (index \u003c\u003d 0) {","lastModifiedDate":"2024-01-25"},{"lineNumber":61,"author":{"gitId":"Jajared"},"content":" throw new DukeException(\"The index of a task cannot be 0 or negative.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":62,"author":{"gitId":"Jajared"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":63,"author":{"gitId":"Jajared"},"content":" if (taskList.get(index - 1) \u003d\u003d null) {","lastModifiedDate":"2024-01-25"},{"lineNumber":64,"author":{"gitId":"Jajared"},"content":" throw new DukeException(\"The task at index \" + index + \" does not exist.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":65,"author":{"gitId":"Jajared"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":66,"author":{"gitId":"Jajared"},"content":" taskList.get(index - 1).unmarkAsDone();","lastModifiedDate":"2024-01-25"},{"lineNumber":67,"author":{"gitId":"Jajared"},"content":" } else if (input.startsWith(\"delete\")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":68,"author":{"gitId":"Jajared"},"content":" if (input.trim().equals(\"delete\")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":69,"author":{"gitId":"Jajared"},"content":" throw new DukeException(\"The index of a task cannot be empty.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":70,"author":{"gitId":"Jajared"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":71,"author":{"gitId":"Jajared"},"content":" int index \u003d Integer.parseInt(input.split(\" \")[1]);","lastModifiedDate":"2024-01-25"},{"lineNumber":72,"author":{"gitId":"Jajared"},"content":" if (index \u003e getTaskCount()) {","lastModifiedDate":"2024-01-25"},{"lineNumber":73,"author":{"gitId":"Jajared"},"content":" throw new DukeException(\"The index of a task cannot be greater than the number of tasks.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":74,"author":{"gitId":"Jajared"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":75,"author":{"gitId":"Jajared"},"content":" if (index \u003c\u003d 0) {","lastModifiedDate":"2024-01-25"},{"lineNumber":76,"author":{"gitId":"Jajared"},"content":" throw new DukeException(\"The index of a task cannot be 0 or negative.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":77,"author":{"gitId":"Jajared"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":78,"author":{"gitId":"Jajared"},"content":" if (taskList.get(index - 1) \u003d\u003d null) {","lastModifiedDate":"2024-01-25"},{"lineNumber":79,"author":{"gitId":"Jajared"},"content":" throw new DukeException(\"The task at index \" + index + \" does not exist.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":80,"author":{"gitId":"Jajared"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":81,"author":{"gitId":"Jajared"},"content":" removeTask(index);","lastModifiedDate":"2024-01-25"},{"lineNumber":82,"author":{"gitId":"Jajared"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":83,"author":{"gitId":"Jajared"},"content":" } else if (input.startsWith(\"event\")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":84,"author":{"gitId":"Jajared"},"content":" Event newEvent \u003d Event.createFromInput(input);","lastModifiedDate":"2024-01-25"},{"lineNumber":85,"author":{"gitId":"Jajared"},"content":" addTask(newEvent);","lastModifiedDate":"2024-01-25"},{"lineNumber":86,"author":{"gitId":"Jajared"},"content":" } else if (input.startsWith(\"deadline\")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":87,"author":{"gitId":"Jajared"},"content":" Deadline newDeadline \u003d Deadline.createFromInput(input);","lastModifiedDate":"2024-01-25"},{"lineNumber":88,"author":{"gitId":"Jajared"},"content":" addTask(newDeadline);","lastModifiedDate":"2024-01-25"},{"lineNumber":89,"author":{"gitId":"Jajared"},"content":" } else if (input.startsWith(\"todo\")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":90,"author":{"gitId":"Jajared"},"content":" ToDo newToDo \u003d ToDo.createFromInput(input);","lastModifiedDate":"2024-01-25"},{"lineNumber":91,"author":{"gitId":"Jajared"},"content":" addTask(newToDo);","lastModifiedDate":"2024-01-25"},{"lineNumber":92,"author":{"gitId":"Jajared"},"content":" } else {","lastModifiedDate":"2024-01-25"},{"lineNumber":93,"author":{"gitId":"Jajared"},"content":" throw new DukeException(\"I\u0027m sorry, but I don\u0027t know what that means :-(\");","lastModifiedDate":"2024-01-25"},{"lineNumber":94,"author":{"gitId":"Jajared"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":96,"author":{"gitId":"Jajared"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":97,"author":{"gitId":"Jajared"},"content":" /*","lastModifiedDate":"2024-01-25"},{"lineNumber":98,"author":{"gitId":"Jajared"},"content":" * Prints the list of tasks","lastModifiedDate":"2024-01-25"},{"lineNumber":99,"author":{"gitId":"Jajared"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":100,"author":{"gitId":"Jajared"},"content":" private static void printList(ArrayList\u003cTask\u003e list) {","lastModifiedDate":"2024-01-25"},{"lineNumber":101,"author":{"gitId":"Jajared"},"content":" System.out.println(\"Here are the tasks in your list:\");","lastModifiedDate":"2024-01-25"},{"lineNumber":102,"author":{"gitId":"Jajared"},"content":" for (int i \u003d 0; i \u003c list.size(); i++) {","lastModifiedDate":"2024-01-25"},{"lineNumber":103,"author":{"gitId":"Jajared"},"content":" System.out.println((i + 1) + \". \" + list.get(i));","lastModifiedDate":"2024-01-25"},{"lineNumber":104,"author":{"gitId":"Jajared"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":105,"author":{"gitId":"Jajared"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":106,"author":{"gitId":"Jajared"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":107,"author":{"gitId":"Jajared"},"content":" /*","lastModifiedDate":"2024-01-25"},{"lineNumber":108,"author":{"gitId":"Jajared"},"content":" * Returns the number of tasks in the list","lastModifiedDate":"2024-01-25"},{"lineNumber":109,"author":{"gitId":"Jajared"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":110,"author":{"gitId":"Jajared"},"content":" private static int getTaskCount() {","lastModifiedDate":"2024-01-25"},{"lineNumber":111,"author":{"gitId":"Jajared"},"content":" return taskList.size();","lastModifiedDate":"2024-01-25"},{"lineNumber":112,"author":{"gitId":"Jajared"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":113,"author":{"gitId":"Jajared"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":114,"author":{"gitId":"Jajared"},"content":" /*","lastModifiedDate":"2024-01-25"},{"lineNumber":115,"author":{"gitId":"Jajared"},"content":" * Return number of task message","lastModifiedDate":"2024-01-25"},{"lineNumber":116,"author":{"gitId":"Jajared"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":117,"author":{"gitId":"Jajared"},"content":" private static String getTaskCountMessage() {","lastModifiedDate":"2024-01-25"},{"lineNumber":118,"author":{"gitId":"Jajared"},"content":" if (getTaskCount() \u003d\u003d 1) {","lastModifiedDate":"2024-01-25"},{"lineNumber":119,"author":{"gitId":"Jajared"},"content":" return \"Now you have \" + getTaskCount() + \" task in the list.\";","lastModifiedDate":"2024-01-25"},{"lineNumber":120,"author":{"gitId":"Jajared"},"content":" } else {","lastModifiedDate":"2024-01-25"},{"lineNumber":121,"author":{"gitId":"Jajared"},"content":" return \"Now you have \" + getTaskCount() + \" tasks in the list.\";","lastModifiedDate":"2024-01-25"},{"lineNumber":122,"author":{"gitId":"Jajared"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":123,"author":{"gitId":"Jajared"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":124,"author":{"gitId":"Jajared"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":125,"author":{"gitId":"Jajared"},"content":" /*","lastModifiedDate":"2024-01-25"},{"lineNumber":126,"author":{"gitId":"Jajared"},"content":" * Adds a task to the list","lastModifiedDate":"2024-01-25"},{"lineNumber":127,"author":{"gitId":"Jajared"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":128,"author":{"gitId":"Jajared"},"content":" private static void addTask(Task task) {","lastModifiedDate":"2024-01-25"},{"lineNumber":129,"author":{"gitId":"Jajared"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2024-01-25"},{"lineNumber":130,"author":{"gitId":"Jajared"},"content":" taskList.add(task);","lastModifiedDate":"2024-01-25"},{"lineNumber":131,"author":{"gitId":"Jajared"},"content":" System.out.println(task);","lastModifiedDate":"2024-01-25"},{"lineNumber":132,"author":{"gitId":"Jajared"},"content":" System.out.println(getTaskCountMessage());","lastModifiedDate":"2024-01-25"},{"lineNumber":133,"author":{"gitId":"Jajared"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":134,"author":{"gitId":"Jajared"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":135,"author":{"gitId":"Jajared"},"content":" /*","lastModifiedDate":"2024-01-25"},{"lineNumber":136,"author":{"gitId":"Jajared"},"content":" * Removes a task from the list","lastModifiedDate":"2024-01-25"},{"lineNumber":137,"author":{"gitId":"Jajared"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":138,"author":{"gitId":"Jajared"},"content":" private static void removeTask(int index) {","lastModifiedDate":"2024-01-25"},{"lineNumber":139,"author":{"gitId":"Jajared"},"content":" System.out.println(\"Noted. I\u0027ve removed this task:\");","lastModifiedDate":"2024-01-25"},{"lineNumber":140,"author":{"gitId":"Jajared"},"content":" System.out.println(taskList.get(index - 1));","lastModifiedDate":"2024-01-25"},{"lineNumber":141,"author":{"gitId":"Jajared"},"content":" taskList.remove(index - 1);","lastModifiedDate":"2024-01-25"},{"lineNumber":142,"author":{"gitId":"Jajared"},"content":" System.out.println(getTaskCountMessage());","lastModifiedDate":"2024-01-25"},{"lineNumber":143,"author":{"gitId":"Jajared"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":144,"author":{"gitId":"Jajared"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":145,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"Jajared":140,"-":5}},{"path":"src/main/java/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Jajared"},"content":"public class DukeException extends Exception {","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"Jajared"},"content":" public DukeException(String message) {","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"Jajared"},"content":" super(message);","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"Jajared"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"Jajared"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"Jajared"},"content":" public void printErrorMessage() {","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"Jajared"},"content":" System.out.println(getMessage());","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"Jajared"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"Jajared"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"Jajared":9}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Jajared"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"Jajared"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"Jajared"},"content":" protected String at;","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"Jajared"},"content":" protected String by;","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"Jajared"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"Jajared"},"content":" public static Event createFromInput(String input) throws DukeException {","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"Jajared"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"Jajared"},"content":" String[] parts \u003d input.split(\"/from | /to \");","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"Jajared"},"content":" String description \u003d parts[0].split(\"event \")[1];","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"Jajared"},"content":" String at \u003d parts[1];","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"Jajared"},"content":" String by \u003d parts[2];","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"Jajared"},"content":" return new Event(description, at, by);","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"Jajared"},"content":" } catch (ArrayIndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"Jajared"},"content":" throw new DukeException(\"Invalid event format. Please use \u0027event description /from start /to end\u0027.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"Jajared"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"Jajared"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"Jajared"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"Jajared"},"content":" public Event(String description, String at, String by) {","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"Jajared"},"content":" super(description);","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"Jajared"},"content":" this.at \u003d at;","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"Jajared"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"Jajared"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"Jajared"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"Jajared"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"Jajared"},"content":" public String toString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"Jajared"},"content":" return \"[E]\" + super.toString() + \" (from: \" + at + \" to: \" + by + \")\";","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"Jajared"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":28,"author":{"gitId":"Jajared"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"Jajared":28}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Jajared"},"content":"public class Task {","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"Jajared"},"content":" protected String description;","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"Jajared"},"content":" protected boolean isDone;","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"Jajared"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"Jajared"},"content":" public Task(String description) {","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"Jajared"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"Jajared"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"Jajared"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"Jajared"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"Jajared"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"Jajared"},"content":" return (isDone ? \"X\" : \" \"); // mark done task with X","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"Jajared"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"Jajared"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"Jajared"},"content":" public void markAsDone() {","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"Jajared"},"content":" this.isDone \u003d true;","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"Jajared"},"content":" System.out.println(\"Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"Jajared"},"content":" System.out.println(this);","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"Jajared"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"Jajared"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"Jajared"},"content":" public void unmarkAsDone() {","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"Jajared"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"Jajared"},"content":" System.out.println(\"OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"Jajared"},"content":" System.out.println(this);","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"Jajared"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"Jajared"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"Jajared"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"Jajared"},"content":" public String toString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":28,"author":{"gitId":"Jajared"},"content":" return \"[\" + this.getStatusIcon() + \"] \" + this.description;","lastModifiedDate":"2024-01-25"},{"lineNumber":29,"author":{"gitId":"Jajared"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":30,"author":{"gitId":"Jajared"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":31,"author":{"gitId":"Jajared"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"Jajared":31}},{"path":"src/main/java/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Jajared"},"content":"public class ToDo extends Task {","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"Jajared"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"Jajared"},"content":" public static ToDo createFromInput(String input) throws DukeException {","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"Jajared"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"Jajared"},"content":" String description \u003d input.split(\"todo \")[1];","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"Jajared"},"content":" return new ToDo(description);","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"Jajared"},"content":" } catch (ArrayIndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"Jajared"},"content":" throw new DukeException(\"Invalid todo format. Please use \u0027todo description\u0027.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"Jajared"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"Jajared"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"Jajared"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"Jajared"},"content":" public ToDo(String description) {","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"Jajared"},"content":" super(description);","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"Jajared"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"Jajared"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"Jajared"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"Jajared"},"content":" public String toString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"Jajared"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"Jajared"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"Jajared"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"Jajared":20}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"Jajared"},"content":"todo borrow book","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"Jajared"},"content":"list","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"Jajared"},"content":"deadline return book /by Sunday","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"Jajared"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"Jajared"},"content":"mark 2","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"Jajared"},"content":"list","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"Jajared"},"content":"bye","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"Jajared":7}}] +[{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Jajared"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"Jajared"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"Jajared"},"content":" protected String by;","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"Jajared"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"Jajared"},"content":" public static Deadline createFromInput(String input) throws DukeException {","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"Jajared"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"Jajared"},"content":" String[] parts \u003d input.split(\"/by \");","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"Jajared"},"content":" String description \u003d parts[0].split(\"deadline \")[1];","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"Jajared"},"content":" String by \u003d parts[1];","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"Jajared"},"content":" return new Deadline(description, by);","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"Jajared"},"content":" } catch (ArrayIndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"Jajared"},"content":" throw new DukeException(\"Invalid deadline format. Please use \u0027deadline description /by date\u0027.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"Jajared"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"Jajared"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"Jajared"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"Jajared"},"content":" public Deadline(String description, String by) {","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"Jajared"},"content":" super(description);","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"Jajared"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"Jajared"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"Jajared"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"Jajared"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"Jajared"},"content":" public String toString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"Jajared"},"content":" return \"[D]\" + super.toString() + \" (by: \" + by + \")\";","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"Jajared"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"Jajared"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"Jajared"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"Jajared"},"content":" public String toFileString() {","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"Jajared"},"content":" return \"D | \" + (this.isDone ? \"1\" : \"0\") + \" | \" + description + \" | \" + by;","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"Jajared"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"Jajared"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"Jajared":30}},{"path":"src/main/java/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Jajared"},"content":"public class DukeException extends Exception {","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"Jajared"},"content":" public DukeException(String message) {","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"Jajared"},"content":" super(message);","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"Jajared"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"Jajared"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"Jajared"},"content":" public void printErrorMessage() {","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"Jajared"},"content":" System.out.println(getMessage());","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"Jajared"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"Jajared"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"Jajared":9}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Jajared"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"Jajared"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"Jajared"},"content":" protected String at;","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"Jajared"},"content":" protected String by;","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"Jajared"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"Jajared"},"content":" public static Event createFromInput(String input) throws DukeException {","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"Jajared"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"Jajared"},"content":" String[] parts \u003d input.split(\"/from | /to \");","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"Jajared"},"content":" String description \u003d parts[0].split(\"event \")[1];","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"Jajared"},"content":" String at \u003d parts[1];","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"Jajared"},"content":" String by \u003d parts[2];","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"Jajared"},"content":" return new Event(description, at, by);","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"Jajared"},"content":" } catch (ArrayIndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"Jajared"},"content":" throw new DukeException(\"Invalid event format. Please use \u0027event description /from start /to end\u0027.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"Jajared"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"Jajared"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"Jajared"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"Jajared"},"content":" public Event(String description, String at, String by) {","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"Jajared"},"content":" super(description);","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"Jajared"},"content":" this.at \u003d at;","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"Jajared"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"Jajared"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"Jajared"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"Jajared"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"Jajared"},"content":" public String toString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"Jajared"},"content":" return \"[E]\" + super.toString() + \" (from: \" + at + \" to: \" + by + \")\";","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"Jajared"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":28,"author":{"gitId":"Jajared"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"Jajared"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"Jajared"},"content":" public String toFileString() {","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"Jajared"},"content":" return \"E | \" + (this.isDone ? \"1\" : \"0\") + \" | \" + description + \" | \" + at + \" | \" + by;","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"Jajared"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"Jajared"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"Jajared":33}},{"path":"src/main/java/GeePeeTee.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Jajared"},"content":"import java.io.File;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Jajared"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"Jajared"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"Jajared"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"Jajared"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"Jajared"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"Jajared"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"Jajared"},"content":"public class GeePeeTee {","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"Jajared"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"Jajared"},"content":" private static ArrayList\u003cTask\u003e taskList \u003d new ArrayList\u003c\u003e();// Array of tasks","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"Jajared"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"Jajared"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"Jajared"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"Jajared"},"content":" taskList \u003d loadTaskList();","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"Jajared"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"Jajared"},"content":" System.out.println(\"File not found.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"Jajared"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"Jajared"},"content":" System.out.println(\"Error loading the task list file.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"Jajared"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"Jajared"},"content":" e.printErrorMessage();","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"Jajared"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"Jajared"},"content":" String input \u003d \"\";","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"Jajared"},"content":" String botName \u003d \"GeePeeTee\";","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"Jajared"},"content":" // Welcome Message","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"Jajared"},"content":" System.out.println(\"Hello! I\u0027m \" + botName + \"\\nWhat can I do for you?\");","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"Jajared"},"content":" Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"Jajared"},"content":" while (!input.equals(\"bye\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"Jajared"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"Jajared"},"content":" input \u003d scanner.nextLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"Jajared"},"content":" System.out.println(\"\\n--------------------------------------------------\");","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"Jajared"},"content":" if (input.equals(\"bye\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"Jajared"},"content":" scanner.close();","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"Jajared"},"content":" System.out.println(\"Bye. Hope to see you again soon!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"Jajared"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"Jajared"},"content":" processInput(input);","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"Jajared"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"Jajared"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"Jajared"},"content":" e.printErrorMessage();","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"Jajared"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"Jajared"},"content":" System.out.println(\"--------------------------------------------------\\n\");","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"Jajared"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"Jajared"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"Jajared"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"Jajared"},"content":" /*","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"Jajared"},"content":" * Process input","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"Jajared"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"Jajared"},"content":" private static void processInput(String input) throws DukeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"Jajared"},"content":" String command \u003d input.split(\" \")[0];","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"Jajared"},"content":" switch (command) {","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"Jajared"},"content":" // Help command","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"Jajared"},"content":" case \"help\":","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"Jajared"},"content":" getListOfCommands();","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"Jajared"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"Jajared"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"Jajared"},"content":" // Bye command","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"Jajared"},"content":" case \"bye\":","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"Jajared"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"Jajared"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":59,"author":{"gitId":"Jajared"},"content":" // List command","lastModifiedDate":"2024-01-30"},{"lineNumber":60,"author":{"gitId":"Jajared"},"content":" case \"list\":","lastModifiedDate":"2024-01-30"},{"lineNumber":61,"author":{"gitId":"Jajared"},"content":" printList(taskList);","lastModifiedDate":"2024-01-30"},{"lineNumber":62,"author":{"gitId":"Jajared"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":63,"author":{"gitId":"Jajared"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":64,"author":{"gitId":"Jajared"},"content":" // Mark command","lastModifiedDate":"2024-01-30"},{"lineNumber":65,"author":{"gitId":"Jajared"},"content":" case \"mark\":","lastModifiedDate":"2024-01-30"},{"lineNumber":66,"author":{"gitId":"Jajared"},"content":" if (input.trim().equals(\"mark\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":67,"author":{"gitId":"Jajared"},"content":" throw new DukeException(\"The index of a task cannot be empty.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":68,"author":{"gitId":"Jajared"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":69,"author":{"gitId":"Jajared"},"content":" int markIndex \u003d Integer.parseInt(input.split(\" \")[1]);","lastModifiedDate":"2024-01-30"},{"lineNumber":70,"author":{"gitId":"Jajared"},"content":" if (markIndex \u003e getTaskCount()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":71,"author":{"gitId":"Jajared"},"content":" throw new DukeException(\"The index of a task cannot be greater than the number of tasks.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":72,"author":{"gitId":"Jajared"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":73,"author":{"gitId":"Jajared"},"content":" if (markIndex \u003c\u003d 0) {","lastModifiedDate":"2024-01-30"},{"lineNumber":74,"author":{"gitId":"Jajared"},"content":" throw new DukeException(\"The index of a task cannot be 0 or negative.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":75,"author":{"gitId":"Jajared"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":76,"author":{"gitId":"Jajared"},"content":" Task taskToMark \u003d taskList.get(markIndex - 1);","lastModifiedDate":"2024-01-30"},{"lineNumber":77,"author":{"gitId":"Jajared"},"content":" if (taskToMark \u003d\u003d null) {","lastModifiedDate":"2024-01-30"},{"lineNumber":78,"author":{"gitId":"Jajared"},"content":" throw new DukeException(\"The task at index \" + markIndex + \" does not exist.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":79,"author":{"gitId":"Jajared"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":80,"author":{"gitId":"Jajared"},"content":" taskToMark.markAsDone();","lastModifiedDate":"2024-01-30"},{"lineNumber":81,"author":{"gitId":"Jajared"},"content":" System.out.println(\"Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2024-01-30"},{"lineNumber":82,"author":{"gitId":"Jajared"},"content":" System.out.println(taskToMark);","lastModifiedDate":"2024-01-30"},{"lineNumber":83,"author":{"gitId":"Jajared"},"content":" saveTaskList();","lastModifiedDate":"2024-01-30"},{"lineNumber":84,"author":{"gitId":"Jajared"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":85,"author":{"gitId":"Jajared"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":86,"author":{"gitId":"Jajared"},"content":" // Unmark command","lastModifiedDate":"2024-01-30"},{"lineNumber":87,"author":{"gitId":"Jajared"},"content":" case \"unmark\":","lastModifiedDate":"2024-01-30"},{"lineNumber":88,"author":{"gitId":"Jajared"},"content":" if (input.trim().equals(\"unmark\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":89,"author":{"gitId":"Jajared"},"content":" throw new DukeException(\"The index of a task cannot be empty.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":90,"author":{"gitId":"Jajared"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":91,"author":{"gitId":"Jajared"},"content":" int unmarkIndex \u003d Integer.parseInt(input.split(\" \")[1]);","lastModifiedDate":"2024-01-30"},{"lineNumber":92,"author":{"gitId":"Jajared"},"content":" if (unmarkIndex \u003e getTaskCount()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":93,"author":{"gitId":"Jajared"},"content":" throw new DukeException(\"The index of a task cannot be greater than the number of tasks.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":94,"author":{"gitId":"Jajared"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":95,"author":{"gitId":"Jajared"},"content":" if (unmarkIndex \u003c\u003d 0) {","lastModifiedDate":"2024-01-30"},{"lineNumber":96,"author":{"gitId":"Jajared"},"content":" throw new DukeException(\"The index of a task cannot be 0 or negative.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":97,"author":{"gitId":"Jajared"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":98,"author":{"gitId":"Jajared"},"content":" Task taskToUnmark \u003d taskList.get(unmarkIndex - 1);","lastModifiedDate":"2024-01-30"},{"lineNumber":99,"author":{"gitId":"Jajared"},"content":" if (taskToUnmark \u003d\u003d null) {","lastModifiedDate":"2024-01-30"},{"lineNumber":100,"author":{"gitId":"Jajared"},"content":" throw new DukeException(\"The task at index \" + unmarkIndex + \" does not exist.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":101,"author":{"gitId":"Jajared"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":102,"author":{"gitId":"Jajared"},"content":" taskToUnmark.unmarkAsDone();","lastModifiedDate":"2024-01-30"},{"lineNumber":103,"author":{"gitId":"Jajared"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":104,"author":{"gitId":"Jajared"},"content":" System.out.println(\"OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2024-01-30"},{"lineNumber":105,"author":{"gitId":"Jajared"},"content":" System.out.println(taskToUnmark);","lastModifiedDate":"2024-01-30"},{"lineNumber":106,"author":{"gitId":"Jajared"},"content":" saveTaskList();","lastModifiedDate":"2024-01-30"},{"lineNumber":107,"author":{"gitId":"Jajared"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":108,"author":{"gitId":"Jajared"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":109,"author":{"gitId":"Jajared"},"content":" // Delete command","lastModifiedDate":"2024-01-30"},{"lineNumber":110,"author":{"gitId":"Jajared"},"content":" case \"delete\":","lastModifiedDate":"2024-01-30"},{"lineNumber":111,"author":{"gitId":"Jajared"},"content":" if (input.trim().equals(\"delete\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":112,"author":{"gitId":"Jajared"},"content":" throw new DukeException(\"The index of a task cannot be empty.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":113,"author":{"gitId":"Jajared"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":114,"author":{"gitId":"Jajared"},"content":" int index \u003d Integer.parseInt(input.split(\" \")[1]);","lastModifiedDate":"2024-01-30"},{"lineNumber":115,"author":{"gitId":"Jajared"},"content":" if (index \u003e getTaskCount()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":116,"author":{"gitId":"Jajared"},"content":" throw new DukeException(\"The index of a task cannot be greater than the number of tasks.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":117,"author":{"gitId":"Jajared"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":118,"author":{"gitId":"Jajared"},"content":" if (index \u003c\u003d 0) {","lastModifiedDate":"2024-01-30"},{"lineNumber":119,"author":{"gitId":"Jajared"},"content":" throw new DukeException(\"The index of a task cannot be 0 or negative.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":120,"author":{"gitId":"Jajared"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":121,"author":{"gitId":"Jajared"},"content":" if (taskList.get(index - 1) \u003d\u003d null) {","lastModifiedDate":"2024-01-30"},{"lineNumber":122,"author":{"gitId":"Jajared"},"content":" throw new DukeException(\"The task at index \" + index + \" does not exist.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":123,"author":{"gitId":"Jajared"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":124,"author":{"gitId":"Jajared"},"content":" removeTask(index);","lastModifiedDate":"2024-01-30"},{"lineNumber":125,"author":{"gitId":"Jajared"},"content":" saveTaskList();","lastModifiedDate":"2024-01-30"},{"lineNumber":126,"author":{"gitId":"Jajared"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":127,"author":{"gitId":"Jajared"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":128,"author":{"gitId":"Jajared"},"content":" // Create event command","lastModifiedDate":"2024-01-30"},{"lineNumber":129,"author":{"gitId":"Jajared"},"content":" case \"event\":","lastModifiedDate":"2024-01-30"},{"lineNumber":130,"author":{"gitId":"Jajared"},"content":" Event newEvent \u003d Event.createFromInput(input);","lastModifiedDate":"2024-01-30"},{"lineNumber":131,"author":{"gitId":"Jajared"},"content":" addTask(newEvent);","lastModifiedDate":"2024-01-30"},{"lineNumber":132,"author":{"gitId":"Jajared"},"content":" saveTaskList();","lastModifiedDate":"2024-01-30"},{"lineNumber":133,"author":{"gitId":"Jajared"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":134,"author":{"gitId":"Jajared"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":135,"author":{"gitId":"Jajared"},"content":" // Create deadline command","lastModifiedDate":"2024-01-30"},{"lineNumber":136,"author":{"gitId":"Jajared"},"content":" case \"deadline\":","lastModifiedDate":"2024-01-30"},{"lineNumber":137,"author":{"gitId":"Jajared"},"content":" Deadline newDeadline \u003d Deadline.createFromInput(input);","lastModifiedDate":"2024-01-30"},{"lineNumber":138,"author":{"gitId":"Jajared"},"content":" addTask(newDeadline);","lastModifiedDate":"2024-01-30"},{"lineNumber":139,"author":{"gitId":"Jajared"},"content":" saveTaskList();","lastModifiedDate":"2024-01-30"},{"lineNumber":140,"author":{"gitId":"Jajared"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":141,"author":{"gitId":"Jajared"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":142,"author":{"gitId":"Jajared"},"content":" // Create todo command","lastModifiedDate":"2024-01-30"},{"lineNumber":143,"author":{"gitId":"Jajared"},"content":" case \"todo\":","lastModifiedDate":"2024-01-30"},{"lineNumber":144,"author":{"gitId":"Jajared"},"content":" ToDo newToDo \u003d ToDo.createFromInput(input);","lastModifiedDate":"2024-01-30"},{"lineNumber":145,"author":{"gitId":"Jajared"},"content":" addTask(newToDo);","lastModifiedDate":"2024-01-30"},{"lineNumber":146,"author":{"gitId":"Jajared"},"content":" saveTaskList();","lastModifiedDate":"2024-01-30"},{"lineNumber":147,"author":{"gitId":"Jajared"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":148,"author":{"gitId":"Jajared"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":149,"author":{"gitId":"Jajared"},"content":" // Invalid command","lastModifiedDate":"2024-01-30"},{"lineNumber":150,"author":{"gitId":"Jajared"},"content":" default:","lastModifiedDate":"2024-01-30"},{"lineNumber":151,"author":{"gitId":"Jajared"},"content":" throw new DukeException(\"I\u0027m sorry, but I don\u0027t know what that means :-(\");","lastModifiedDate":"2024-01-30"},{"lineNumber":152,"author":{"gitId":"Jajared"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":153,"author":{"gitId":"Jajared"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":154,"author":{"gitId":"Jajared"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":155,"author":{"gitId":"Jajared"},"content":" /*","lastModifiedDate":"2024-01-30"},{"lineNumber":156,"author":{"gitId":"Jajared"},"content":" * Prints the list of tasks","lastModifiedDate":"2024-01-30"},{"lineNumber":157,"author":{"gitId":"Jajared"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":158,"author":{"gitId":"Jajared"},"content":" private static void printList(ArrayList\u003cTask\u003e list) {","lastModifiedDate":"2024-01-30"},{"lineNumber":159,"author":{"gitId":"Jajared"},"content":" System.out.println(\"Here are the tasks in your list:\");","lastModifiedDate":"2024-01-30"},{"lineNumber":160,"author":{"gitId":"Jajared"},"content":" for (int i \u003d 0; i \u003c list.size(); i++) {","lastModifiedDate":"2024-01-30"},{"lineNumber":161,"author":{"gitId":"Jajared"},"content":" System.out.println((i + 1) + \". \" + list.get(i));","lastModifiedDate":"2024-01-30"},{"lineNumber":162,"author":{"gitId":"Jajared"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":163,"author":{"gitId":"Jajared"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":164,"author":{"gitId":"Jajared"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":165,"author":{"gitId":"Jajared"},"content":" /*","lastModifiedDate":"2024-01-30"},{"lineNumber":166,"author":{"gitId":"Jajared"},"content":" * Returns the number of tasks in the list","lastModifiedDate":"2024-01-30"},{"lineNumber":167,"author":{"gitId":"Jajared"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":168,"author":{"gitId":"Jajared"},"content":" private static int getTaskCount() {","lastModifiedDate":"2024-01-30"},{"lineNumber":169,"author":{"gitId":"Jajared"},"content":" return taskList.size();","lastModifiedDate":"2024-01-30"},{"lineNumber":170,"author":{"gitId":"Jajared"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":171,"author":{"gitId":"Jajared"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":172,"author":{"gitId":"Jajared"},"content":" /*","lastModifiedDate":"2024-01-30"},{"lineNumber":173,"author":{"gitId":"Jajared"},"content":" * Return number of task message","lastModifiedDate":"2024-01-30"},{"lineNumber":174,"author":{"gitId":"Jajared"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":175,"author":{"gitId":"Jajared"},"content":" private static String getTaskCountMessage() {","lastModifiedDate":"2024-01-30"},{"lineNumber":176,"author":{"gitId":"Jajared"},"content":" if (getTaskCount() \u003d\u003d 1) {","lastModifiedDate":"2024-01-30"},{"lineNumber":177,"author":{"gitId":"Jajared"},"content":" return \"Now you have \" + getTaskCount() + \" task in the list.\";","lastModifiedDate":"2024-01-30"},{"lineNumber":178,"author":{"gitId":"Jajared"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":179,"author":{"gitId":"Jajared"},"content":" return \"Now you have \" + getTaskCount() + \" tasks in the list.\";","lastModifiedDate":"2024-01-30"},{"lineNumber":180,"author":{"gitId":"Jajared"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":181,"author":{"gitId":"Jajared"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":182,"author":{"gitId":"Jajared"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":183,"author":{"gitId":"Jajared"},"content":" /*","lastModifiedDate":"2024-01-30"},{"lineNumber":184,"author":{"gitId":"Jajared"},"content":" * Prints available commands","lastModifiedDate":"2024-01-30"},{"lineNumber":185,"author":{"gitId":"Jajared"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":186,"author":{"gitId":"Jajared"},"content":" private static void getListOfCommands() {","lastModifiedDate":"2024-01-30"},{"lineNumber":187,"author":{"gitId":"Jajared"},"content":" System.out.println(\"Here are the available commands:\");","lastModifiedDate":"2024-01-30"},{"lineNumber":188,"author":{"gitId":"Jajared"},"content":" System.out.println(\"list\");","lastModifiedDate":"2024-01-30"},{"lineNumber":189,"author":{"gitId":"Jajared"},"content":" System.out.println(\"todo \u003cdescription\u003e\");","lastModifiedDate":"2024-01-30"},{"lineNumber":190,"author":{"gitId":"Jajared"},"content":" System.out.println(\"deadline \u003cdescription\u003e /by \u003cdate\u003e\");","lastModifiedDate":"2024-01-30"},{"lineNumber":191,"author":{"gitId":"Jajared"},"content":" System.out.println(\"event \u003cdescription\u003e /from \u003cdate\u003e /to \u003cdate\u003e\");","lastModifiedDate":"2024-01-30"},{"lineNumber":192,"author":{"gitId":"Jajared"},"content":" System.out.println(\"delete \u003cindex\u003e\");","lastModifiedDate":"2024-01-30"},{"lineNumber":193,"author":{"gitId":"Jajared"},"content":" System.out.println(\"mark \u003cindex\u003e\");","lastModifiedDate":"2024-01-30"},{"lineNumber":194,"author":{"gitId":"Jajared"},"content":" System.out.println(\"unmark \u003cindex\u003e\");","lastModifiedDate":"2024-01-30"},{"lineNumber":195,"author":{"gitId":"Jajared"},"content":" System.out.println(\"bye\");","lastModifiedDate":"2024-01-30"},{"lineNumber":196,"author":{"gitId":"Jajared"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":197,"author":{"gitId":"Jajared"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":198,"author":{"gitId":"Jajared"},"content":" /*","lastModifiedDate":"2024-01-30"},{"lineNumber":199,"author":{"gitId":"Jajared"},"content":" * Adds a task to the list","lastModifiedDate":"2024-01-30"},{"lineNumber":200,"author":{"gitId":"Jajared"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":201,"author":{"gitId":"Jajared"},"content":" private static void addTask(Task task) {","lastModifiedDate":"2024-01-30"},{"lineNumber":202,"author":{"gitId":"Jajared"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2024-01-30"},{"lineNumber":203,"author":{"gitId":"Jajared"},"content":" taskList.add(task);","lastModifiedDate":"2024-01-30"},{"lineNumber":204,"author":{"gitId":"Jajared"},"content":" System.out.println(task);","lastModifiedDate":"2024-01-30"},{"lineNumber":205,"author":{"gitId":"Jajared"},"content":" System.out.println(getTaskCountMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":206,"author":{"gitId":"Jajared"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":207,"author":{"gitId":"Jajared"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":208,"author":{"gitId":"Jajared"},"content":" /*","lastModifiedDate":"2024-01-30"},{"lineNumber":209,"author":{"gitId":"Jajared"},"content":" * Removes a task from the list","lastModifiedDate":"2024-01-30"},{"lineNumber":210,"author":{"gitId":"Jajared"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":211,"author":{"gitId":"Jajared"},"content":" private static void removeTask(int index) {","lastModifiedDate":"2024-01-30"},{"lineNumber":212,"author":{"gitId":"Jajared"},"content":" System.out.println(\"Noted. I\u0027ve removed this task:\");","lastModifiedDate":"2024-01-30"},{"lineNumber":213,"author":{"gitId":"Jajared"},"content":" System.out.println(taskList.get(index - 1));","lastModifiedDate":"2024-01-30"},{"lineNumber":214,"author":{"gitId":"Jajared"},"content":" taskList.remove(index - 1);","lastModifiedDate":"2024-01-30"},{"lineNumber":215,"author":{"gitId":"Jajared"},"content":" System.out.println(getTaskCountMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":216,"author":{"gitId":"Jajared"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":217,"author":{"gitId":"Jajared"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":218,"author":{"gitId":"Jajared"},"content":" /*","lastModifiedDate":"2024-01-30"},{"lineNumber":219,"author":{"gitId":"Jajared"},"content":" * Load task list from hard disk","lastModifiedDate":"2024-01-30"},{"lineNumber":220,"author":{"gitId":"Jajared"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":221,"author":{"gitId":"Jajared"},"content":" private static ArrayList\u003cTask\u003e loadTaskList() throws FileNotFoundException, DukeException, IOException {","lastModifiedDate":"2024-01-30"},{"lineNumber":222,"author":{"gitId":"Jajared"},"content":" ArrayList\u003cTask\u003e result \u003d new ArrayList\u003cTask\u003e();","lastModifiedDate":"2024-01-30"},{"lineNumber":223,"author":{"gitId":"Jajared"},"content":" File f \u003d new File(\"./data/GeePeeTee.txt\");","lastModifiedDate":"2024-01-30"},{"lineNumber":224,"author":{"gitId":"Jajared"},"content":" Scanner s \u003d new Scanner(f);","lastModifiedDate":"2024-01-30"},{"lineNumber":225,"author":{"gitId":"Jajared"},"content":" while (s.hasNext()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":226,"author":{"gitId":"Jajared"},"content":" String line \u003d s.nextLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":227,"author":{"gitId":"Jajared"},"content":" String[] parts \u003d line.split(\" \\\\| \");","lastModifiedDate":"2024-01-30"},{"lineNumber":228,"author":{"gitId":"Jajared"},"content":" String type \u003d parts[0];","lastModifiedDate":"2024-01-30"},{"lineNumber":229,"author":{"gitId":"Jajared"},"content":" boolean isDone \u003d parts[1].equals(\"1\");","lastModifiedDate":"2024-01-30"},{"lineNumber":230,"author":{"gitId":"Jajared"},"content":" String description \u003d parts[2];","lastModifiedDate":"2024-01-30"},{"lineNumber":231,"author":{"gitId":"Jajared"},"content":" Task task;","lastModifiedDate":"2024-01-30"},{"lineNumber":232,"author":{"gitId":"Jajared"},"content":" switch (type) {","lastModifiedDate":"2024-01-30"},{"lineNumber":233,"author":{"gitId":"Jajared"},"content":" case \"T\":","lastModifiedDate":"2024-01-30"},{"lineNumber":234,"author":{"gitId":"Jajared"},"content":" task \u003d new ToDo(description);","lastModifiedDate":"2024-01-30"},{"lineNumber":235,"author":{"gitId":"Jajared"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":236,"author":{"gitId":"Jajared"},"content":" case \"D\":","lastModifiedDate":"2024-01-30"},{"lineNumber":237,"author":{"gitId":"Jajared"},"content":" task \u003d new Deadline(description, parts[3]);","lastModifiedDate":"2024-01-30"},{"lineNumber":238,"author":{"gitId":"Jajared"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":239,"author":{"gitId":"Jajared"},"content":" case \"E\":","lastModifiedDate":"2024-01-30"},{"lineNumber":240,"author":{"gitId":"Jajared"},"content":" task \u003d new Event(description, parts[3], parts[4]);","lastModifiedDate":"2024-01-30"},{"lineNumber":241,"author":{"gitId":"Jajared"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":242,"author":{"gitId":"Jajared"},"content":" default:","lastModifiedDate":"2024-01-30"},{"lineNumber":243,"author":{"gitId":"Jajared"},"content":" throw new DukeException(\"File contains invalid task type.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":244,"author":{"gitId":"Jajared"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":245,"author":{"gitId":"Jajared"},"content":" if (isDone) {","lastModifiedDate":"2024-01-30"},{"lineNumber":246,"author":{"gitId":"Jajared"},"content":" task.markAsDone();","lastModifiedDate":"2024-01-30"},{"lineNumber":247,"author":{"gitId":"Jajared"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":248,"author":{"gitId":"Jajared"},"content":" result.add(task);","lastModifiedDate":"2024-01-30"},{"lineNumber":249,"author":{"gitId":"Jajared"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":250,"author":{"gitId":"Jajared"},"content":" s.close();","lastModifiedDate":"2024-01-30"},{"lineNumber":251,"author":{"gitId":"Jajared"},"content":" return result;","lastModifiedDate":"2024-01-30"},{"lineNumber":252,"author":{"gitId":"Jajared"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":253,"author":{"gitId":"Jajared"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":254,"author":{"gitId":"Jajared"},"content":" /*","lastModifiedDate":"2024-01-30"},{"lineNumber":255,"author":{"gitId":"Jajared"},"content":" * Save task list to hard disk","lastModifiedDate":"2024-01-30"},{"lineNumber":256,"author":{"gitId":"Jajared"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":257,"author":{"gitId":"Jajared"},"content":" private static void saveTaskList() throws DukeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":258,"author":{"gitId":"Jajared"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":259,"author":{"gitId":"Jajared"},"content":" File file \u003d new File(\"./data/GeePeeTee.txt\");","lastModifiedDate":"2024-01-30"},{"lineNumber":260,"author":{"gitId":"Jajared"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":261,"author":{"gitId":"Jajared"},"content":" try (FileWriter fw \u003d new FileWriter(file)) {","lastModifiedDate":"2024-01-30"},{"lineNumber":262,"author":{"gitId":"Jajared"},"content":" for (Task task : taskList) {","lastModifiedDate":"2024-01-30"},{"lineNumber":263,"author":{"gitId":"Jajared"},"content":" fw.write(task.toFileString() + System.lineSeparator());","lastModifiedDate":"2024-01-30"},{"lineNumber":264,"author":{"gitId":"Jajared"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":265,"author":{"gitId":"Jajared"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":266,"author":{"gitId":"Jajared"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":267,"author":{"gitId":"Jajared"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":268,"author":{"gitId":"Jajared"},"content":" throw new DukeException(\"Error saving the task list file.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":269,"author":{"gitId":"Jajared"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":270,"author":{"gitId":"Jajared"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":271,"author":{"gitId":"Jajared"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":272,"author":{"gitId":"Jajared"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"Jajared":272}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Jajared"},"content":"public class Task {","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"Jajared"},"content":" protected String description;","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"Jajared"},"content":" protected boolean isDone;","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"Jajared"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"Jajared"},"content":" public Task(String description) {","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"Jajared"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"Jajared"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"Jajared"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"Jajared"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"Jajared"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"Jajared"},"content":" return (isDone ? \"X\" : \" \");","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"Jajared"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"Jajared"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"Jajared"},"content":" public void markAsDone() {","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"Jajared"},"content":" this.isDone \u003d true;","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"Jajared"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"Jajared"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"Jajared"},"content":" public void unmarkAsDone() {","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"Jajared"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"Jajared"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"Jajared"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"Jajared"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"Jajared"},"content":" public String toString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"Jajared"},"content":" return \"[\" + this.getStatusIcon() + \"] \" + this.description;","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"Jajared"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"Jajared"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"Jajared"},"content":" public String toFileString() {","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"Jajared"},"content":" return (this.isDone ? \"1\" : \"0\") + \" | \" + this.description;","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"Jajared"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"Jajared"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"Jajared"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"Jajared":31}},{"path":"src/main/java/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Jajared"},"content":"public class ToDo extends Task {","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"Jajared"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"Jajared"},"content":" public static ToDo createFromInput(String input) throws DukeException {","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"Jajared"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"Jajared"},"content":" String description \u003d input.split(\"todo \")[1];","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"Jajared"},"content":" return new ToDo(description);","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"Jajared"},"content":" } catch (ArrayIndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"Jajared"},"content":" throw new DukeException(\"Invalid todo format. Please use \u0027todo description\u0027.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"Jajared"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"Jajared"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"Jajared"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"Jajared"},"content":" public ToDo(String description) {","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"Jajared"},"content":" super(description);","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"Jajared"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"Jajared"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"Jajared"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"Jajared"},"content":" public String toString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"Jajared"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"Jajared"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"Jajared"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"Jajared"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"Jajared"},"content":" public String toFileString() {","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"Jajared"},"content":" return \"T | \" + (this.isDone ? \"1\" : \"0\") + \" | \" + description;","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"Jajared"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"Jajared"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"Jajared":25}},{"path":"src/main/java/data/GeePeeTee.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"Jajared"},"content":"E | 0 | borrow book | Now | tomorrow","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"Jajared":1}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"Jajared"},"content":"todo borrow book","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"Jajared"},"content":"list","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"Jajared"},"content":"deadline return book /by Sunday","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"Jajared"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"Jajared"},"content":"mark 2","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"Jajared"},"content":"list","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"Jajared"},"content":"bye","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"Jajared":7}},{"path":"text-ui-test/runtest.bat","fileType":"bat","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@ECHO OFF","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"REM create bin directory if it doesn\u0027t exist","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"if not exist ..\\bin mkdir ..\\bin","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"REM delete output from previous run","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"if exist ACTUAL.TXT del ACTUAL.TXT","lastModifiedDate":"2020-08-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"REM compile the code into the bin folder","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"javac -cp ..\\src\\main\\java -Xlint:none -d ..\\bin ..\\src\\main\\java\\*.java","lastModifiedDate":"2020-08-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"IF ERRORLEVEL 1 (","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":" echo ********** BUILD FAILURE **********","lastModifiedDate":"2020-05-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":" exit /b 1","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":")","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"REM no error here, errorlevel \u003d\u003d 0","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"REM run the program, feed commands from input.txt file and redirect the output to the ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"Jajared"},"content":"java -classpath ..\\bin GeePeeTee \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"REM compare the output to the expected output","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"FC ACTUAL.TXT EXPECTED.TXT","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"-":20,"Jajared":1}},{"path":"text-ui-test/runtest.sh","fileType":"sh","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"#!/usr/bin/env bash","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"# create bin directory if it doesn\u0027t exist","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"if [ ! -d \"../bin\" ]","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":" mkdir ../bin","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"# delete output from previous run","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"if [ -e \"./ACTUAL.TXT\" ]","lastModifiedDate":"2020-05-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":" rm ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"# compile the code into the bin folder, terminates if error occurred","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"if ! javac -cp ../src/main/java -Xlint:none -d ../bin ../src/main/java/*.java","lastModifiedDate":"2020-08-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" echo \"********** BUILD FAILURE **********\"","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" exit 1","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":"# run the program, feed commands from input.txt file and redirect the output to the ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"Jajared"},"content":"java -classpath ../bin GeePeeTee \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":"# convert to UNIX format","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":"cp EXPECTED.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":"dos2unix ACTUAL.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"# compare the output to the expected output","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"diff ACTUAL.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":"if [ $? -eq 0 ]","lastModifiedDate":"2020-05-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":" echo \"Test result: PASSED\"","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":" exit 0","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":"else","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" echo \"Test result: FAILED\"","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" exit 1","lastModifiedDate":"2020-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"-":37,"Jajared":1}}] diff --git a/Jajared_ip_master/commits.json b/Jajared_ip_master/commits.json index 559e28cc..9cc04e51 100644 --- a/Jajared_ip_master/commits.json +++ b/Jajared_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"Jajared":[{"date":"2024-01-25","commitResults":[{"hash":"480177d13d5e5e9325c31e076719e37c34016487","isMergeCommit":false,"messageTitle":"refactor: changed message and updated git ignore file","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":7,"deletions":8}}},{"hash":"b672d8722896fd139a10f85457697227e6cb4e03","isMergeCommit":false,"messageTitle":"feat: added user input","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":12,"deletions":0}}},{"hash":"d51b81672b6ca4aa48691dc655e3fe9a06acfdf2","isMergeCommit":false,"messageTitle":"feat: added task list","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":31,"deletions":1}}},{"hash":"cb47f8fef3c677c854705fe4e1fad97917ba4a6a","isMergeCommit":false,"messageTitle":"feat: added mark and list functionality","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":47,"deletions":8}}},{"hash":"b96f4635aeb1ab327883c11b627a63998f6cec8b","isMergeCommit":false,"messageTitle":"feat: added event, deadline and todo","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":99,"deletions":9}}},{"hash":"9f1b8dab812c7d45f4c3af3723b4b60ac8c8384c","isMergeCommit":false,"messageTitle":"test: added simple automated testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":7,"deletions":0}}},{"hash":"539da1d7176fc049f9ade8d73398488de7050feb","isMergeCommit":false,"messageTitle":"refactor: added error handling","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":88,"deletions":37}}},{"hash":"3170ca15ff3affcf67074609d2188094a72a8d53","isMergeCommit":false,"messageTitle":"feat: added delete task","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":96,"deletions":69}}}]}]},"authorFileTypeContributionMap":{"Jajared":{"java":253,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":0,"txt":7}},"authorContributionVariance":{"Jajared":32982.98},"authorDisplayNameMap":{"Jajared":"CS2103T-T09-4 JARE.. JIE"}} +{"authorDailyContributionsMap":{"Jajared":[{"date":"2024-01-25","commitResults":[{"hash":"480177d13d5e5e9325c31e076719e37c34016487","isMergeCommit":false,"messageTitle":"refactor: changed message and updated git ignore file","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":7,"deletions":8}}},{"hash":"b672d8722896fd139a10f85457697227e6cb4e03","isMergeCommit":false,"messageTitle":"feat: added user input","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":12,"deletions":0}}},{"hash":"d51b81672b6ca4aa48691dc655e3fe9a06acfdf2","isMergeCommit":false,"messageTitle":"feat: added task list","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":31,"deletions":1}}},{"hash":"cb47f8fef3c677c854705fe4e1fad97917ba4a6a","isMergeCommit":false,"messageTitle":"feat: added mark and list functionality","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":47,"deletions":8}}},{"hash":"b96f4635aeb1ab327883c11b627a63998f6cec8b","isMergeCommit":false,"messageTitle":"feat: added event, deadline and todo","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":99,"deletions":9}}},{"hash":"9f1b8dab812c7d45f4c3af3723b4b60ac8c8384c","isMergeCommit":false,"messageTitle":"test: added simple automated testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":7,"deletions":0}}},{"hash":"539da1d7176fc049f9ade8d73398488de7050feb","isMergeCommit":false,"messageTitle":"refactor: added error handling","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":88,"deletions":37}}},{"hash":"3170ca15ff3affcf67074609d2188094a72a8d53","isMergeCommit":false,"messageTitle":"feat: added delete task","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":96,"deletions":69}}}]},{"date":"2024-01-30","commitResults":[{"hash":"ea2b1b6cce5f943c4b190d098755dc64c9ba6777","isMergeCommit":false,"messageTitle":"feat: add file save functionality","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"java":{"insertions":292,"deletions":150},"bat":{"insertions":1,"deletions":1},"sh":{"insertions":1,"deletions":1}}}]}]},"authorFileTypeContributionMap":{"Jajared":{"java":400,"md":0,"fxml":0,"sh":1,"bat":1,"gradle":0,"txt":8}},"authorContributionVariance":{"Jajared":32617.25},"authorDisplayNameMap":{"Jajared":"CS2103T-T09-4 JARE.. JIE"}} diff --git a/Jawad280_ip_master/authorship.json b/Jawad280_ip_master/authorship.json index 056a716f..4967cfac 100644 --- a/Jawad280_ip_master/authorship.json +++ b/Jawad280_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"src/main/java/Tobias.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Jawad280"},"content":"import command.Command;","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"Jawad280"},"content":"import exception.TobiasException;","lastModifiedDate":"2024-01-26"},{"lineNumber":3,"author":{"gitId":"Jawad280"},"content":"import parser.Parser;","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"Jawad280"},"content":"import storage.Storage;","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"Jawad280"},"content":"import task.TaskList;","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"Jawad280"},"content":"import ui.Ui;","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"Jawad280"},"content":"public class Tobias {","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"Jawad280"},"content":" private Storage storage;","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"Jawad280"},"content":" private TaskList tasks;","lastModifiedDate":"2024-01-26"},{"lineNumber":12,"author":{"gitId":"Jawad280"},"content":" private Ui ui;","lastModifiedDate":"2024-01-26"},{"lineNumber":13,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":14,"author":{"gitId":"Jawad280"},"content":" public Tobias(String filePath) {","lastModifiedDate":"2024-01-26"},{"lineNumber":15,"author":{"gitId":"Jawad280"},"content":" ui \u003d new Ui();","lastModifiedDate":"2024-01-26"},{"lineNumber":16,"author":{"gitId":"Jawad280"},"content":" storage \u003d new Storage(filePath);","lastModifiedDate":"2024-01-26"},{"lineNumber":17,"author":{"gitId":"Jawad280"},"content":" storage.createLocalStorage();","lastModifiedDate":"2024-01-26"},{"lineNumber":18,"author":{"gitId":"Jawad280"},"content":" try {","lastModifiedDate":"2024-01-26"},{"lineNumber":19,"author":{"gitId":"Jawad280"},"content":" tasks \u003d storage.localToCurrent();","lastModifiedDate":"2024-01-26"},{"lineNumber":20,"author":{"gitId":"Jawad280"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-01-26"},{"lineNumber":21,"author":{"gitId":"Jawad280"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-26"},{"lineNumber":22,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":23,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":24,"author":{"gitId":"Jawad280"},"content":" public void run() {","lastModifiedDate":"2024-01-26"},{"lineNumber":25,"author":{"gitId":"Jawad280"},"content":" ui.helloPrinter();","lastModifiedDate":"2024-01-26"},{"lineNumber":26,"author":{"gitId":"Jawad280"},"content":" boolean isExit \u003d false;","lastModifiedDate":"2024-01-26"},{"lineNumber":27,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":28,"author":{"gitId":"Jawad280"},"content":" while (!isExit) {","lastModifiedDate":"2024-01-25"},{"lineNumber":29,"author":{"gitId":"Jawad280"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":30,"author":{"gitId":"Jawad280"},"content":" String fullCommand \u003d ui.readCommand();","lastModifiedDate":"2024-01-26"},{"lineNumber":31,"author":{"gitId":"Jawad280"},"content":" Command c \u003d Parser.parseCommands(fullCommand, tasks);","lastModifiedDate":"2024-01-26"},{"lineNumber":32,"author":{"gitId":"Jawad280"},"content":" c.execute(tasks, ui, storage);","lastModifiedDate":"2024-01-26"},{"lineNumber":33,"author":{"gitId":"Jawad280"},"content":" isExit \u003d c.isExit();","lastModifiedDate":"2024-01-26"},{"lineNumber":34,"author":{"gitId":"Jawad280"},"content":" } catch (TobiasException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":35,"author":{"gitId":"Jawad280"},"content":" e.printMessage();","lastModifiedDate":"2024-01-25"},{"lineNumber":36,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":37,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":38,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":39,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":40,"author":{"gitId":"Jawad280"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-01-25"},{"lineNumber":41,"author":{"gitId":"Jawad280"},"content":" new Tobias(\"data/Tobias.txt\").run();","lastModifiedDate":"2024-01-26"},{"lineNumber":42,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":43,"author":{"gitId":"Jawad280"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"Jawad280":43}},{"path":"src/main/java/command/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Jawad280"},"content":"package command;","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"Jawad280"},"content":"import storage.Storage;","lastModifiedDate":"2024-01-26"},{"lineNumber":3,"author":{"gitId":"Jawad280"},"content":"import task.TaskList;","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"Jawad280"},"content":"import ui.Ui;","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"Jawad280"},"content":"public abstract class Command {","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"Jawad280"},"content":" public abstract void execute(TaskList tasks, Ui ui, Storage storage);","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"Jawad280"},"content":" public abstract boolean isExit();","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"Jawad280"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"Jawad280":9}},{"path":"src/main/java/command/DeadlineCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Jawad280"},"content":"package command;","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":3,"author":{"gitId":"Jawad280"},"content":"import storage.Storage;","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"Jawad280"},"content":"import task.Deadline;","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"Jawad280"},"content":"import task.Task;","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"Jawad280"},"content":"import task.TaskList;","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"Jawad280"},"content":"import ui.Ui;","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"Jawad280"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"Jawad280"},"content":"public class DeadlineCommand extends Command {","lastModifiedDate":"2024-01-26"},{"lineNumber":12,"author":{"gitId":"Jawad280"},"content":" protected String description;","lastModifiedDate":"2024-01-26"},{"lineNumber":13,"author":{"gitId":"Jawad280"},"content":" protected LocalDateTime deadline;","lastModifiedDate":"2024-01-26"},{"lineNumber":14,"author":{"gitId":"Jawad280"},"content":" protected boolean isDone;","lastModifiedDate":"2024-01-26"},{"lineNumber":15,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":16,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":17,"author":{"gitId":"Jawad280"},"content":" public DeadlineCommand(String description, LocalDateTime deadline) {","lastModifiedDate":"2024-01-26"},{"lineNumber":18,"author":{"gitId":"Jawad280"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-26"},{"lineNumber":19,"author":{"gitId":"Jawad280"},"content":" this.deadline \u003d deadline;","lastModifiedDate":"2024-01-26"},{"lineNumber":20,"author":{"gitId":"Jawad280"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-26"},{"lineNumber":21,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":22,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":23,"author":{"gitId":"Jawad280"},"content":" public DeadlineCommand(String description, LocalDateTime deadline, boolean isDone) {","lastModifiedDate":"2024-01-26"},{"lineNumber":24,"author":{"gitId":"Jawad280"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-26"},{"lineNumber":25,"author":{"gitId":"Jawad280"},"content":" this.deadline \u003d deadline;","lastModifiedDate":"2024-01-26"},{"lineNumber":26,"author":{"gitId":"Jawad280"},"content":" this.isDone \u003d isDone;","lastModifiedDate":"2024-01-26"},{"lineNumber":27,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":28,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":29,"author":{"gitId":"Jawad280"},"content":" @Override","lastModifiedDate":"2024-01-26"},{"lineNumber":30,"author":{"gitId":"Jawad280"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2024-01-26"},{"lineNumber":31,"author":{"gitId":"Jawad280"},"content":" Task task \u003d new Deadline(description, isDone, deadline);","lastModifiedDate":"2024-01-26"},{"lineNumber":32,"author":{"gitId":"Jawad280"},"content":" tasks.addToList(task);","lastModifiedDate":"2024-01-26"},{"lineNumber":33,"author":{"gitId":"Jawad280"},"content":" ui.addedTaskPrinter(task, tasks.taskNum());","lastModifiedDate":"2024-01-26"},{"lineNumber":34,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":35,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":36,"author":{"gitId":"Jawad280"},"content":" @Override","lastModifiedDate":"2024-01-26"},{"lineNumber":37,"author":{"gitId":"Jawad280"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-26"},{"lineNumber":38,"author":{"gitId":"Jawad280"},"content":" return false;","lastModifiedDate":"2024-01-26"},{"lineNumber":39,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":40,"author":{"gitId":"Jawad280"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"Jawad280":40}},{"path":"src/main/java/command/DeleteCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Jawad280"},"content":"package command;","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":3,"author":{"gitId":"Jawad280"},"content":"import storage.Storage;","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"Jawad280"},"content":"import task.Task;","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"Jawad280"},"content":"import task.TaskList;","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"Jawad280"},"content":"import ui.Ui;","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"Jawad280"},"content":"public class DeleteCommand extends Command {","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"Jawad280"},"content":" private int taskIndex;","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"Jawad280"},"content":" public DeleteCommand(int taskIndex) {","lastModifiedDate":"2024-01-26"},{"lineNumber":12,"author":{"gitId":"Jawad280"},"content":" this.taskIndex \u003d taskIndex;","lastModifiedDate":"2024-01-26"},{"lineNumber":13,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":14,"author":{"gitId":"Jawad280"},"content":" @Override","lastModifiedDate":"2024-01-26"},{"lineNumber":15,"author":{"gitId":"Jawad280"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2024-01-26"},{"lineNumber":16,"author":{"gitId":"Jawad280"},"content":" Task curr \u003d tasks.getTask(taskIndex);","lastModifiedDate":"2024-01-26"},{"lineNumber":17,"author":{"gitId":"Jawad280"},"content":" tasks.removeFromList(taskIndex);","lastModifiedDate":"2024-01-26"},{"lineNumber":18,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":19,"author":{"gitId":"Jawad280"},"content":" ui.printDivider();","lastModifiedDate":"2024-01-26"},{"lineNumber":20,"author":{"gitId":"Jawad280"},"content":" System.out.println(\" Noted, I\u0027ve removed this task: \");","lastModifiedDate":"2024-01-26"},{"lineNumber":21,"author":{"gitId":"Jawad280"},"content":" curr.taskPrinter();","lastModifiedDate":"2024-01-26"},{"lineNumber":22,"author":{"gitId":"Jawad280"},"content":" ui.printDivider();","lastModifiedDate":"2024-01-26"},{"lineNumber":23,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":24,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":25,"author":{"gitId":"Jawad280"},"content":" @Override","lastModifiedDate":"2024-01-26"},{"lineNumber":26,"author":{"gitId":"Jawad280"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-26"},{"lineNumber":27,"author":{"gitId":"Jawad280"},"content":" return false;","lastModifiedDate":"2024-01-26"},{"lineNumber":28,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":29,"author":{"gitId":"Jawad280"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"Jawad280":29}},{"path":"src/main/java/command/EventCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Jawad280"},"content":"package command;","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":3,"author":{"gitId":"Jawad280"},"content":"import storage.Storage;","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"Jawad280"},"content":"import task.Event;","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"Jawad280"},"content":"import task.Task;","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"Jawad280"},"content":"import task.TaskList;","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"Jawad280"},"content":"import ui.Ui;","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"Jawad280"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"Jawad280"},"content":"public class EventCommand extends Command {","lastModifiedDate":"2024-01-26"},{"lineNumber":12,"author":{"gitId":"Jawad280"},"content":" protected String description;","lastModifiedDate":"2024-01-26"},{"lineNumber":13,"author":{"gitId":"Jawad280"},"content":" protected LocalDateTime from;","lastModifiedDate":"2024-01-26"},{"lineNumber":14,"author":{"gitId":"Jawad280"},"content":" protected LocalDateTime to;","lastModifiedDate":"2024-01-26"},{"lineNumber":15,"author":{"gitId":"Jawad280"},"content":" protected boolean isDone;","lastModifiedDate":"2024-01-26"},{"lineNumber":16,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":17,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":18,"author":{"gitId":"Jawad280"},"content":" public EventCommand(String description, LocalDateTime from, LocalDateTime to) {","lastModifiedDate":"2024-01-26"},{"lineNumber":19,"author":{"gitId":"Jawad280"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-26"},{"lineNumber":20,"author":{"gitId":"Jawad280"},"content":" this.from \u003d from;","lastModifiedDate":"2024-01-26"},{"lineNumber":21,"author":{"gitId":"Jawad280"},"content":" this.to \u003d to;","lastModifiedDate":"2024-01-26"},{"lineNumber":22,"author":{"gitId":"Jawad280"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-26"},{"lineNumber":23,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":24,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":25,"author":{"gitId":"Jawad280"},"content":" public EventCommand(String description, LocalDateTime from, LocalDateTime to, boolean isDone) {","lastModifiedDate":"2024-01-26"},{"lineNumber":26,"author":{"gitId":"Jawad280"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-26"},{"lineNumber":27,"author":{"gitId":"Jawad280"},"content":" this.from \u003d from;","lastModifiedDate":"2024-01-26"},{"lineNumber":28,"author":{"gitId":"Jawad280"},"content":" this.to \u003d to;","lastModifiedDate":"2024-01-26"},{"lineNumber":29,"author":{"gitId":"Jawad280"},"content":" this.isDone \u003d isDone;","lastModifiedDate":"2024-01-26"},{"lineNumber":30,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":31,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":32,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":33,"author":{"gitId":"Jawad280"},"content":" @Override","lastModifiedDate":"2024-01-26"},{"lineNumber":34,"author":{"gitId":"Jawad280"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2024-01-26"},{"lineNumber":35,"author":{"gitId":"Jawad280"},"content":" Task task \u003d new Event(description, isDone, from, to);","lastModifiedDate":"2024-01-26"},{"lineNumber":36,"author":{"gitId":"Jawad280"},"content":" tasks.addToList(task);","lastModifiedDate":"2024-01-26"},{"lineNumber":37,"author":{"gitId":"Jawad280"},"content":" ui.addedTaskPrinter(task, tasks.taskNum());","lastModifiedDate":"2024-01-26"},{"lineNumber":38,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":39,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":40,"author":{"gitId":"Jawad280"},"content":" @Override","lastModifiedDate":"2024-01-26"},{"lineNumber":41,"author":{"gitId":"Jawad280"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-26"},{"lineNumber":42,"author":{"gitId":"Jawad280"},"content":" return false;","lastModifiedDate":"2024-01-26"},{"lineNumber":43,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":44,"author":{"gitId":"Jawad280"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"Jawad280":44}},{"path":"src/main/java/command/ExitCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Jawad280"},"content":"package command;","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":3,"author":{"gitId":"Jawad280"},"content":"import storage.Storage;","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"Jawad280"},"content":"import task.TaskList;","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"Jawad280"},"content":"import ui.Ui;","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"Jawad280"},"content":"public class ExitCommand extends Command {","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"Jawad280"},"content":" @Override","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"Jawad280"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"Jawad280"},"content":" storage.storeToLocal(tasks);","lastModifiedDate":"2024-01-26"},{"lineNumber":12,"author":{"gitId":"Jawad280"},"content":" ui.goodbyePrinter();","lastModifiedDate":"2024-01-26"},{"lineNumber":13,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":14,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":15,"author":{"gitId":"Jawad280"},"content":" @Override","lastModifiedDate":"2024-01-26"},{"lineNumber":16,"author":{"gitId":"Jawad280"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-26"},{"lineNumber":17,"author":{"gitId":"Jawad280"},"content":" return true;","lastModifiedDate":"2024-01-26"},{"lineNumber":18,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":19,"author":{"gitId":"Jawad280"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"Jawad280":19}},{"path":"src/main/java/command/ListCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Jawad280"},"content":"package command;","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":3,"author":{"gitId":"Jawad280"},"content":"import storage.Storage;","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"Jawad280"},"content":"import task.TaskList;","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"Jawad280"},"content":"import ui.Ui;","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"Jawad280"},"content":"public class ListCommand extends Command {","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"Jawad280"},"content":" @Override","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"Jawad280"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"Jawad280"},"content":" tasks.printList();","lastModifiedDate":"2024-01-26"},{"lineNumber":12,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":13,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":14,"author":{"gitId":"Jawad280"},"content":" @Override","lastModifiedDate":"2024-01-26"},{"lineNumber":15,"author":{"gitId":"Jawad280"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-26"},{"lineNumber":16,"author":{"gitId":"Jawad280"},"content":" return false;","lastModifiedDate":"2024-01-26"},{"lineNumber":17,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":18,"author":{"gitId":"Jawad280"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"Jawad280":18}},{"path":"src/main/java/command/MarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Jawad280"},"content":"package command;","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":3,"author":{"gitId":"Jawad280"},"content":"import storage.Storage;","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"Jawad280"},"content":"import task.Task;","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"Jawad280"},"content":"import task.TaskList;","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"Jawad280"},"content":"import ui.Ui;","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"Jawad280"},"content":"public class MarkCommand extends Command {","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"Jawad280"},"content":" private int taskIndex;","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":12,"author":{"gitId":"Jawad280"},"content":" public MarkCommand(int taskIndex) {","lastModifiedDate":"2024-01-26"},{"lineNumber":13,"author":{"gitId":"Jawad280"},"content":" this.taskIndex \u003d taskIndex;","lastModifiedDate":"2024-01-26"},{"lineNumber":14,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":15,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":16,"author":{"gitId":"Jawad280"},"content":" @Override","lastModifiedDate":"2024-01-26"},{"lineNumber":17,"author":{"gitId":"Jawad280"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2024-01-26"},{"lineNumber":18,"author":{"gitId":"Jawad280"},"content":" Task curr \u003d tasks.getTask(taskIndex);","lastModifiedDate":"2024-01-26"},{"lineNumber":19,"author":{"gitId":"Jawad280"},"content":" curr.markAsDone();","lastModifiedDate":"2024-01-26"},{"lineNumber":20,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":21,"author":{"gitId":"Jawad280"},"content":" ui.printDivider();","lastModifiedDate":"2024-01-26"},{"lineNumber":22,"author":{"gitId":"Jawad280"},"content":" System.out.println(\" Nice! I\u0027ve marked this task as done: \");","lastModifiedDate":"2024-01-26"},{"lineNumber":23,"author":{"gitId":"Jawad280"},"content":" curr.taskPrinter(taskIndex);","lastModifiedDate":"2024-01-26"},{"lineNumber":24,"author":{"gitId":"Jawad280"},"content":" ui.printDivider();","lastModifiedDate":"2024-01-26"},{"lineNumber":25,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":26,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":27,"author":{"gitId":"Jawad280"},"content":" @Override","lastModifiedDate":"2024-01-26"},{"lineNumber":28,"author":{"gitId":"Jawad280"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-26"},{"lineNumber":29,"author":{"gitId":"Jawad280"},"content":" return false;","lastModifiedDate":"2024-01-26"},{"lineNumber":30,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":31,"author":{"gitId":"Jawad280"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"Jawad280":31}},{"path":"src/main/java/command/TodoCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Jawad280"},"content":"package command;","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":3,"author":{"gitId":"Jawad280"},"content":"import storage.Storage;","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"Jawad280"},"content":"import task.Task;","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"Jawad280"},"content":"import task.TaskList;","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"Jawad280"},"content":"import task.ToDo;","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"Jawad280"},"content":"import ui.Ui;","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"Jawad280"},"content":"public class TodoCommand extends Command {","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"Jawad280"},"content":" private String description;","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"Jawad280"},"content":" private boolean isDone;","lastModifiedDate":"2024-01-26"},{"lineNumber":12,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":13,"author":{"gitId":"Jawad280"},"content":" public TodoCommand(String description) {","lastModifiedDate":"2024-01-26"},{"lineNumber":14,"author":{"gitId":"Jawad280"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-26"},{"lineNumber":15,"author":{"gitId":"Jawad280"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-26"},{"lineNumber":16,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":17,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":18,"author":{"gitId":"Jawad280"},"content":" public TodoCommand(String description, boolean isDone) {","lastModifiedDate":"2024-01-26"},{"lineNumber":19,"author":{"gitId":"Jawad280"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-26"},{"lineNumber":20,"author":{"gitId":"Jawad280"},"content":" this.isDone \u003d isDone;","lastModifiedDate":"2024-01-26"},{"lineNumber":21,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":22,"author":{"gitId":"Jawad280"},"content":" @Override","lastModifiedDate":"2024-01-26"},{"lineNumber":23,"author":{"gitId":"Jawad280"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2024-01-26"},{"lineNumber":24,"author":{"gitId":"Jawad280"},"content":" Task task \u003d new ToDo(description, isDone);","lastModifiedDate":"2024-01-26"},{"lineNumber":25,"author":{"gitId":"Jawad280"},"content":" tasks.addToList(task);","lastModifiedDate":"2024-01-26"},{"lineNumber":26,"author":{"gitId":"Jawad280"},"content":" ui.addedTaskPrinter(task, tasks.taskNum());","lastModifiedDate":"2024-01-26"},{"lineNumber":27,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":28,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":29,"author":{"gitId":"Jawad280"},"content":" @Override","lastModifiedDate":"2024-01-26"},{"lineNumber":30,"author":{"gitId":"Jawad280"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-26"},{"lineNumber":31,"author":{"gitId":"Jawad280"},"content":" return false;","lastModifiedDate":"2024-01-26"},{"lineNumber":32,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":33,"author":{"gitId":"Jawad280"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"Jawad280":33}},{"path":"src/main/java/command/UnmarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Jawad280"},"content":"package command;","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":3,"author":{"gitId":"Jawad280"},"content":"import storage.Storage;","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"Jawad280"},"content":"import task.Task;","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"Jawad280"},"content":"import task.TaskList;","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"Jawad280"},"content":"import ui.Ui;","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"Jawad280"},"content":"public class UnmarkCommand extends Command {","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"Jawad280"},"content":" private int taskIndex;","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"Jawad280"},"content":" public UnmarkCommand(int taskIndex) {","lastModifiedDate":"2024-01-26"},{"lineNumber":12,"author":{"gitId":"Jawad280"},"content":" this.taskIndex \u003d taskIndex;","lastModifiedDate":"2024-01-26"},{"lineNumber":13,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":14,"author":{"gitId":"Jawad280"},"content":" @Override","lastModifiedDate":"2024-01-26"},{"lineNumber":15,"author":{"gitId":"Jawad280"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2024-01-26"},{"lineNumber":16,"author":{"gitId":"Jawad280"},"content":" Task curr \u003d tasks.getTask(taskIndex);","lastModifiedDate":"2024-01-26"},{"lineNumber":17,"author":{"gitId":"Jawad280"},"content":" curr.markAsUndone();","lastModifiedDate":"2024-01-26"},{"lineNumber":18,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":19,"author":{"gitId":"Jawad280"},"content":" ui.printDivider();","lastModifiedDate":"2024-01-26"},{"lineNumber":20,"author":{"gitId":"Jawad280"},"content":" System.out.println(\" OK, I\u0027ve marked this task as not done : \");","lastModifiedDate":"2024-01-26"},{"lineNumber":21,"author":{"gitId":"Jawad280"},"content":" curr.taskPrinter(taskIndex);","lastModifiedDate":"2024-01-26"},{"lineNumber":22,"author":{"gitId":"Jawad280"},"content":" ui.printDivider();","lastModifiedDate":"2024-01-26"},{"lineNumber":23,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":24,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":25,"author":{"gitId":"Jawad280"},"content":" @Override","lastModifiedDate":"2024-01-26"},{"lineNumber":26,"author":{"gitId":"Jawad280"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-26"},{"lineNumber":27,"author":{"gitId":"Jawad280"},"content":" return false;","lastModifiedDate":"2024-01-26"},{"lineNumber":28,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":29,"author":{"gitId":"Jawad280"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"Jawad280":29}},{"path":"src/main/java/exception/TobiasException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Jawad280"},"content":"package exception;","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":3,"author":{"gitId":"Jawad280"},"content":"public class TobiasException extends Exception {","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"Jawad280"},"content":" public TobiasException(String message) {","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"Jawad280"},"content":" super(message);","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"Jawad280"},"content":" public void printMessage() {","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"Jawad280"},"content":" String divider \u003d \" \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\";","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"Jawad280"},"content":" System.out.println(divider);","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"Jawad280"},"content":" System.out.println(getMessage());","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"Jawad280"},"content":" System.out.println(divider);","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"Jawad280"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"Jawad280":14}},{"path":"src/main/java/parser/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Jawad280"},"content":"package parser;","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":3,"author":{"gitId":"Jawad280"},"content":"import command.*;","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"Jawad280"},"content":"import exception.TobiasException;","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"Jawad280"},"content":"import task.TaskList;","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"Jawad280"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"Jawad280"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"Jawad280"},"content":"public class Parser {","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":12,"author":{"gitId":"Jawad280"},"content":" public static LocalDateTime dateFromString(String dateTime) throws TobiasException {","lastModifiedDate":"2024-01-26"},{"lineNumber":13,"author":{"gitId":"Jawad280"},"content":" try {","lastModifiedDate":"2024-01-26"},{"lineNumber":14,"author":{"gitId":"Jawad280"},"content":" return LocalDateTime.parse(dateTime.trim(), DateTimeFormatter.ofPattern(\"dd-MM-yyyy HHmm\"));","lastModifiedDate":"2024-01-26"},{"lineNumber":15,"author":{"gitId":"Jawad280"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-01-26"},{"lineNumber":16,"author":{"gitId":"Jawad280"},"content":" throw new TobiasException(\" Kindly enter the date or time in this format : dd-MM-yyyy HHmm\");","lastModifiedDate":"2024-01-26"},{"lineNumber":17,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":18,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":19,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":20,"author":{"gitId":"Jawad280"},"content":" public static Command parseCommands(String command, TaskList tasks) throws TobiasException {","lastModifiedDate":"2024-01-26"},{"lineNumber":21,"author":{"gitId":"Jawad280"},"content":" if(command.equals(\"list\")) {","lastModifiedDate":"2024-01-26"},{"lineNumber":22,"author":{"gitId":"Jawad280"},"content":" ListCommand lc \u003d new ListCommand();","lastModifiedDate":"2024-01-26"},{"lineNumber":23,"author":{"gitId":"Jawad280"},"content":" return lc;","lastModifiedDate":"2024-01-26"},{"lineNumber":24,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":25,"author":{"gitId":"Jawad280"},"content":" else if (command.startsWith(\"todo\")) {","lastModifiedDate":"2024-01-26"},{"lineNumber":26,"author":{"gitId":"Jawad280"},"content":" try {","lastModifiedDate":"2024-01-26"},{"lineNumber":27,"author":{"gitId":"Jawad280"},"content":" if (command.equals(\"todo\")) {","lastModifiedDate":"2024-01-26"},{"lineNumber":28,"author":{"gitId":"Jawad280"},"content":" throw new TobiasException(\" Hey, please enter a description !\");","lastModifiedDate":"2024-01-26"},{"lineNumber":29,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":30,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":31,"author":{"gitId":"Jawad280"},"content":" String blank \u003d command.substring(4,5);","lastModifiedDate":"2024-01-26"},{"lineNumber":32,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":33,"author":{"gitId":"Jawad280"},"content":" if (!blank.isBlank()) {","lastModifiedDate":"2024-01-26"},{"lineNumber":34,"author":{"gitId":"Jawad280"},"content":" throw new TobiasException(\" Kindly type your task a space after todo!\");","lastModifiedDate":"2024-01-26"},{"lineNumber":35,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":36,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":37,"author":{"gitId":"Jawad280"},"content":" String description \u003d command.substring(5);","lastModifiedDate":"2024-01-26"},{"lineNumber":38,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":39,"author":{"gitId":"Jawad280"},"content":" TodoCommand td \u003d new TodoCommand(description);","lastModifiedDate":"2024-01-26"},{"lineNumber":40,"author":{"gitId":"Jawad280"},"content":" return td;","lastModifiedDate":"2024-01-26"},{"lineNumber":41,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":42,"author":{"gitId":"Jawad280"},"content":" } catch(TobiasException e) {","lastModifiedDate":"2024-01-26"},{"lineNumber":43,"author":{"gitId":"Jawad280"},"content":" e.printMessage();","lastModifiedDate":"2024-01-26"},{"lineNumber":44,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":45,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":46,"author":{"gitId":"Jawad280"},"content":" else if (command.startsWith(\"deadline\")) {","lastModifiedDate":"2024-01-26"},{"lineNumber":47,"author":{"gitId":"Jawad280"},"content":" try {","lastModifiedDate":"2024-01-26"},{"lineNumber":48,"author":{"gitId":"Jawad280"},"content":" if (command.equals(\"deadline\")) {","lastModifiedDate":"2024-01-26"},{"lineNumber":49,"author":{"gitId":"Jawad280"},"content":" throw new TobiasException(\" Hey, please enter a description !\");","lastModifiedDate":"2024-01-26"},{"lineNumber":50,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":51,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":52,"author":{"gitId":"Jawad280"},"content":" String blank \u003d command.substring(8,9);","lastModifiedDate":"2024-01-26"},{"lineNumber":53,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":54,"author":{"gitId":"Jawad280"},"content":" if (!blank.isBlank()) {","lastModifiedDate":"2024-01-26"},{"lineNumber":55,"author":{"gitId":"Jawad280"},"content":" throw new TobiasException(\" Kindly type your task a space after deadline!\");","lastModifiedDate":"2024-01-26"},{"lineNumber":56,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":57,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":58,"author":{"gitId":"Jawad280"},"content":" int byIndex \u003d command.indexOf(\"/by\");","lastModifiedDate":"2024-01-26"},{"lineNumber":59,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":60,"author":{"gitId":"Jawad280"},"content":" if (byIndex \u003d\u003d -1) {","lastModifiedDate":"2024-01-26"},{"lineNumber":61,"author":{"gitId":"Jawad280"},"content":" throw new TobiasException(\" Hey, please use \u0027/by\u0027 to specify the deadline!!\");","lastModifiedDate":"2024-01-26"},{"lineNumber":62,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":63,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":64,"author":{"gitId":"Jawad280"},"content":" String description \u003d command.substring(9, byIndex);","lastModifiedDate":"2024-01-26"},{"lineNumber":65,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":66,"author":{"gitId":"Jawad280"},"content":" int deadlineIndex \u003d byIndex+4;","lastModifiedDate":"2024-01-26"},{"lineNumber":67,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":68,"author":{"gitId":"Jawad280"},"content":" if (deadlineIndex \u003e command.length()) {","lastModifiedDate":"2024-01-26"},{"lineNumber":69,"author":{"gitId":"Jawad280"},"content":" throw new TobiasException(\" Hey, please enter a date \u0026 time in this format : dd-MM-yyyy HHmm !\");","lastModifiedDate":"2024-01-26"},{"lineNumber":70,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":71,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":72,"author":{"gitId":"Jawad280"},"content":" String deadline \u003d command.substring(byIndex + 4);","lastModifiedDate":"2024-01-26"},{"lineNumber":73,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":74,"author":{"gitId":"Jawad280"},"content":" LocalDateTime dd \u003d dateFromString(deadline);","lastModifiedDate":"2024-01-26"},{"lineNumber":75,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":76,"author":{"gitId":"Jawad280"},"content":" if (deadline.isEmpty() || deadline.isBlank()) {","lastModifiedDate":"2024-01-26"},{"lineNumber":77,"author":{"gitId":"Jawad280"},"content":" throw new TobiasException(\" Hey, please enter a date \u0026 time in this format : dd-MM-yyyy HHmm !\");","lastModifiedDate":"2024-01-26"},{"lineNumber":78,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":79,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":80,"author":{"gitId":"Jawad280"},"content":" DeadlineCommand dc \u003d new DeadlineCommand(description, dd);","lastModifiedDate":"2024-01-26"},{"lineNumber":81,"author":{"gitId":"Jawad280"},"content":" return dc;","lastModifiedDate":"2024-01-26"},{"lineNumber":82,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":83,"author":{"gitId":"Jawad280"},"content":" } catch (TobiasException e) {","lastModifiedDate":"2024-01-26"},{"lineNumber":84,"author":{"gitId":"Jawad280"},"content":" e.printMessage();","lastModifiedDate":"2024-01-26"},{"lineNumber":85,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":86,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":87,"author":{"gitId":"Jawad280"},"content":" else if (command.startsWith(\"event\")) {","lastModifiedDate":"2024-01-26"},{"lineNumber":88,"author":{"gitId":"Jawad280"},"content":" try {","lastModifiedDate":"2024-01-26"},{"lineNumber":89,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":90,"author":{"gitId":"Jawad280"},"content":" if (command.equals(\"event\")) {","lastModifiedDate":"2024-01-26"},{"lineNumber":91,"author":{"gitId":"Jawad280"},"content":" throw new TobiasException(\" Hey, please enter a description !\");","lastModifiedDate":"2024-01-26"},{"lineNumber":92,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":93,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":94,"author":{"gitId":"Jawad280"},"content":" String blank \u003d command.substring(5,6);","lastModifiedDate":"2024-01-26"},{"lineNumber":95,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":96,"author":{"gitId":"Jawad280"},"content":" if (!blank.isBlank()) {","lastModifiedDate":"2024-01-26"},{"lineNumber":97,"author":{"gitId":"Jawad280"},"content":" throw new TobiasException(\" Kindly type your task a space after event!\");","lastModifiedDate":"2024-01-26"},{"lineNumber":98,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":99,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":100,"author":{"gitId":"Jawad280"},"content":" int fromIndex \u003d command.indexOf(\"/from\");","lastModifiedDate":"2024-01-26"},{"lineNumber":101,"author":{"gitId":"Jawad280"},"content":" int toIndex \u003d command.indexOf(\"/to\");","lastModifiedDate":"2024-01-26"},{"lineNumber":102,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":103,"author":{"gitId":"Jawad280"},"content":" if (fromIndex \u003d\u003d -1 \u0026\u0026 toIndex \u003d\u003d -1) {","lastModifiedDate":"2024-01-26"},{"lineNumber":104,"author":{"gitId":"Jawad280"},"content":" throw new TobiasException(\" Hey, please enter a /from and /to date/day/time!!\");","lastModifiedDate":"2024-01-26"},{"lineNumber":105,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":106,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":107,"author":{"gitId":"Jawad280"},"content":" if (fromIndex \u003d\u003d -1) {","lastModifiedDate":"2024-01-26"},{"lineNumber":108,"author":{"gitId":"Jawad280"},"content":" throw new TobiasException(\" Hey, please enter a /from date/day/time!!\");","lastModifiedDate":"2024-01-26"},{"lineNumber":109,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":110,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":111,"author":{"gitId":"Jawad280"},"content":" if (toIndex \u003d\u003d -1) {","lastModifiedDate":"2024-01-26"},{"lineNumber":112,"author":{"gitId":"Jawad280"},"content":" throw new TobiasException(\" Hey, please enter a /to date/day/time!!\");","lastModifiedDate":"2024-01-26"},{"lineNumber":113,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":114,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":115,"author":{"gitId":"Jawad280"},"content":" if (fromIndex \u003e toIndex \u0026\u0026 toIndex \u003e 0) {","lastModifiedDate":"2024-01-26"},{"lineNumber":116,"author":{"gitId":"Jawad280"},"content":" throw new TobiasException(\" Hey, you have to enter /from before /to !!\");","lastModifiedDate":"2024-01-26"},{"lineNumber":117,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":118,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":119,"author":{"gitId":"Jawad280"},"content":" String from \u003d command.substring(fromIndex + 6, toIndex);","lastModifiedDate":"2024-01-26"},{"lineNumber":120,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":121,"author":{"gitId":"Jawad280"},"content":" if (from.isEmpty() || from.isBlank()) {","lastModifiedDate":"2024-01-26"},{"lineNumber":122,"author":{"gitId":"Jawad280"},"content":" throw new TobiasException(\" Hey, please enter a /from date/day/time!!\");","lastModifiedDate":"2024-01-26"},{"lineNumber":123,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":124,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":125,"author":{"gitId":"Jawad280"},"content":" if ((toIndex + 4) \u003e command.length()) {","lastModifiedDate":"2024-01-26"},{"lineNumber":126,"author":{"gitId":"Jawad280"},"content":" throw new TobiasException(\" Hey, please enter a /to date/day/time!!\");","lastModifiedDate":"2024-01-26"},{"lineNumber":127,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":128,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":129,"author":{"gitId":"Jawad280"},"content":" String to \u003d command.substring(toIndex + 4);","lastModifiedDate":"2024-01-26"},{"lineNumber":130,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":131,"author":{"gitId":"Jawad280"},"content":" if (to.isEmpty() || to.isBlank()) {","lastModifiedDate":"2024-01-26"},{"lineNumber":132,"author":{"gitId":"Jawad280"},"content":" throw new TobiasException(\" Hey, please enter a /to date/day/time!!\");","lastModifiedDate":"2024-01-26"},{"lineNumber":133,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":134,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":135,"author":{"gitId":"Jawad280"},"content":" String description \u003d command.substring(6, fromIndex);","lastModifiedDate":"2024-01-26"},{"lineNumber":136,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":137,"author":{"gitId":"Jawad280"},"content":" LocalDateTime f \u003d dateFromString(from);","lastModifiedDate":"2024-01-26"},{"lineNumber":138,"author":{"gitId":"Jawad280"},"content":" LocalDateTime t \u003d dateFromString(to);","lastModifiedDate":"2024-01-26"},{"lineNumber":139,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":140,"author":{"gitId":"Jawad280"},"content":" EventCommand ec \u003d new EventCommand(description, f, t);","lastModifiedDate":"2024-01-26"},{"lineNumber":141,"author":{"gitId":"Jawad280"},"content":" return ec;","lastModifiedDate":"2024-01-26"},{"lineNumber":142,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":143,"author":{"gitId":"Jawad280"},"content":" } catch (TobiasException e) {","lastModifiedDate":"2024-01-26"},{"lineNumber":144,"author":{"gitId":"Jawad280"},"content":" e.printMessage();","lastModifiedDate":"2024-01-26"},{"lineNumber":145,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":146,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":147,"author":{"gitId":"Jawad280"},"content":" else if (command.startsWith(\"mark\")) {","lastModifiedDate":"2024-01-26"},{"lineNumber":148,"author":{"gitId":"Jawad280"},"content":" try {","lastModifiedDate":"2024-01-26"},{"lineNumber":149,"author":{"gitId":"Jawad280"},"content":" int size \u003d tasks.taskNum();","lastModifiedDate":"2024-01-26"},{"lineNumber":150,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":151,"author":{"gitId":"Jawad280"},"content":" if (size \u003d\u003d 0) {","lastModifiedDate":"2024-01-26"},{"lineNumber":152,"author":{"gitId":"Jawad280"},"content":" throw new TobiasException(\" Your list is empty at the moment, add some todos/events/deadlines to MARK them!\");","lastModifiedDate":"2024-01-26"},{"lineNumber":153,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":154,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":155,"author":{"gitId":"Jawad280"},"content":" if (command.equals(\"mark\")) {","lastModifiedDate":"2024-01-26"},{"lineNumber":156,"author":{"gitId":"Jawad280"},"content":" throw new TobiasException(\" No index provided! Please give a valid index from 1 to \" + size +\" !!\");","lastModifiedDate":"2024-01-26"},{"lineNumber":157,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":158,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":159,"author":{"gitId":"Jawad280"},"content":" String blank \u003d command.substring(4,5);","lastModifiedDate":"2024-01-26"},{"lineNumber":160,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":161,"author":{"gitId":"Jawad280"},"content":" if (!blank.isBlank()) {","lastModifiedDate":"2024-01-26"},{"lineNumber":162,"author":{"gitId":"Jawad280"},"content":" throw new TobiasException(\" Kindly type your task a space after mark!\");","lastModifiedDate":"2024-01-26"},{"lineNumber":163,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":164,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":165,"author":{"gitId":"Jawad280"},"content":" int index \u003d Integer.parseInt(command.substring(5)) - 1;","lastModifiedDate":"2024-01-26"},{"lineNumber":166,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":167,"author":{"gitId":"Jawad280"},"content":" if (index \u003e\u003d 0 \u0026\u0026 index \u003c size) {","lastModifiedDate":"2024-01-26"},{"lineNumber":168,"author":{"gitId":"Jawad280"},"content":" MarkCommand mc \u003d new MarkCommand(index);","lastModifiedDate":"2024-01-26"},{"lineNumber":169,"author":{"gitId":"Jawad280"},"content":" return mc;","lastModifiedDate":"2024-01-26"},{"lineNumber":170,"author":{"gitId":"Jawad280"},"content":" } else {","lastModifiedDate":"2024-01-26"},{"lineNumber":171,"author":{"gitId":"Jawad280"},"content":" throw new TobiasException(\" Invalid number provided! Please give a valid index from 1 to \" + size +\" !!\");","lastModifiedDate":"2024-01-26"},{"lineNumber":172,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":173,"author":{"gitId":"Jawad280"},"content":" } catch (TobiasException e) {","lastModifiedDate":"2024-01-26"},{"lineNumber":174,"author":{"gitId":"Jawad280"},"content":" e.printMessage();","lastModifiedDate":"2024-01-26"},{"lineNumber":175,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":176,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":177,"author":{"gitId":"Jawad280"},"content":" else if (command.startsWith(\"unmark\")) {","lastModifiedDate":"2024-01-26"},{"lineNumber":178,"author":{"gitId":"Jawad280"},"content":" try {","lastModifiedDate":"2024-01-26"},{"lineNumber":179,"author":{"gitId":"Jawad280"},"content":" int size \u003d tasks.taskNum();","lastModifiedDate":"2024-01-26"},{"lineNumber":180,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":181,"author":{"gitId":"Jawad280"},"content":" if (size \u003d\u003d 0) {","lastModifiedDate":"2024-01-26"},{"lineNumber":182,"author":{"gitId":"Jawad280"},"content":" throw new TobiasException(\" Your list is empty at the moment, add some todos/events/deadlines to UNMARK them!\");","lastModifiedDate":"2024-01-26"},{"lineNumber":183,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":184,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":185,"author":{"gitId":"Jawad280"},"content":" if (command.equals(\"unmark\")) {","lastModifiedDate":"2024-01-26"},{"lineNumber":186,"author":{"gitId":"Jawad280"},"content":" throw new TobiasException(\" No index provided! Please give a valid index from 1 to \" + size +\" !!\");","lastModifiedDate":"2024-01-26"},{"lineNumber":187,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":188,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":189,"author":{"gitId":"Jawad280"},"content":" String blank \u003d command.substring(6,7);","lastModifiedDate":"2024-01-26"},{"lineNumber":190,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":191,"author":{"gitId":"Jawad280"},"content":" if (!blank.isBlank()) {","lastModifiedDate":"2024-01-26"},{"lineNumber":192,"author":{"gitId":"Jawad280"},"content":" throw new TobiasException(\" Kindly type your task a space after unmark!\");","lastModifiedDate":"2024-01-26"},{"lineNumber":193,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":194,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":195,"author":{"gitId":"Jawad280"},"content":" int index \u003d Integer.parseInt(command.substring(7)) - 1;","lastModifiedDate":"2024-01-26"},{"lineNumber":196,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":197,"author":{"gitId":"Jawad280"},"content":" if (index \u003e\u003d 0 \u0026\u0026 index \u003c size) {","lastModifiedDate":"2024-01-26"},{"lineNumber":198,"author":{"gitId":"Jawad280"},"content":" UnmarkCommand uc \u003d new UnmarkCommand(index);","lastModifiedDate":"2024-01-26"},{"lineNumber":199,"author":{"gitId":"Jawad280"},"content":" return uc;","lastModifiedDate":"2024-01-26"},{"lineNumber":200,"author":{"gitId":"Jawad280"},"content":" } else {","lastModifiedDate":"2024-01-26"},{"lineNumber":201,"author":{"gitId":"Jawad280"},"content":" throw new TobiasException(\" Invalid number provided! Please give a valid index from 1 to \" + size +\" !!\");","lastModifiedDate":"2024-01-26"},{"lineNumber":202,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":203,"author":{"gitId":"Jawad280"},"content":" } catch (TobiasException e) {","lastModifiedDate":"2024-01-26"},{"lineNumber":204,"author":{"gitId":"Jawad280"},"content":" e.printMessage();","lastModifiedDate":"2024-01-26"},{"lineNumber":205,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":206,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":207,"author":{"gitId":"Jawad280"},"content":" else if (command.startsWith(\"delete\")) {","lastModifiedDate":"2024-01-26"},{"lineNumber":208,"author":{"gitId":"Jawad280"},"content":" try {","lastModifiedDate":"2024-01-26"},{"lineNumber":209,"author":{"gitId":"Jawad280"},"content":" int size \u003d tasks.taskNum();","lastModifiedDate":"2024-01-26"},{"lineNumber":210,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":211,"author":{"gitId":"Jawad280"},"content":" if (size \u003d\u003d 0) {","lastModifiedDate":"2024-01-26"},{"lineNumber":212,"author":{"gitId":"Jawad280"},"content":" throw new TobiasException(\" Your list is empty at the moment, add some todos/events/deadlines to DELETE them!\");","lastModifiedDate":"2024-01-26"},{"lineNumber":213,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":214,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":215,"author":{"gitId":"Jawad280"},"content":" if (command.equals(\"delete\")) {","lastModifiedDate":"2024-01-26"},{"lineNumber":216,"author":{"gitId":"Jawad280"},"content":" throw new TobiasException(\" No index provided! Please give a valid index from 1 to \" + size +\" !!\");","lastModifiedDate":"2024-01-26"},{"lineNumber":217,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":218,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":219,"author":{"gitId":"Jawad280"},"content":" String blank \u003d command.substring(6,7);","lastModifiedDate":"2024-01-26"},{"lineNumber":220,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":221,"author":{"gitId":"Jawad280"},"content":" if (!blank.isBlank()) {","lastModifiedDate":"2024-01-26"},{"lineNumber":222,"author":{"gitId":"Jawad280"},"content":" throw new TobiasException(\" Kindly type your task a space after delete!\");","lastModifiedDate":"2024-01-26"},{"lineNumber":223,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":224,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":225,"author":{"gitId":"Jawad280"},"content":" int index \u003d Integer.parseInt(command.substring(7)) - 1;","lastModifiedDate":"2024-01-26"},{"lineNumber":226,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":227,"author":{"gitId":"Jawad280"},"content":" if (index \u003e\u003d 0 \u0026\u0026 index \u003c size) {","lastModifiedDate":"2024-01-26"},{"lineNumber":228,"author":{"gitId":"Jawad280"},"content":" DeleteCommand dc \u003d new DeleteCommand(index);","lastModifiedDate":"2024-01-26"},{"lineNumber":229,"author":{"gitId":"Jawad280"},"content":" return dc;","lastModifiedDate":"2024-01-26"},{"lineNumber":230,"author":{"gitId":"Jawad280"},"content":" } else {","lastModifiedDate":"2024-01-26"},{"lineNumber":231,"author":{"gitId":"Jawad280"},"content":" throw new TobiasException(\" Invalid number provided! Please give a valid index from 1 to \" + size +\" !!\");","lastModifiedDate":"2024-01-26"},{"lineNumber":232,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":233,"author":{"gitId":"Jawad280"},"content":" } catch (TobiasException e) {","lastModifiedDate":"2024-01-26"},{"lineNumber":234,"author":{"gitId":"Jawad280"},"content":" e.printMessage();","lastModifiedDate":"2024-01-26"},{"lineNumber":235,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":236,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":237,"author":{"gitId":"Jawad280"},"content":" else if (command.equals(\"bye\")) {","lastModifiedDate":"2024-01-26"},{"lineNumber":238,"author":{"gitId":"Jawad280"},"content":" ExitCommand ec \u003d new ExitCommand();","lastModifiedDate":"2024-01-26"},{"lineNumber":239,"author":{"gitId":"Jawad280"},"content":" return ec;","lastModifiedDate":"2024-01-26"},{"lineNumber":240,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":241,"author":{"gitId":"Jawad280"},"content":" throw new TobiasException(","lastModifiedDate":"2024-01-26"},{"lineNumber":242,"author":{"gitId":"Jawad280"},"content":" \" You can ask me stuff like : \u0027bye\u0027, \u0027list\u0027, \u0027mark\u0027, \u0027unmark\u0027,\u0027delete\u0027\\n\" +","lastModifiedDate":"2024-01-26"},{"lineNumber":243,"author":{"gitId":"Jawad280"},"content":" \" You can ask me to create these : \u0027todo\u0027, \u0027deadline\u0027, \u0027event\u0027\");","lastModifiedDate":"2024-01-26"},{"lineNumber":244,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":245,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":246,"author":{"gitId":"Jawad280"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"Jawad280":246}},{"path":"src/main/java/storage/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Jawad280"},"content":"package storage;","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":3,"author":{"gitId":"Jawad280"},"content":"import exception.TobiasException;","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"Jawad280"},"content":"import parser.Parser;","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"Jawad280"},"content":"import task.*;","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"Jawad280"},"content":"import java.io.File;","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"Jawad280"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"Jawad280"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"Jawad280"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"Jawad280"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-26"},{"lineNumber":12,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":13,"author":{"gitId":"Jawad280"},"content":"public class Storage {","lastModifiedDate":"2024-01-26"},{"lineNumber":14,"author":{"gitId":"Jawad280"},"content":" private String filePath;","lastModifiedDate":"2024-01-26"},{"lineNumber":15,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":16,"author":{"gitId":"Jawad280"},"content":" public Storage(String filePath) {","lastModifiedDate":"2024-01-26"},{"lineNumber":17,"author":{"gitId":"Jawad280"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2024-01-26"},{"lineNumber":18,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":19,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":20,"author":{"gitId":"Jawad280"},"content":" public void createLocalStorage() {","lastModifiedDate":"2024-01-26"},{"lineNumber":21,"author":{"gitId":"Jawad280"},"content":" try {","lastModifiedDate":"2024-01-26"},{"lineNumber":22,"author":{"gitId":"Jawad280"},"content":" File file \u003d new File(filePath);","lastModifiedDate":"2024-01-26"},{"lineNumber":23,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":24,"author":{"gitId":"Jawad280"},"content":" if (!file.getParentFile().exists()) {","lastModifiedDate":"2024-01-26"},{"lineNumber":25,"author":{"gitId":"Jawad280"},"content":" file.getParentFile().mkdirs();","lastModifiedDate":"2024-01-26"},{"lineNumber":26,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":27,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":28,"author":{"gitId":"Jawad280"},"content":" if (file.createNewFile()) {","lastModifiedDate":"2024-01-26"},{"lineNumber":29,"author":{"gitId":"Jawad280"},"content":" System.out.println(\" File created successfully: \" + file.getAbsolutePath());","lastModifiedDate":"2024-01-26"},{"lineNumber":30,"author":{"gitId":"Jawad280"},"content":" } else {","lastModifiedDate":"2024-01-26"},{"lineNumber":31,"author":{"gitId":"Jawad280"},"content":" System.out.println(\" File alr exists: \" + file.getAbsolutePath());","lastModifiedDate":"2024-01-26"},{"lineNumber":32,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":33,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":34,"author":{"gitId":"Jawad280"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-01-26"},{"lineNumber":35,"author":{"gitId":"Jawad280"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-26"},{"lineNumber":36,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":37,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":38,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":39,"author":{"gitId":"Jawad280"},"content":" public static void localToList(String data, TaskList tasks) {","lastModifiedDate":"2024-01-26"},{"lineNumber":40,"author":{"gitId":"Jawad280"},"content":" try {","lastModifiedDate":"2024-01-26"},{"lineNumber":41,"author":{"gitId":"Jawad280"},"content":" if (data.startsWith(\"T\")) {","lastModifiedDate":"2024-01-26"},{"lineNumber":42,"author":{"gitId":"Jawad280"},"content":" boolean isDone \u003d Integer.parseInt(data.substring(8,9)) \u003d\u003d 1;","lastModifiedDate":"2024-01-26"},{"lineNumber":43,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":44,"author":{"gitId":"Jawad280"},"content":" int desc \u003d data.indexOf(\"|desc\");","lastModifiedDate":"2024-01-26"},{"lineNumber":45,"author":{"gitId":"Jawad280"},"content":" String description \u003d data.substring(desc+5);","lastModifiedDate":"2024-01-26"},{"lineNumber":46,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":47,"author":{"gitId":"Jawad280"},"content":" Task newTask \u003d new ToDo(description, isDone);","lastModifiedDate":"2024-01-26"},{"lineNumber":48,"author":{"gitId":"Jawad280"},"content":" tasks.addToList(newTask);","lastModifiedDate":"2024-01-26"},{"lineNumber":49,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":50,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":51,"author":{"gitId":"Jawad280"},"content":" else if (data.startsWith(\"D\")) {","lastModifiedDate":"2024-01-26"},{"lineNumber":52,"author":{"gitId":"Jawad280"},"content":" boolean isDone \u003d Integer.parseInt(data.substring(8,9)) \u003d\u003d 1;","lastModifiedDate":"2024-01-26"},{"lineNumber":53,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":54,"author":{"gitId":"Jawad280"},"content":" int desc \u003d data.indexOf(\"|desc\");","lastModifiedDate":"2024-01-26"},{"lineNumber":55,"author":{"gitId":"Jawad280"},"content":" int by \u003d data.indexOf(\"|by\");","lastModifiedDate":"2024-01-26"},{"lineNumber":56,"author":{"gitId":"Jawad280"},"content":" String description \u003d data.substring(desc+5, by);","lastModifiedDate":"2024-01-26"},{"lineNumber":57,"author":{"gitId":"Jawad280"},"content":" String byDate \u003d data.substring(by+3);","lastModifiedDate":"2024-01-26"},{"lineNumber":58,"author":{"gitId":"Jawad280"},"content":" LocalDateTime dd \u003d Parser.dateFromString(byDate);","lastModifiedDate":"2024-01-26"},{"lineNumber":59,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":60,"author":{"gitId":"Jawad280"},"content":" Task newTask \u003d new Deadline(description, isDone, dd);","lastModifiedDate":"2024-01-26"},{"lineNumber":61,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":62,"author":{"gitId":"Jawad280"},"content":" tasks.addToList(newTask);","lastModifiedDate":"2024-01-26"},{"lineNumber":63,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":64,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":65,"author":{"gitId":"Jawad280"},"content":" else if (data.startsWith(\"E\")) {","lastModifiedDate":"2024-01-26"},{"lineNumber":66,"author":{"gitId":"Jawad280"},"content":" boolean isDone \u003d Integer.parseInt(data.substring(8,9)) \u003d\u003d 1;","lastModifiedDate":"2024-01-26"},{"lineNumber":67,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":68,"author":{"gitId":"Jawad280"},"content":" int desc \u003d data.indexOf(\"|desc\");","lastModifiedDate":"2024-01-26"},{"lineNumber":69,"author":{"gitId":"Jawad280"},"content":" int from \u003d data.indexOf(\"|from\");","lastModifiedDate":"2024-01-26"},{"lineNumber":70,"author":{"gitId":"Jawad280"},"content":" int to \u003d data.indexOf(\"|to\");","lastModifiedDate":"2024-01-26"},{"lineNumber":71,"author":{"gitId":"Jawad280"},"content":" String description \u003d data.substring(desc+5, from);","lastModifiedDate":"2024-01-26"},{"lineNumber":72,"author":{"gitId":"Jawad280"},"content":" String fromDate \u003d data.substring(from+5, to);","lastModifiedDate":"2024-01-26"},{"lineNumber":73,"author":{"gitId":"Jawad280"},"content":" String toDate \u003d data.substring(to+3);","lastModifiedDate":"2024-01-26"},{"lineNumber":74,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":75,"author":{"gitId":"Jawad280"},"content":" LocalDateTime f \u003d Parser.dateFromString(fromDate);","lastModifiedDate":"2024-01-26"},{"lineNumber":76,"author":{"gitId":"Jawad280"},"content":" LocalDateTime t \u003d Parser.dateFromString(toDate);","lastModifiedDate":"2024-01-26"},{"lineNumber":77,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":78,"author":{"gitId":"Jawad280"},"content":" Task newTask \u003d new Event(description, isDone, f, t);","lastModifiedDate":"2024-01-26"},{"lineNumber":79,"author":{"gitId":"Jawad280"},"content":" tasks.addToList(newTask);","lastModifiedDate":"2024-01-26"},{"lineNumber":80,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":81,"author":{"gitId":"Jawad280"},"content":" else {","lastModifiedDate":"2024-01-26"},{"lineNumber":82,"author":{"gitId":"Jawad280"},"content":" throw new TobiasException(\" Saved file is corrupted!\");","lastModifiedDate":"2024-01-26"},{"lineNumber":83,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":84,"author":{"gitId":"Jawad280"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-01-26"},{"lineNumber":85,"author":{"gitId":"Jawad280"},"content":" System.out.println(\"local to list function \" + e.getMessage());","lastModifiedDate":"2024-01-26"},{"lineNumber":86,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":87,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":88,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":89,"author":{"gitId":"Jawad280"},"content":" public TaskList localToCurrent() {","lastModifiedDate":"2024-01-26"},{"lineNumber":90,"author":{"gitId":"Jawad280"},"content":" TaskList tasks \u003d new TaskList();","lastModifiedDate":"2024-01-26"},{"lineNumber":91,"author":{"gitId":"Jawad280"},"content":" try {","lastModifiedDate":"2024-01-26"},{"lineNumber":92,"author":{"gitId":"Jawad280"},"content":" File f \u003d new File(filePath);","lastModifiedDate":"2024-01-26"},{"lineNumber":93,"author":{"gitId":"Jawad280"},"content":" Scanner s \u003d new Scanner(f);","lastModifiedDate":"2024-01-26"},{"lineNumber":94,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":95,"author":{"gitId":"Jawad280"},"content":" while (s.hasNext()) {","lastModifiedDate":"2024-01-26"},{"lineNumber":96,"author":{"gitId":"Jawad280"},"content":" localToList(s.nextLine(), tasks);","lastModifiedDate":"2024-01-26"},{"lineNumber":97,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":98,"author":{"gitId":"Jawad280"},"content":" s.close();","lastModifiedDate":"2024-01-26"},{"lineNumber":99,"author":{"gitId":"Jawad280"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-26"},{"lineNumber":100,"author":{"gitId":"Jawad280"},"content":" System.out.println(\"local to current function \" + e.getMessage());","lastModifiedDate":"2024-01-26"},{"lineNumber":101,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":102,"author":{"gitId":"Jawad280"},"content":" return tasks;","lastModifiedDate":"2024-01-26"},{"lineNumber":103,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":104,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":105,"author":{"gitId":"Jawad280"},"content":" public void storeToLocal(TaskList tasks) {","lastModifiedDate":"2024-01-26"},{"lineNumber":106,"author":{"gitId":"Jawad280"},"content":" String result \u003d tasks.saveMechanism();","lastModifiedDate":"2024-01-26"},{"lineNumber":107,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":108,"author":{"gitId":"Jawad280"},"content":" try {","lastModifiedDate":"2024-01-26"},{"lineNumber":109,"author":{"gitId":"Jawad280"},"content":" FileWriter fw \u003d new FileWriter(\"data/tobias.txt\");","lastModifiedDate":"2024-01-26"},{"lineNumber":110,"author":{"gitId":"Jawad280"},"content":" fw.write(result);","lastModifiedDate":"2024-01-26"},{"lineNumber":111,"author":{"gitId":"Jawad280"},"content":" fw.close();","lastModifiedDate":"2024-01-26"},{"lineNumber":112,"author":{"gitId":"Jawad280"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-26"},{"lineNumber":113,"author":{"gitId":"Jawad280"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-26"},{"lineNumber":114,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":115,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":116,"author":{"gitId":"Jawad280"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"Jawad280":116}},{"path":"src/main/java/task/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Jawad280"},"content":"package task;","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":3,"author":{"gitId":"Jawad280"},"content":"import exception.TobiasException;","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"Jawad280"},"content":"import ui.Ui;","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"Jawad280"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"Jawad280"},"content":"import java.util.List;","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"Jawad280"},"content":"public class TaskList {","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"Jawad280"},"content":" private List\u003cTask\u003e tasks;","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":12,"author":{"gitId":"Jawad280"},"content":" public TaskList() {","lastModifiedDate":"2024-01-26"},{"lineNumber":13,"author":{"gitId":"Jawad280"},"content":" this.tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-26"},{"lineNumber":14,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":15,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":16,"author":{"gitId":"Jawad280"},"content":" public void addToList(Task task) {","lastModifiedDate":"2024-01-26"},{"lineNumber":17,"author":{"gitId":"Jawad280"},"content":" tasks.add(task);","lastModifiedDate":"2024-01-26"},{"lineNumber":18,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":19,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":20,"author":{"gitId":"Jawad280"},"content":" public Task getTask(int index) {","lastModifiedDate":"2024-01-26"},{"lineNumber":21,"author":{"gitId":"Jawad280"},"content":" return tasks.get(index);","lastModifiedDate":"2024-01-26"},{"lineNumber":22,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":23,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":24,"author":{"gitId":"Jawad280"},"content":" public void removeFromList(int index) {","lastModifiedDate":"2024-01-26"},{"lineNumber":25,"author":{"gitId":"Jawad280"},"content":" tasks.remove(index);","lastModifiedDate":"2024-01-26"},{"lineNumber":26,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":27,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":28,"author":{"gitId":"Jawad280"},"content":" public String saveMechanism() {","lastModifiedDate":"2024-01-26"},{"lineNumber":29,"author":{"gitId":"Jawad280"},"content":" String result \u003d \"\";","lastModifiedDate":"2024-01-26"},{"lineNumber":30,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":31,"author":{"gitId":"Jawad280"},"content":" for (Task task : tasks) {","lastModifiedDate":"2024-01-26"},{"lineNumber":32,"author":{"gitId":"Jawad280"},"content":" result +\u003d task.storagePrinter() + System.lineSeparator();","lastModifiedDate":"2024-01-26"},{"lineNumber":33,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":34,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":35,"author":{"gitId":"Jawad280"},"content":" return result;","lastModifiedDate":"2024-01-26"},{"lineNumber":36,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":37,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":38,"author":{"gitId":"Jawad280"},"content":" public int taskNum() {","lastModifiedDate":"2024-01-26"},{"lineNumber":39,"author":{"gitId":"Jawad280"},"content":" return tasks.size();","lastModifiedDate":"2024-01-26"},{"lineNumber":40,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":41,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":42,"author":{"gitId":"Jawad280"},"content":" public void printList() {","lastModifiedDate":"2024-01-26"},{"lineNumber":43,"author":{"gitId":"Jawad280"},"content":" try {","lastModifiedDate":"2024-01-26"},{"lineNumber":44,"author":{"gitId":"Jawad280"},"content":" if (tasks.isEmpty()) {","lastModifiedDate":"2024-01-26"},{"lineNumber":45,"author":{"gitId":"Jawad280"},"content":" throw new TobiasException(\" Your list is empty at the moment !\");","lastModifiedDate":"2024-01-26"},{"lineNumber":46,"author":{"gitId":"Jawad280"},"content":" } else {","lastModifiedDate":"2024-01-26"},{"lineNumber":47,"author":{"gitId":"Jawad280"},"content":" Ui.printDivider();","lastModifiedDate":"2024-01-26"},{"lineNumber":48,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":49,"author":{"gitId":"Jawad280"},"content":" System.out.println(\" Here are the tasks in your list:\");","lastModifiedDate":"2024-01-26"},{"lineNumber":50,"author":{"gitId":"Jawad280"},"content":" for (Task task : tasks) {","lastModifiedDate":"2024-01-26"},{"lineNumber":51,"author":{"gitId":"Jawad280"},"content":" int index \u003d tasks.indexOf(task);","lastModifiedDate":"2024-01-26"},{"lineNumber":52,"author":{"gitId":"Jawad280"},"content":" task.taskPrinter(index);","lastModifiedDate":"2024-01-26"},{"lineNumber":53,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":54,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":55,"author":{"gitId":"Jawad280"},"content":" Ui.printDivider();","lastModifiedDate":"2024-01-26"},{"lineNumber":56,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":57,"author":{"gitId":"Jawad280"},"content":" } catch (TobiasException e) {","lastModifiedDate":"2024-01-26"},{"lineNumber":58,"author":{"gitId":"Jawad280"},"content":" e.printMessage();","lastModifiedDate":"2024-01-26"},{"lineNumber":59,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":60,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":61,"author":{"gitId":"Jawad280"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"Jawad280":61}},{"path":"src/main/java/ui/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Jawad280"},"content":"package ui;","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":3,"author":{"gitId":"Jawad280"},"content":"import task.Task;","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"Jawad280"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"Jawad280"},"content":"public class Ui {","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"Jawad280"},"content":" private static final String DIVIDER \u003d \" ---------------------------------------------------------------------------------------\";","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"Jawad280"},"content":" private static final String BOTNAME \u003d \"TOBIAS\";","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"Jawad280"},"content":" public void helloPrinter() {","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"Jawad280"},"content":" System.out.println(DIVIDER);","lastModifiedDate":"2024-01-26"},{"lineNumber":12,"author":{"gitId":"Jawad280"},"content":" System.out.println(\" Hello there! I\u0027m \" + BOTNAME);","lastModifiedDate":"2024-01-26"},{"lineNumber":13,"author":{"gitId":"Jawad280"},"content":" System.out.println(\" What can I do for you today ?\");","lastModifiedDate":"2024-01-26"},{"lineNumber":14,"author":{"gitId":"Jawad280"},"content":" System.out.println(DIVIDER);","lastModifiedDate":"2024-01-26"},{"lineNumber":15,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":16,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":17,"author":{"gitId":"Jawad280"},"content":" public void goodbyePrinter() {","lastModifiedDate":"2024-01-26"},{"lineNumber":18,"author":{"gitId":"Jawad280"},"content":" System.out.println(DIVIDER);","lastModifiedDate":"2024-01-26"},{"lineNumber":19,"author":{"gitId":"Jawad280"},"content":" System.out.println(\" I say this with a heavy heart but Goodbye my lover :( Hope to see you soon!\");","lastModifiedDate":"2024-01-26"},{"lineNumber":20,"author":{"gitId":"Jawad280"},"content":" System.out.println(DIVIDER);","lastModifiedDate":"2024-01-26"},{"lineNumber":21,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":22,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":23,"author":{"gitId":"Jawad280"},"content":" public void addedTaskPrinter(Task task, int size) {","lastModifiedDate":"2024-01-26"},{"lineNumber":24,"author":{"gitId":"Jawad280"},"content":" System.out.println(DIVIDER);","lastModifiedDate":"2024-01-26"},{"lineNumber":25,"author":{"gitId":"Jawad280"},"content":" System.out.println(\" Got it. I\u0027ve added this task: \");","lastModifiedDate":"2024-01-26"},{"lineNumber":26,"author":{"gitId":"Jawad280"},"content":" task.taskPrinter();","lastModifiedDate":"2024-01-26"},{"lineNumber":27,"author":{"gitId":"Jawad280"},"content":" System.out.println(\" Now you have \" + size + \" tasks in the list!\");","lastModifiedDate":"2024-01-26"},{"lineNumber":28,"author":{"gitId":"Jawad280"},"content":" System.out.println(DIVIDER);","lastModifiedDate":"2024-01-26"},{"lineNumber":29,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":30,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":31,"author":{"gitId":"Jawad280"},"content":" public static void printDivider() {","lastModifiedDate":"2024-01-26"},{"lineNumber":32,"author":{"gitId":"Jawad280"},"content":" System.out.println(DIVIDER);","lastModifiedDate":"2024-01-26"},{"lineNumber":33,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":34,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":35,"author":{"gitId":"Jawad280"},"content":" public String readCommand() {","lastModifiedDate":"2024-01-26"},{"lineNumber":36,"author":{"gitId":"Jawad280"},"content":" Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-26"},{"lineNumber":37,"author":{"gitId":"Jawad280"},"content":" String command \u003d scanner.nextLine().trim();","lastModifiedDate":"2024-01-26"},{"lineNumber":38,"author":{"gitId":"Jawad280"},"content":" return command;","lastModifiedDate":"2024-01-26"},{"lineNumber":39,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":40,"author":{"gitId":"Jawad280"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"Jawad280":40}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"Jawad280"},"content":"list","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"Jawad280"},"content":"todo Run","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"Jawad280"},"content":"deadline Submission /by Friday","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"Jawad280"},"content":"event Openhouse /from 25 Jan /to 28 Jan","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"Jawad280"},"content":"list","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"Jawad280"},"content":"mark 2","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"Jawad280"},"content":"bye","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"Jawad280":7}},{"path":"text-ui-test/runtest.sh","fileType":"sh","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"#!/usr/bin/env bash","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"# create bin directory if it doesn\u0027t exist","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"if [ ! -d \"../bin\" ]","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":" mkdir ../bin","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"# delete output from previous run","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"if [ -e \"./ACTUAL.TXT\" ]","lastModifiedDate":"2020-05-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":" rm ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"# compile the code into the bin folder, terminates if error occurred","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"if ! javac -cp ../src/main/java -Xlint:none -d ../bin ../src/main/java/*.java","lastModifiedDate":"2020-08-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" echo \"********** BUILD FAILURE **********\"","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" exit 1","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":"# run the program, feed commands from input.txt file and redirect the output to the ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"Jawad280"},"content":"java -classpath ../bin Tobias \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":"# convert to UNIX format","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":"cp EXPECTED.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":"dos2unix ACTUAL.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"# compare the output to the expected output","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"diff ACTUAL.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":"if [ $? -eq 0 ]","lastModifiedDate":"2020-05-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":" echo \"Test result: PASSED\"","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":" exit 0","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":"else","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" echo \"Test result: FAILED\"","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" exit 1","lastModifiedDate":"2020-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"Jawad280":1,"-":37}}] +[{"path":"src/main/java/Tobias.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Jawad280"},"content":"import command.Command;","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"Jawad280"},"content":"import exception.TobiasException;","lastModifiedDate":"2024-01-26"},{"lineNumber":3,"author":{"gitId":"Jawad280"},"content":"import parser.Parser;","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"Jawad280"},"content":"import storage.Storage;","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"Jawad280"},"content":"import task.TaskList;","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"Jawad280"},"content":"import ui.Ui;","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"Jawad280"},"content":"public class Tobias {","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"Jawad280"},"content":" private Storage storage;","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"Jawad280"},"content":" private TaskList tasks;","lastModifiedDate":"2024-01-26"},{"lineNumber":12,"author":{"gitId":"Jawad280"},"content":" private Ui ui;","lastModifiedDate":"2024-01-26"},{"lineNumber":13,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":14,"author":{"gitId":"Jawad280"},"content":" public Tobias(String filePath) {","lastModifiedDate":"2024-01-26"},{"lineNumber":15,"author":{"gitId":"Jawad280"},"content":" ui \u003d new Ui();","lastModifiedDate":"2024-01-26"},{"lineNumber":16,"author":{"gitId":"Jawad280"},"content":" storage \u003d new Storage(filePath);","lastModifiedDate":"2024-01-26"},{"lineNumber":17,"author":{"gitId":"Jawad280"},"content":" storage.createLocalStorage();","lastModifiedDate":"2024-01-26"},{"lineNumber":18,"author":{"gitId":"Jawad280"},"content":" try {","lastModifiedDate":"2024-01-26"},{"lineNumber":19,"author":{"gitId":"Jawad280"},"content":" tasks \u003d storage.localToCurrent();","lastModifiedDate":"2024-01-26"},{"lineNumber":20,"author":{"gitId":"Jawad280"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-01-26"},{"lineNumber":21,"author":{"gitId":"Jawad280"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-26"},{"lineNumber":22,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":23,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":24,"author":{"gitId":"Jawad280"},"content":" public void run() {","lastModifiedDate":"2024-01-26"},{"lineNumber":25,"author":{"gitId":"Jawad280"},"content":" ui.helloPrinter();","lastModifiedDate":"2024-01-26"},{"lineNumber":26,"author":{"gitId":"Jawad280"},"content":" boolean isExit \u003d false;","lastModifiedDate":"2024-01-26"},{"lineNumber":27,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":28,"author":{"gitId":"Jawad280"},"content":" while (!isExit) {","lastModifiedDate":"2024-01-25"},{"lineNumber":29,"author":{"gitId":"Jawad280"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":30,"author":{"gitId":"Jawad280"},"content":" String fullCommand \u003d ui.readCommand();","lastModifiedDate":"2024-01-26"},{"lineNumber":31,"author":{"gitId":"Jawad280"},"content":" Command c \u003d Parser.parseCommands(fullCommand, tasks);","lastModifiedDate":"2024-01-26"},{"lineNumber":32,"author":{"gitId":"Jawad280"},"content":" c.execute(tasks, ui, storage);","lastModifiedDate":"2024-01-26"},{"lineNumber":33,"author":{"gitId":"Jawad280"},"content":" isExit \u003d c.isExit();","lastModifiedDate":"2024-01-26"},{"lineNumber":34,"author":{"gitId":"Jawad280"},"content":" } catch (TobiasException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":35,"author":{"gitId":"Jawad280"},"content":" e.printMessage();","lastModifiedDate":"2024-01-25"},{"lineNumber":36,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":37,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":38,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":39,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":40,"author":{"gitId":"Jawad280"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-01-25"},{"lineNumber":41,"author":{"gitId":"Jawad280"},"content":" new Tobias(\"data/Tobias.txt\").run();","lastModifiedDate":"2024-01-26"},{"lineNumber":42,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":43,"author":{"gitId":"Jawad280"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"Jawad280":43}},{"path":"src/main/java/command/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Jawad280"},"content":"package command;","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"Jawad280"},"content":"import storage.Storage;","lastModifiedDate":"2024-01-26"},{"lineNumber":3,"author":{"gitId":"Jawad280"},"content":"import task.TaskList;","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"Jawad280"},"content":"import ui.Ui;","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"Jawad280"},"content":"public abstract class Command {","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"Jawad280"},"content":" public abstract void execute(TaskList tasks, Ui ui, Storage storage);","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"Jawad280"},"content":" public abstract boolean isExit();","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"Jawad280"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"Jawad280":9}},{"path":"src/main/java/command/DeadlineCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Jawad280"},"content":"package command;","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":3,"author":{"gitId":"Jawad280"},"content":"import storage.Storage;","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"Jawad280"},"content":"import task.Deadline;","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"Jawad280"},"content":"import task.Task;","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"Jawad280"},"content":"import task.TaskList;","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"Jawad280"},"content":"import ui.Ui;","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"Jawad280"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"Jawad280"},"content":"public class DeadlineCommand extends Command {","lastModifiedDate":"2024-01-26"},{"lineNumber":12,"author":{"gitId":"Jawad280"},"content":" protected String description;","lastModifiedDate":"2024-01-26"},{"lineNumber":13,"author":{"gitId":"Jawad280"},"content":" protected LocalDateTime deadline;","lastModifiedDate":"2024-01-26"},{"lineNumber":14,"author":{"gitId":"Jawad280"},"content":" protected boolean isDone;","lastModifiedDate":"2024-01-26"},{"lineNumber":15,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":16,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":17,"author":{"gitId":"Jawad280"},"content":" public DeadlineCommand(String description, LocalDateTime deadline) {","lastModifiedDate":"2024-01-26"},{"lineNumber":18,"author":{"gitId":"Jawad280"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-26"},{"lineNumber":19,"author":{"gitId":"Jawad280"},"content":" this.deadline \u003d deadline;","lastModifiedDate":"2024-01-26"},{"lineNumber":20,"author":{"gitId":"Jawad280"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-26"},{"lineNumber":21,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":22,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":23,"author":{"gitId":"Jawad280"},"content":" public DeadlineCommand(String description, LocalDateTime deadline, boolean isDone) {","lastModifiedDate":"2024-01-26"},{"lineNumber":24,"author":{"gitId":"Jawad280"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-26"},{"lineNumber":25,"author":{"gitId":"Jawad280"},"content":" this.deadline \u003d deadline;","lastModifiedDate":"2024-01-26"},{"lineNumber":26,"author":{"gitId":"Jawad280"},"content":" this.isDone \u003d isDone;","lastModifiedDate":"2024-01-26"},{"lineNumber":27,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":28,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":29,"author":{"gitId":"Jawad280"},"content":" @Override","lastModifiedDate":"2024-01-26"},{"lineNumber":30,"author":{"gitId":"Jawad280"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2024-01-26"},{"lineNumber":31,"author":{"gitId":"Jawad280"},"content":" Task task \u003d new Deadline(description, isDone, deadline);","lastModifiedDate":"2024-01-26"},{"lineNumber":32,"author":{"gitId":"Jawad280"},"content":" tasks.addToList(task);","lastModifiedDate":"2024-01-26"},{"lineNumber":33,"author":{"gitId":"Jawad280"},"content":" ui.addedTaskPrinter(task, tasks.taskNum());","lastModifiedDate":"2024-01-26"},{"lineNumber":34,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":35,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":36,"author":{"gitId":"Jawad280"},"content":" @Override","lastModifiedDate":"2024-01-26"},{"lineNumber":37,"author":{"gitId":"Jawad280"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-26"},{"lineNumber":38,"author":{"gitId":"Jawad280"},"content":" return false;","lastModifiedDate":"2024-01-26"},{"lineNumber":39,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":40,"author":{"gitId":"Jawad280"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"Jawad280":40}},{"path":"src/main/java/command/DeleteCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Jawad280"},"content":"package command;","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":3,"author":{"gitId":"Jawad280"},"content":"import storage.Storage;","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"Jawad280"},"content":"import task.Task;","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"Jawad280"},"content":"import task.TaskList;","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"Jawad280"},"content":"import ui.Ui;","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"Jawad280"},"content":"public class DeleteCommand extends Command {","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"Jawad280"},"content":" private int taskIndex;","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"Jawad280"},"content":" public DeleteCommand(int taskIndex) {","lastModifiedDate":"2024-01-26"},{"lineNumber":12,"author":{"gitId":"Jawad280"},"content":" this.taskIndex \u003d taskIndex;","lastModifiedDate":"2024-01-26"},{"lineNumber":13,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":14,"author":{"gitId":"Jawad280"},"content":" @Override","lastModifiedDate":"2024-01-26"},{"lineNumber":15,"author":{"gitId":"Jawad280"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2024-01-26"},{"lineNumber":16,"author":{"gitId":"Jawad280"},"content":" Task curr \u003d tasks.getTask(taskIndex);","lastModifiedDate":"2024-01-26"},{"lineNumber":17,"author":{"gitId":"Jawad280"},"content":" tasks.removeFromList(taskIndex);","lastModifiedDate":"2024-01-26"},{"lineNumber":18,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":19,"author":{"gitId":"Jawad280"},"content":" ui.printDivider();","lastModifiedDate":"2024-01-26"},{"lineNumber":20,"author":{"gitId":"Jawad280"},"content":" System.out.println(\" Noted, I\u0027ve removed this task: \");","lastModifiedDate":"2024-01-26"},{"lineNumber":21,"author":{"gitId":"Jawad280"},"content":" curr.taskPrinter();","lastModifiedDate":"2024-01-26"},{"lineNumber":22,"author":{"gitId":"Jawad280"},"content":" ui.printDivider();","lastModifiedDate":"2024-01-26"},{"lineNumber":23,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":24,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":25,"author":{"gitId":"Jawad280"},"content":" @Override","lastModifiedDate":"2024-01-26"},{"lineNumber":26,"author":{"gitId":"Jawad280"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-26"},{"lineNumber":27,"author":{"gitId":"Jawad280"},"content":" return false;","lastModifiedDate":"2024-01-26"},{"lineNumber":28,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":29,"author":{"gitId":"Jawad280"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"Jawad280":29}},{"path":"src/main/java/command/EventCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Jawad280"},"content":"package command;","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":3,"author":{"gitId":"Jawad280"},"content":"import storage.Storage;","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"Jawad280"},"content":"import task.Event;","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"Jawad280"},"content":"import task.Task;","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"Jawad280"},"content":"import task.TaskList;","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"Jawad280"},"content":"import ui.Ui;","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"Jawad280"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"Jawad280"},"content":"public class EventCommand extends Command {","lastModifiedDate":"2024-01-26"},{"lineNumber":12,"author":{"gitId":"Jawad280"},"content":" protected String description;","lastModifiedDate":"2024-01-26"},{"lineNumber":13,"author":{"gitId":"Jawad280"},"content":" protected LocalDateTime from;","lastModifiedDate":"2024-01-26"},{"lineNumber":14,"author":{"gitId":"Jawad280"},"content":" protected LocalDateTime to;","lastModifiedDate":"2024-01-26"},{"lineNumber":15,"author":{"gitId":"Jawad280"},"content":" protected boolean isDone;","lastModifiedDate":"2024-01-26"},{"lineNumber":16,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":17,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":18,"author":{"gitId":"Jawad280"},"content":" public EventCommand(String description, LocalDateTime from, LocalDateTime to) {","lastModifiedDate":"2024-01-26"},{"lineNumber":19,"author":{"gitId":"Jawad280"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-26"},{"lineNumber":20,"author":{"gitId":"Jawad280"},"content":" this.from \u003d from;","lastModifiedDate":"2024-01-26"},{"lineNumber":21,"author":{"gitId":"Jawad280"},"content":" this.to \u003d to;","lastModifiedDate":"2024-01-26"},{"lineNumber":22,"author":{"gitId":"Jawad280"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-26"},{"lineNumber":23,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":24,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":25,"author":{"gitId":"Jawad280"},"content":" public EventCommand(String description, LocalDateTime from, LocalDateTime to, boolean isDone) {","lastModifiedDate":"2024-01-26"},{"lineNumber":26,"author":{"gitId":"Jawad280"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-26"},{"lineNumber":27,"author":{"gitId":"Jawad280"},"content":" this.from \u003d from;","lastModifiedDate":"2024-01-26"},{"lineNumber":28,"author":{"gitId":"Jawad280"},"content":" this.to \u003d to;","lastModifiedDate":"2024-01-26"},{"lineNumber":29,"author":{"gitId":"Jawad280"},"content":" this.isDone \u003d isDone;","lastModifiedDate":"2024-01-26"},{"lineNumber":30,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":31,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":32,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":33,"author":{"gitId":"Jawad280"},"content":" @Override","lastModifiedDate":"2024-01-26"},{"lineNumber":34,"author":{"gitId":"Jawad280"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2024-01-26"},{"lineNumber":35,"author":{"gitId":"Jawad280"},"content":" Task task \u003d new Event(description, isDone, from, to);","lastModifiedDate":"2024-01-26"},{"lineNumber":36,"author":{"gitId":"Jawad280"},"content":" tasks.addToList(task);","lastModifiedDate":"2024-01-26"},{"lineNumber":37,"author":{"gitId":"Jawad280"},"content":" ui.addedTaskPrinter(task, tasks.taskNum());","lastModifiedDate":"2024-01-26"},{"lineNumber":38,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":39,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":40,"author":{"gitId":"Jawad280"},"content":" @Override","lastModifiedDate":"2024-01-26"},{"lineNumber":41,"author":{"gitId":"Jawad280"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-26"},{"lineNumber":42,"author":{"gitId":"Jawad280"},"content":" return false;","lastModifiedDate":"2024-01-26"},{"lineNumber":43,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":44,"author":{"gitId":"Jawad280"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"Jawad280":44}},{"path":"src/main/java/command/ExitCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Jawad280"},"content":"package command;","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":3,"author":{"gitId":"Jawad280"},"content":"import storage.Storage;","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"Jawad280"},"content":"import task.TaskList;","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"Jawad280"},"content":"import ui.Ui;","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"Jawad280"},"content":"public class ExitCommand extends Command {","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"Jawad280"},"content":" @Override","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"Jawad280"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"Jawad280"},"content":" storage.storeToLocal(tasks);","lastModifiedDate":"2024-01-26"},{"lineNumber":12,"author":{"gitId":"Jawad280"},"content":" ui.goodbyePrinter();","lastModifiedDate":"2024-01-26"},{"lineNumber":13,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":14,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":15,"author":{"gitId":"Jawad280"},"content":" @Override","lastModifiedDate":"2024-01-26"},{"lineNumber":16,"author":{"gitId":"Jawad280"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-26"},{"lineNumber":17,"author":{"gitId":"Jawad280"},"content":" return true;","lastModifiedDate":"2024-01-26"},{"lineNumber":18,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":19,"author":{"gitId":"Jawad280"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"Jawad280":19}},{"path":"src/main/java/command/ListCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Jawad280"},"content":"package command;","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":3,"author":{"gitId":"Jawad280"},"content":"import storage.Storage;","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"Jawad280"},"content":"import task.TaskList;","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"Jawad280"},"content":"import ui.Ui;","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"Jawad280"},"content":"public class ListCommand extends Command {","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"Jawad280"},"content":" @Override","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"Jawad280"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"Jawad280"},"content":" tasks.printList();","lastModifiedDate":"2024-01-26"},{"lineNumber":12,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":13,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":14,"author":{"gitId":"Jawad280"},"content":" @Override","lastModifiedDate":"2024-01-26"},{"lineNumber":15,"author":{"gitId":"Jawad280"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-26"},{"lineNumber":16,"author":{"gitId":"Jawad280"},"content":" return false;","lastModifiedDate":"2024-01-26"},{"lineNumber":17,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":18,"author":{"gitId":"Jawad280"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"Jawad280":18}},{"path":"src/main/java/command/MarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Jawad280"},"content":"package command;","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":3,"author":{"gitId":"Jawad280"},"content":"import storage.Storage;","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"Jawad280"},"content":"import task.Task;","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"Jawad280"},"content":"import task.TaskList;","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"Jawad280"},"content":"import ui.Ui;","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"Jawad280"},"content":"public class MarkCommand extends Command {","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"Jawad280"},"content":" private int taskIndex;","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":12,"author":{"gitId":"Jawad280"},"content":" public MarkCommand(int taskIndex) {","lastModifiedDate":"2024-01-26"},{"lineNumber":13,"author":{"gitId":"Jawad280"},"content":" this.taskIndex \u003d taskIndex;","lastModifiedDate":"2024-01-26"},{"lineNumber":14,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":15,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":16,"author":{"gitId":"Jawad280"},"content":" @Override","lastModifiedDate":"2024-01-26"},{"lineNumber":17,"author":{"gitId":"Jawad280"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2024-01-26"},{"lineNumber":18,"author":{"gitId":"Jawad280"},"content":" Task curr \u003d tasks.getTask(taskIndex);","lastModifiedDate":"2024-01-26"},{"lineNumber":19,"author":{"gitId":"Jawad280"},"content":" curr.markAsDone();","lastModifiedDate":"2024-01-26"},{"lineNumber":20,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":21,"author":{"gitId":"Jawad280"},"content":" ui.printDivider();","lastModifiedDate":"2024-01-26"},{"lineNumber":22,"author":{"gitId":"Jawad280"},"content":" System.out.println(\" Nice! I\u0027ve marked this task as done: \");","lastModifiedDate":"2024-01-26"},{"lineNumber":23,"author":{"gitId":"Jawad280"},"content":" curr.taskPrinter(taskIndex);","lastModifiedDate":"2024-01-26"},{"lineNumber":24,"author":{"gitId":"Jawad280"},"content":" ui.printDivider();","lastModifiedDate":"2024-01-26"},{"lineNumber":25,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":26,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":27,"author":{"gitId":"Jawad280"},"content":" @Override","lastModifiedDate":"2024-01-26"},{"lineNumber":28,"author":{"gitId":"Jawad280"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-26"},{"lineNumber":29,"author":{"gitId":"Jawad280"},"content":" return false;","lastModifiedDate":"2024-01-26"},{"lineNumber":30,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":31,"author":{"gitId":"Jawad280"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"Jawad280":31}},{"path":"src/main/java/command/NoreplyCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Jawad280"},"content":"package command;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"Jawad280"},"content":"import storage.Storage;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"Jawad280"},"content":"import task.TaskList;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"Jawad280"},"content":"import ui.Ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"Jawad280"},"content":"public class NoreplyCommand extends Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"Jawad280"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"Jawad280"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"Jawad280"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"Jawad280"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"Jawad280"},"content":" return false;","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"Jawad280"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"Jawad280":18}},{"path":"src/main/java/command/TodoCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Jawad280"},"content":"package command;","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":3,"author":{"gitId":"Jawad280"},"content":"import storage.Storage;","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"Jawad280"},"content":"import task.Task;","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"Jawad280"},"content":"import task.TaskList;","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"Jawad280"},"content":"import task.ToDo;","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"Jawad280"},"content":"import ui.Ui;","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"Jawad280"},"content":"public class TodoCommand extends Command {","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"Jawad280"},"content":" private String description;","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"Jawad280"},"content":" private boolean isDone;","lastModifiedDate":"2024-01-26"},{"lineNumber":12,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":13,"author":{"gitId":"Jawad280"},"content":" public TodoCommand(String description) {","lastModifiedDate":"2024-01-26"},{"lineNumber":14,"author":{"gitId":"Jawad280"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-26"},{"lineNumber":15,"author":{"gitId":"Jawad280"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-26"},{"lineNumber":16,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":17,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":18,"author":{"gitId":"Jawad280"},"content":" public TodoCommand(String description, boolean isDone) {","lastModifiedDate":"2024-01-26"},{"lineNumber":19,"author":{"gitId":"Jawad280"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-26"},{"lineNumber":20,"author":{"gitId":"Jawad280"},"content":" this.isDone \u003d isDone;","lastModifiedDate":"2024-01-26"},{"lineNumber":21,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":22,"author":{"gitId":"Jawad280"},"content":" @Override","lastModifiedDate":"2024-01-26"},{"lineNumber":23,"author":{"gitId":"Jawad280"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2024-01-26"},{"lineNumber":24,"author":{"gitId":"Jawad280"},"content":" Task task \u003d new ToDo(description, isDone);","lastModifiedDate":"2024-01-26"},{"lineNumber":25,"author":{"gitId":"Jawad280"},"content":" tasks.addToList(task);","lastModifiedDate":"2024-01-26"},{"lineNumber":26,"author":{"gitId":"Jawad280"},"content":" ui.addedTaskPrinter(task, tasks.taskNum());","lastModifiedDate":"2024-01-26"},{"lineNumber":27,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":28,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":29,"author":{"gitId":"Jawad280"},"content":" @Override","lastModifiedDate":"2024-01-26"},{"lineNumber":30,"author":{"gitId":"Jawad280"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-26"},{"lineNumber":31,"author":{"gitId":"Jawad280"},"content":" return false;","lastModifiedDate":"2024-01-26"},{"lineNumber":32,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":33,"author":{"gitId":"Jawad280"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"Jawad280":33}},{"path":"src/main/java/command/UnmarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Jawad280"},"content":"package command;","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":3,"author":{"gitId":"Jawad280"},"content":"import storage.Storage;","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"Jawad280"},"content":"import task.Task;","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"Jawad280"},"content":"import task.TaskList;","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"Jawad280"},"content":"import ui.Ui;","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"Jawad280"},"content":"public class UnmarkCommand extends Command {","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"Jawad280"},"content":" private int taskIndex;","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"Jawad280"},"content":" public UnmarkCommand(int taskIndex) {","lastModifiedDate":"2024-01-26"},{"lineNumber":12,"author":{"gitId":"Jawad280"},"content":" this.taskIndex \u003d taskIndex;","lastModifiedDate":"2024-01-26"},{"lineNumber":13,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":14,"author":{"gitId":"Jawad280"},"content":" @Override","lastModifiedDate":"2024-01-26"},{"lineNumber":15,"author":{"gitId":"Jawad280"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2024-01-26"},{"lineNumber":16,"author":{"gitId":"Jawad280"},"content":" Task curr \u003d tasks.getTask(taskIndex);","lastModifiedDate":"2024-01-26"},{"lineNumber":17,"author":{"gitId":"Jawad280"},"content":" curr.markAsUndone();","lastModifiedDate":"2024-01-26"},{"lineNumber":18,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":19,"author":{"gitId":"Jawad280"},"content":" ui.printDivider();","lastModifiedDate":"2024-01-26"},{"lineNumber":20,"author":{"gitId":"Jawad280"},"content":" System.out.println(\" OK, I\u0027ve marked this task as not done : \");","lastModifiedDate":"2024-01-26"},{"lineNumber":21,"author":{"gitId":"Jawad280"},"content":" curr.taskPrinter(taskIndex);","lastModifiedDate":"2024-01-26"},{"lineNumber":22,"author":{"gitId":"Jawad280"},"content":" ui.printDivider();","lastModifiedDate":"2024-01-26"},{"lineNumber":23,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":24,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":25,"author":{"gitId":"Jawad280"},"content":" @Override","lastModifiedDate":"2024-01-26"},{"lineNumber":26,"author":{"gitId":"Jawad280"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-26"},{"lineNumber":27,"author":{"gitId":"Jawad280"},"content":" return false;","lastModifiedDate":"2024-01-26"},{"lineNumber":28,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":29,"author":{"gitId":"Jawad280"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"Jawad280":29}},{"path":"src/main/java/exception/TobiasException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Jawad280"},"content":"package exception;","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":3,"author":{"gitId":"Jawad280"},"content":"public class TobiasException extends Exception {","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"Jawad280"},"content":" public TobiasException(String message) {","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"Jawad280"},"content":" super(message);","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"Jawad280"},"content":" public void printMessage() {","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"Jawad280"},"content":" String divider \u003d \" \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\";","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"Jawad280"},"content":" System.out.println(divider);","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"Jawad280"},"content":" System.out.println(getMessage());","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"Jawad280"},"content":" System.out.println(divider);","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"Jawad280"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"Jawad280":14}},{"path":"src/main/java/parser/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Jawad280"},"content":"package parser;","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":3,"author":{"gitId":"Jawad280"},"content":"import command.*;","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"Jawad280"},"content":"import exception.TobiasException;","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"Jawad280"},"content":"import task.TaskList;","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"Jawad280"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"Jawad280"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"Jawad280"},"content":"public class Parser {","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":12,"author":{"gitId":"Jawad280"},"content":" public static LocalDateTime dateFromString(String dateTime) throws TobiasException {","lastModifiedDate":"2024-01-26"},{"lineNumber":13,"author":{"gitId":"Jawad280"},"content":" try {","lastModifiedDate":"2024-01-26"},{"lineNumber":14,"author":{"gitId":"Jawad280"},"content":" return LocalDateTime.parse(dateTime.trim(), DateTimeFormatter.ofPattern(\"dd-MM-yyyy HHmm\"));","lastModifiedDate":"2024-01-26"},{"lineNumber":15,"author":{"gitId":"Jawad280"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-01-26"},{"lineNumber":16,"author":{"gitId":"Jawad280"},"content":" throw new TobiasException(\" Kindly enter the date or time in this format : dd-MM-yyyy HHmm\");","lastModifiedDate":"2024-01-26"},{"lineNumber":17,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":18,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":19,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":20,"author":{"gitId":"Jawad280"},"content":" public static Command parseCommands(String command, TaskList tasks) throws TobiasException {","lastModifiedDate":"2024-01-26"},{"lineNumber":21,"author":{"gitId":"Jawad280"},"content":" if(command.equals(\"list\")) {","lastModifiedDate":"2024-01-26"},{"lineNumber":22,"author":{"gitId":"Jawad280"},"content":" ListCommand lc \u003d new ListCommand();","lastModifiedDate":"2024-01-26"},{"lineNumber":23,"author":{"gitId":"Jawad280"},"content":" return lc;","lastModifiedDate":"2024-01-26"},{"lineNumber":24,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":25,"author":{"gitId":"Jawad280"},"content":" else if (command.startsWith(\"todo\")) {","lastModifiedDate":"2024-01-26"},{"lineNumber":26,"author":{"gitId":"Jawad280"},"content":" try {","lastModifiedDate":"2024-01-26"},{"lineNumber":27,"author":{"gitId":"Jawad280"},"content":" if (command.equals(\"todo\")) {","lastModifiedDate":"2024-01-26"},{"lineNumber":28,"author":{"gitId":"Jawad280"},"content":" throw new TobiasException(\" Hey, please enter a description !\");","lastModifiedDate":"2024-01-26"},{"lineNumber":29,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":30,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":31,"author":{"gitId":"Jawad280"},"content":" String blank \u003d command.substring(4,5);","lastModifiedDate":"2024-01-26"},{"lineNumber":32,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":33,"author":{"gitId":"Jawad280"},"content":" if (!blank.isBlank()) {","lastModifiedDate":"2024-01-26"},{"lineNumber":34,"author":{"gitId":"Jawad280"},"content":" throw new TobiasException(\" Kindly type your task a space after todo!\");","lastModifiedDate":"2024-01-26"},{"lineNumber":35,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":36,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":37,"author":{"gitId":"Jawad280"},"content":" String description \u003d command.substring(5);","lastModifiedDate":"2024-01-26"},{"lineNumber":38,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":39,"author":{"gitId":"Jawad280"},"content":" TodoCommand td \u003d new TodoCommand(description);","lastModifiedDate":"2024-01-26"},{"lineNumber":40,"author":{"gitId":"Jawad280"},"content":" return td;","lastModifiedDate":"2024-01-26"},{"lineNumber":41,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":42,"author":{"gitId":"Jawad280"},"content":" } catch(TobiasException e) {","lastModifiedDate":"2024-01-26"},{"lineNumber":43,"author":{"gitId":"Jawad280"},"content":" e.printMessage();","lastModifiedDate":"2024-01-26"},{"lineNumber":44,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":45,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":46,"author":{"gitId":"Jawad280"},"content":" else if (command.startsWith(\"deadline\")) {","lastModifiedDate":"2024-01-26"},{"lineNumber":47,"author":{"gitId":"Jawad280"},"content":" try {","lastModifiedDate":"2024-01-26"},{"lineNumber":48,"author":{"gitId":"Jawad280"},"content":" if (command.equals(\"deadline\")) {","lastModifiedDate":"2024-01-26"},{"lineNumber":49,"author":{"gitId":"Jawad280"},"content":" throw new TobiasException(\" Hey, please enter a description !\");","lastModifiedDate":"2024-01-26"},{"lineNumber":50,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":51,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":52,"author":{"gitId":"Jawad280"},"content":" String blank \u003d command.substring(8,9);","lastModifiedDate":"2024-01-26"},{"lineNumber":53,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":54,"author":{"gitId":"Jawad280"},"content":" if (!blank.isBlank()) {","lastModifiedDate":"2024-01-26"},{"lineNumber":55,"author":{"gitId":"Jawad280"},"content":" throw new TobiasException(\" Kindly type your task a space after deadline!\");","lastModifiedDate":"2024-01-26"},{"lineNumber":56,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":57,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":58,"author":{"gitId":"Jawad280"},"content":" int byIndex \u003d command.indexOf(\"/by\");","lastModifiedDate":"2024-01-26"},{"lineNumber":59,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":60,"author":{"gitId":"Jawad280"},"content":" if (byIndex \u003d\u003d -1) {","lastModifiedDate":"2024-01-26"},{"lineNumber":61,"author":{"gitId":"Jawad280"},"content":" throw new TobiasException(\" Hey, please use \u0027/by\u0027 to specify the deadline!!\");","lastModifiedDate":"2024-01-26"},{"lineNumber":62,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":63,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":64,"author":{"gitId":"Jawad280"},"content":" String description \u003d command.substring(9, byIndex);","lastModifiedDate":"2024-01-26"},{"lineNumber":65,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":66,"author":{"gitId":"Jawad280"},"content":" int deadlineIndex \u003d byIndex+4;","lastModifiedDate":"2024-01-26"},{"lineNumber":67,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":68,"author":{"gitId":"Jawad280"},"content":" if (deadlineIndex \u003e command.length()) {","lastModifiedDate":"2024-01-26"},{"lineNumber":69,"author":{"gitId":"Jawad280"},"content":" throw new TobiasException(\" Hey, please enter a date \u0026 time in this format : dd-MM-yyyy HHmm !\");","lastModifiedDate":"2024-01-26"},{"lineNumber":70,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":71,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":72,"author":{"gitId":"Jawad280"},"content":" String deadline \u003d command.substring(byIndex + 4);","lastModifiedDate":"2024-01-26"},{"lineNumber":73,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":74,"author":{"gitId":"Jawad280"},"content":" LocalDateTime dd \u003d dateFromString(deadline);","lastModifiedDate":"2024-01-26"},{"lineNumber":75,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":76,"author":{"gitId":"Jawad280"},"content":" if (deadline.isEmpty() || deadline.isBlank()) {","lastModifiedDate":"2024-01-26"},{"lineNumber":77,"author":{"gitId":"Jawad280"},"content":" throw new TobiasException(\" Hey, please enter a date \u0026 time in this format : dd-MM-yyyy HHmm !\");","lastModifiedDate":"2024-01-26"},{"lineNumber":78,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":79,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":80,"author":{"gitId":"Jawad280"},"content":" DeadlineCommand dc \u003d new DeadlineCommand(description, dd);","lastModifiedDate":"2024-01-26"},{"lineNumber":81,"author":{"gitId":"Jawad280"},"content":" return dc;","lastModifiedDate":"2024-01-26"},{"lineNumber":82,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":83,"author":{"gitId":"Jawad280"},"content":" } catch (TobiasException e) {","lastModifiedDate":"2024-01-26"},{"lineNumber":84,"author":{"gitId":"Jawad280"},"content":" e.printMessage();","lastModifiedDate":"2024-01-26"},{"lineNumber":85,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":86,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":87,"author":{"gitId":"Jawad280"},"content":" else if (command.startsWith(\"event\")) {","lastModifiedDate":"2024-01-26"},{"lineNumber":88,"author":{"gitId":"Jawad280"},"content":" try {","lastModifiedDate":"2024-01-26"},{"lineNumber":89,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":90,"author":{"gitId":"Jawad280"},"content":" if (command.equals(\"event\")) {","lastModifiedDate":"2024-01-26"},{"lineNumber":91,"author":{"gitId":"Jawad280"},"content":" throw new TobiasException(\" Hey, please enter a description !\");","lastModifiedDate":"2024-01-26"},{"lineNumber":92,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":93,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":94,"author":{"gitId":"Jawad280"},"content":" String blank \u003d command.substring(5,6);","lastModifiedDate":"2024-01-26"},{"lineNumber":95,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":96,"author":{"gitId":"Jawad280"},"content":" if (!blank.isBlank()) {","lastModifiedDate":"2024-01-26"},{"lineNumber":97,"author":{"gitId":"Jawad280"},"content":" throw new TobiasException(\" Kindly type your task a space after event!\");","lastModifiedDate":"2024-01-26"},{"lineNumber":98,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":99,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":100,"author":{"gitId":"Jawad280"},"content":" int fromIndex \u003d command.indexOf(\"/from\");","lastModifiedDate":"2024-01-26"},{"lineNumber":101,"author":{"gitId":"Jawad280"},"content":" int toIndex \u003d command.indexOf(\"/to\");","lastModifiedDate":"2024-01-26"},{"lineNumber":102,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":103,"author":{"gitId":"Jawad280"},"content":" if (fromIndex \u003d\u003d -1 \u0026\u0026 toIndex \u003d\u003d -1) {","lastModifiedDate":"2024-01-26"},{"lineNumber":104,"author":{"gitId":"Jawad280"},"content":" throw new TobiasException(\" Hey, please enter a /from and /to date/day/time!!\");","lastModifiedDate":"2024-01-26"},{"lineNumber":105,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":106,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":107,"author":{"gitId":"Jawad280"},"content":" if (fromIndex \u003d\u003d -1) {","lastModifiedDate":"2024-01-26"},{"lineNumber":108,"author":{"gitId":"Jawad280"},"content":" throw new TobiasException(\" Hey, please enter a /from date/day/time!!\");","lastModifiedDate":"2024-01-26"},{"lineNumber":109,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":110,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":111,"author":{"gitId":"Jawad280"},"content":" if (toIndex \u003d\u003d -1) {","lastModifiedDate":"2024-01-26"},{"lineNumber":112,"author":{"gitId":"Jawad280"},"content":" throw new TobiasException(\" Hey, please enter a /to date/day/time!!\");","lastModifiedDate":"2024-01-26"},{"lineNumber":113,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":114,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":115,"author":{"gitId":"Jawad280"},"content":" if (fromIndex \u003e toIndex \u0026\u0026 toIndex \u003e 0) {","lastModifiedDate":"2024-01-26"},{"lineNumber":116,"author":{"gitId":"Jawad280"},"content":" throw new TobiasException(\" Hey, you have to enter /from before /to !!\");","lastModifiedDate":"2024-01-26"},{"lineNumber":117,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":118,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":119,"author":{"gitId":"Jawad280"},"content":" String from \u003d command.substring(fromIndex + 6, toIndex);","lastModifiedDate":"2024-01-26"},{"lineNumber":120,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":121,"author":{"gitId":"Jawad280"},"content":" if (from.isEmpty() || from.isBlank()) {","lastModifiedDate":"2024-01-26"},{"lineNumber":122,"author":{"gitId":"Jawad280"},"content":" throw new TobiasException(\" Hey, please enter a /from date/day/time!!\");","lastModifiedDate":"2024-01-26"},{"lineNumber":123,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":124,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":125,"author":{"gitId":"Jawad280"},"content":" if ((toIndex + 4) \u003e command.length()) {","lastModifiedDate":"2024-01-26"},{"lineNumber":126,"author":{"gitId":"Jawad280"},"content":" throw new TobiasException(\" Hey, please enter a /to date/day/time!!\");","lastModifiedDate":"2024-01-26"},{"lineNumber":127,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":128,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":129,"author":{"gitId":"Jawad280"},"content":" String to \u003d command.substring(toIndex + 4);","lastModifiedDate":"2024-01-26"},{"lineNumber":130,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":131,"author":{"gitId":"Jawad280"},"content":" if (to.isEmpty() || to.isBlank()) {","lastModifiedDate":"2024-01-26"},{"lineNumber":132,"author":{"gitId":"Jawad280"},"content":" throw new TobiasException(\" Hey, please enter a /to date/day/time!!\");","lastModifiedDate":"2024-01-26"},{"lineNumber":133,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":134,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":135,"author":{"gitId":"Jawad280"},"content":" String description \u003d command.substring(6, fromIndex);","lastModifiedDate":"2024-01-26"},{"lineNumber":136,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":137,"author":{"gitId":"Jawad280"},"content":" LocalDateTime f \u003d dateFromString(from);","lastModifiedDate":"2024-01-26"},{"lineNumber":138,"author":{"gitId":"Jawad280"},"content":" LocalDateTime t \u003d dateFromString(to);","lastModifiedDate":"2024-01-26"},{"lineNumber":139,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":140,"author":{"gitId":"Jawad280"},"content":" EventCommand ec \u003d new EventCommand(description, f, t);","lastModifiedDate":"2024-01-26"},{"lineNumber":141,"author":{"gitId":"Jawad280"},"content":" return ec;","lastModifiedDate":"2024-01-26"},{"lineNumber":142,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":143,"author":{"gitId":"Jawad280"},"content":" } catch (TobiasException e) {","lastModifiedDate":"2024-01-26"},{"lineNumber":144,"author":{"gitId":"Jawad280"},"content":" e.printMessage();","lastModifiedDate":"2024-01-26"},{"lineNumber":145,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":146,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":147,"author":{"gitId":"Jawad280"},"content":" else if (command.startsWith(\"mark\")) {","lastModifiedDate":"2024-01-26"},{"lineNumber":148,"author":{"gitId":"Jawad280"},"content":" try {","lastModifiedDate":"2024-01-26"},{"lineNumber":149,"author":{"gitId":"Jawad280"},"content":" int size \u003d tasks.taskNum();","lastModifiedDate":"2024-01-26"},{"lineNumber":150,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":151,"author":{"gitId":"Jawad280"},"content":" if (size \u003d\u003d 0) {","lastModifiedDate":"2024-01-26"},{"lineNumber":152,"author":{"gitId":"Jawad280"},"content":" throw new TobiasException(\" Your list is empty at the moment, add some todos/events/deadlines to MARK them!\");","lastModifiedDate":"2024-01-26"},{"lineNumber":153,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":154,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":155,"author":{"gitId":"Jawad280"},"content":" if (command.equals(\"mark\")) {","lastModifiedDate":"2024-01-26"},{"lineNumber":156,"author":{"gitId":"Jawad280"},"content":" throw new TobiasException(\" No index provided! Please give a valid index from 1 to \" + size +\" !!\");","lastModifiedDate":"2024-01-26"},{"lineNumber":157,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":158,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":159,"author":{"gitId":"Jawad280"},"content":" String blank \u003d command.substring(4,5);","lastModifiedDate":"2024-01-26"},{"lineNumber":160,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":161,"author":{"gitId":"Jawad280"},"content":" if (!blank.isBlank()) {","lastModifiedDate":"2024-01-26"},{"lineNumber":162,"author":{"gitId":"Jawad280"},"content":" throw new TobiasException(\" Kindly type your task a space after mark!\");","lastModifiedDate":"2024-01-26"},{"lineNumber":163,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":164,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":165,"author":{"gitId":"Jawad280"},"content":" int index \u003d Integer.parseInt(command.substring(5)) - 1;","lastModifiedDate":"2024-01-26"},{"lineNumber":166,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":167,"author":{"gitId":"Jawad280"},"content":" if (index \u003e\u003d 0 \u0026\u0026 index \u003c size) {","lastModifiedDate":"2024-01-26"},{"lineNumber":168,"author":{"gitId":"Jawad280"},"content":" MarkCommand mc \u003d new MarkCommand(index);","lastModifiedDate":"2024-01-26"},{"lineNumber":169,"author":{"gitId":"Jawad280"},"content":" return mc;","lastModifiedDate":"2024-01-26"},{"lineNumber":170,"author":{"gitId":"Jawad280"},"content":" } else {","lastModifiedDate":"2024-01-26"},{"lineNumber":171,"author":{"gitId":"Jawad280"},"content":" throw new TobiasException(\" Invalid number provided! Please give a valid index from 1 to \" + size +\" !!\");","lastModifiedDate":"2024-01-26"},{"lineNumber":172,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":173,"author":{"gitId":"Jawad280"},"content":" } catch (TobiasException e) {","lastModifiedDate":"2024-01-26"},{"lineNumber":174,"author":{"gitId":"Jawad280"},"content":" e.printMessage();","lastModifiedDate":"2024-01-26"},{"lineNumber":175,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":176,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":177,"author":{"gitId":"Jawad280"},"content":" else if (command.startsWith(\"unmark\")) {","lastModifiedDate":"2024-01-26"},{"lineNumber":178,"author":{"gitId":"Jawad280"},"content":" try {","lastModifiedDate":"2024-01-26"},{"lineNumber":179,"author":{"gitId":"Jawad280"},"content":" int size \u003d tasks.taskNum();","lastModifiedDate":"2024-01-26"},{"lineNumber":180,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":181,"author":{"gitId":"Jawad280"},"content":" if (size \u003d\u003d 0) {","lastModifiedDate":"2024-01-26"},{"lineNumber":182,"author":{"gitId":"Jawad280"},"content":" throw new TobiasException(\" Your list is empty at the moment, add some todos/events/deadlines to UNMARK them!\");","lastModifiedDate":"2024-01-26"},{"lineNumber":183,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":184,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":185,"author":{"gitId":"Jawad280"},"content":" if (command.equals(\"unmark\")) {","lastModifiedDate":"2024-01-26"},{"lineNumber":186,"author":{"gitId":"Jawad280"},"content":" throw new TobiasException(\" No index provided! Please give a valid index from 1 to \" + size +\" !!\");","lastModifiedDate":"2024-01-26"},{"lineNumber":187,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":188,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":189,"author":{"gitId":"Jawad280"},"content":" String blank \u003d command.substring(6,7);","lastModifiedDate":"2024-01-26"},{"lineNumber":190,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":191,"author":{"gitId":"Jawad280"},"content":" if (!blank.isBlank()) {","lastModifiedDate":"2024-01-26"},{"lineNumber":192,"author":{"gitId":"Jawad280"},"content":" throw new TobiasException(\" Kindly type your task a space after unmark!\");","lastModifiedDate":"2024-01-26"},{"lineNumber":193,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":194,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":195,"author":{"gitId":"Jawad280"},"content":" int index \u003d Integer.parseInt(command.substring(7)) - 1;","lastModifiedDate":"2024-01-26"},{"lineNumber":196,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":197,"author":{"gitId":"Jawad280"},"content":" if (index \u003e\u003d 0 \u0026\u0026 index \u003c size) {","lastModifiedDate":"2024-01-26"},{"lineNumber":198,"author":{"gitId":"Jawad280"},"content":" UnmarkCommand uc \u003d new UnmarkCommand(index);","lastModifiedDate":"2024-01-26"},{"lineNumber":199,"author":{"gitId":"Jawad280"},"content":" return uc;","lastModifiedDate":"2024-01-26"},{"lineNumber":200,"author":{"gitId":"Jawad280"},"content":" } else {","lastModifiedDate":"2024-01-26"},{"lineNumber":201,"author":{"gitId":"Jawad280"},"content":" throw new TobiasException(\" Invalid number provided! Please give a valid index from 1 to \" + size +\" !!\");","lastModifiedDate":"2024-01-26"},{"lineNumber":202,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":203,"author":{"gitId":"Jawad280"},"content":" } catch (TobiasException e) {","lastModifiedDate":"2024-01-26"},{"lineNumber":204,"author":{"gitId":"Jawad280"},"content":" e.printMessage();","lastModifiedDate":"2024-01-26"},{"lineNumber":205,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":206,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":207,"author":{"gitId":"Jawad280"},"content":" else if (command.startsWith(\"delete\")) {","lastModifiedDate":"2024-01-26"},{"lineNumber":208,"author":{"gitId":"Jawad280"},"content":" try {","lastModifiedDate":"2024-01-26"},{"lineNumber":209,"author":{"gitId":"Jawad280"},"content":" int size \u003d tasks.taskNum();","lastModifiedDate":"2024-01-26"},{"lineNumber":210,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":211,"author":{"gitId":"Jawad280"},"content":" if (size \u003d\u003d 0) {","lastModifiedDate":"2024-01-26"},{"lineNumber":212,"author":{"gitId":"Jawad280"},"content":" throw new TobiasException(\" Your list is empty at the moment, add some todos/events/deadlines to DELETE them!\");","lastModifiedDate":"2024-01-26"},{"lineNumber":213,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":214,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":215,"author":{"gitId":"Jawad280"},"content":" if (command.equals(\"delete\")) {","lastModifiedDate":"2024-01-26"},{"lineNumber":216,"author":{"gitId":"Jawad280"},"content":" throw new TobiasException(\" No index provided! Please give a valid index from 1 to \" + size +\" !!\");","lastModifiedDate":"2024-01-26"},{"lineNumber":217,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":218,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":219,"author":{"gitId":"Jawad280"},"content":" String blank \u003d command.substring(6,7);","lastModifiedDate":"2024-01-26"},{"lineNumber":220,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":221,"author":{"gitId":"Jawad280"},"content":" if (!blank.isBlank()) {","lastModifiedDate":"2024-01-26"},{"lineNumber":222,"author":{"gitId":"Jawad280"},"content":" throw new TobiasException(\" Kindly type your task a space after delete!\");","lastModifiedDate":"2024-01-26"},{"lineNumber":223,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":224,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":225,"author":{"gitId":"Jawad280"},"content":" int index \u003d Integer.parseInt(command.substring(7)) - 1;","lastModifiedDate":"2024-01-26"},{"lineNumber":226,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":227,"author":{"gitId":"Jawad280"},"content":" if (index \u003e\u003d 0 \u0026\u0026 index \u003c size) {","lastModifiedDate":"2024-01-26"},{"lineNumber":228,"author":{"gitId":"Jawad280"},"content":" DeleteCommand dc \u003d new DeleteCommand(index);","lastModifiedDate":"2024-01-26"},{"lineNumber":229,"author":{"gitId":"Jawad280"},"content":" return dc;","lastModifiedDate":"2024-01-26"},{"lineNumber":230,"author":{"gitId":"Jawad280"},"content":" } else {","lastModifiedDate":"2024-01-26"},{"lineNumber":231,"author":{"gitId":"Jawad280"},"content":" throw new TobiasException(\" Invalid number provided! Please give a valid index from 1 to \" + size +\" !!\");","lastModifiedDate":"2024-01-26"},{"lineNumber":232,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":233,"author":{"gitId":"Jawad280"},"content":" } catch (TobiasException e) {","lastModifiedDate":"2024-01-26"},{"lineNumber":234,"author":{"gitId":"Jawad280"},"content":" e.printMessage();","lastModifiedDate":"2024-01-26"},{"lineNumber":235,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":236,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":237,"author":{"gitId":"Jawad280"},"content":" else if (command.equals(\"bye\")) {","lastModifiedDate":"2024-01-26"},{"lineNumber":238,"author":{"gitId":"Jawad280"},"content":" ExitCommand ec \u003d new ExitCommand();","lastModifiedDate":"2024-01-26"},{"lineNumber":239,"author":{"gitId":"Jawad280"},"content":" return ec;","lastModifiedDate":"2024-01-26"},{"lineNumber":240,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":241,"author":{"gitId":"Jawad280"},"content":" else {","lastModifiedDate":"2024-01-30"},{"lineNumber":242,"author":{"gitId":"Jawad280"},"content":" throw new TobiasException(","lastModifiedDate":"2024-01-26"},{"lineNumber":243,"author":{"gitId":"Jawad280"},"content":" \" You can ask me stuff like : \u0027bye\u0027, \u0027list\u0027, \u0027mark\u0027, \u0027unmark\u0027,\u0027delete\u0027\\n\" +","lastModifiedDate":"2024-01-26"},{"lineNumber":244,"author":{"gitId":"Jawad280"},"content":" \" You can ask me to create these : \u0027todo\u0027, \u0027deadline\u0027, \u0027event\u0027\");","lastModifiedDate":"2024-01-26"},{"lineNumber":245,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":246,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":247,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":248,"author":{"gitId":"Jawad280"},"content":" return new NoreplyCommand();","lastModifiedDate":"2024-01-30"},{"lineNumber":249,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":250,"author":{"gitId":"Jawad280"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"Jawad280":250}},{"path":"src/main/java/storage/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Jawad280"},"content":"package storage;","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":3,"author":{"gitId":"Jawad280"},"content":"import exception.TobiasException;","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"Jawad280"},"content":"import parser.Parser;","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"Jawad280"},"content":"import task.*;","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"Jawad280"},"content":"import java.io.File;","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"Jawad280"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"Jawad280"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"Jawad280"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"Jawad280"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-26"},{"lineNumber":12,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":13,"author":{"gitId":"Jawad280"},"content":"public class Storage {","lastModifiedDate":"2024-01-26"},{"lineNumber":14,"author":{"gitId":"Jawad280"},"content":" private String filePath;","lastModifiedDate":"2024-01-26"},{"lineNumber":15,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":16,"author":{"gitId":"Jawad280"},"content":" public Storage(String filePath) {","lastModifiedDate":"2024-01-26"},{"lineNumber":17,"author":{"gitId":"Jawad280"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2024-01-26"},{"lineNumber":18,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":19,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":20,"author":{"gitId":"Jawad280"},"content":" public void createLocalStorage() {","lastModifiedDate":"2024-01-26"},{"lineNumber":21,"author":{"gitId":"Jawad280"},"content":" try {","lastModifiedDate":"2024-01-26"},{"lineNumber":22,"author":{"gitId":"Jawad280"},"content":" File file \u003d new File(filePath);","lastModifiedDate":"2024-01-26"},{"lineNumber":23,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":24,"author":{"gitId":"Jawad280"},"content":" if (!file.getParentFile().exists()) {","lastModifiedDate":"2024-01-26"},{"lineNumber":25,"author":{"gitId":"Jawad280"},"content":" file.getParentFile().mkdirs();","lastModifiedDate":"2024-01-26"},{"lineNumber":26,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":27,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":28,"author":{"gitId":"Jawad280"},"content":" if (file.createNewFile()) {","lastModifiedDate":"2024-01-26"},{"lineNumber":29,"author":{"gitId":"Jawad280"},"content":" System.out.println(\" File created successfully: \" + file.getAbsolutePath());","lastModifiedDate":"2024-01-26"},{"lineNumber":30,"author":{"gitId":"Jawad280"},"content":" } else {","lastModifiedDate":"2024-01-26"},{"lineNumber":31,"author":{"gitId":"Jawad280"},"content":" System.out.println(\" File alr exists: \" + file.getAbsolutePath());","lastModifiedDate":"2024-01-26"},{"lineNumber":32,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":33,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":34,"author":{"gitId":"Jawad280"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-01-26"},{"lineNumber":35,"author":{"gitId":"Jawad280"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-26"},{"lineNumber":36,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":37,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":38,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":39,"author":{"gitId":"Jawad280"},"content":" public static void localToList(String data, TaskList tasks) throws TobiasException {","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"Jawad280"},"content":" try {","lastModifiedDate":"2024-01-26"},{"lineNumber":41,"author":{"gitId":"Jawad280"},"content":" if (data.startsWith(\"T\")) {","lastModifiedDate":"2024-01-26"},{"lineNumber":42,"author":{"gitId":"Jawad280"},"content":" boolean isDone \u003d Integer.parseInt(data.substring(8,9)) \u003d\u003d 1;","lastModifiedDate":"2024-01-26"},{"lineNumber":43,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":44,"author":{"gitId":"Jawad280"},"content":" int desc \u003d data.indexOf(\"|desc\");","lastModifiedDate":"2024-01-26"},{"lineNumber":45,"author":{"gitId":"Jawad280"},"content":" String description \u003d data.substring(desc+5);","lastModifiedDate":"2024-01-26"},{"lineNumber":46,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":47,"author":{"gitId":"Jawad280"},"content":" Task newTask \u003d new ToDo(description, isDone);","lastModifiedDate":"2024-01-26"},{"lineNumber":48,"author":{"gitId":"Jawad280"},"content":" tasks.addToList(newTask);","lastModifiedDate":"2024-01-26"},{"lineNumber":49,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":50,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":51,"author":{"gitId":"Jawad280"},"content":" else if (data.startsWith(\"D\")) {","lastModifiedDate":"2024-01-26"},{"lineNumber":52,"author":{"gitId":"Jawad280"},"content":" boolean isDone \u003d Integer.parseInt(data.substring(8,9)) \u003d\u003d 1;","lastModifiedDate":"2024-01-26"},{"lineNumber":53,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":54,"author":{"gitId":"Jawad280"},"content":" int desc \u003d data.indexOf(\"|desc\");","lastModifiedDate":"2024-01-26"},{"lineNumber":55,"author":{"gitId":"Jawad280"},"content":" int by \u003d data.indexOf(\"|by\");","lastModifiedDate":"2024-01-26"},{"lineNumber":56,"author":{"gitId":"Jawad280"},"content":" String description \u003d data.substring(desc+5, by);","lastModifiedDate":"2024-01-26"},{"lineNumber":57,"author":{"gitId":"Jawad280"},"content":" String byDate \u003d data.substring(by+3);","lastModifiedDate":"2024-01-26"},{"lineNumber":58,"author":{"gitId":"Jawad280"},"content":" LocalDateTime dd \u003d Parser.dateFromString(byDate);","lastModifiedDate":"2024-01-26"},{"lineNumber":59,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":60,"author":{"gitId":"Jawad280"},"content":" Task newTask \u003d new Deadline(description, isDone, dd);","lastModifiedDate":"2024-01-26"},{"lineNumber":61,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":62,"author":{"gitId":"Jawad280"},"content":" tasks.addToList(newTask);","lastModifiedDate":"2024-01-26"},{"lineNumber":63,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":64,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":65,"author":{"gitId":"Jawad280"},"content":" else if (data.startsWith(\"E\")) {","lastModifiedDate":"2024-01-26"},{"lineNumber":66,"author":{"gitId":"Jawad280"},"content":" boolean isDone \u003d Integer.parseInt(data.substring(8,9)) \u003d\u003d 1;","lastModifiedDate":"2024-01-26"},{"lineNumber":67,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":68,"author":{"gitId":"Jawad280"},"content":" int desc \u003d data.indexOf(\"|desc\");","lastModifiedDate":"2024-01-26"},{"lineNumber":69,"author":{"gitId":"Jawad280"},"content":" int from \u003d data.indexOf(\"|from\");","lastModifiedDate":"2024-01-26"},{"lineNumber":70,"author":{"gitId":"Jawad280"},"content":" int to \u003d data.indexOf(\"|to\");","lastModifiedDate":"2024-01-26"},{"lineNumber":71,"author":{"gitId":"Jawad280"},"content":" String description \u003d data.substring(desc+5, from);","lastModifiedDate":"2024-01-26"},{"lineNumber":72,"author":{"gitId":"Jawad280"},"content":" String fromDate \u003d data.substring(from+5, to);","lastModifiedDate":"2024-01-26"},{"lineNumber":73,"author":{"gitId":"Jawad280"},"content":" String toDate \u003d data.substring(to+3);","lastModifiedDate":"2024-01-26"},{"lineNumber":74,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":75,"author":{"gitId":"Jawad280"},"content":" LocalDateTime f \u003d Parser.dateFromString(fromDate);","lastModifiedDate":"2024-01-26"},{"lineNumber":76,"author":{"gitId":"Jawad280"},"content":" LocalDateTime t \u003d Parser.dateFromString(toDate);","lastModifiedDate":"2024-01-26"},{"lineNumber":77,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":78,"author":{"gitId":"Jawad280"},"content":" Task newTask \u003d new Event(description, isDone, f, t);","lastModifiedDate":"2024-01-26"},{"lineNumber":79,"author":{"gitId":"Jawad280"},"content":" tasks.addToList(newTask);","lastModifiedDate":"2024-01-26"},{"lineNumber":80,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":81,"author":{"gitId":"Jawad280"},"content":" else {","lastModifiedDate":"2024-01-26"},{"lineNumber":82,"author":{"gitId":"Jawad280"},"content":" throw new TobiasException(\" Saved file is corrupted!\");","lastModifiedDate":"2024-01-26"},{"lineNumber":83,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":84,"author":{"gitId":"Jawad280"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-01-26"},{"lineNumber":85,"author":{"gitId":"Jawad280"},"content":" System.out.println(\"local to list function \" + e.getMessage());","lastModifiedDate":"2024-01-26"},{"lineNumber":86,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":87,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":88,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":89,"author":{"gitId":"Jawad280"},"content":" public TaskList localToCurrent() {","lastModifiedDate":"2024-01-26"},{"lineNumber":90,"author":{"gitId":"Jawad280"},"content":" TaskList tasks \u003d new TaskList();","lastModifiedDate":"2024-01-26"},{"lineNumber":91,"author":{"gitId":"Jawad280"},"content":" try {","lastModifiedDate":"2024-01-26"},{"lineNumber":92,"author":{"gitId":"Jawad280"},"content":" File f \u003d new File(filePath);","lastModifiedDate":"2024-01-26"},{"lineNumber":93,"author":{"gitId":"Jawad280"},"content":" Scanner s \u003d new Scanner(f);","lastModifiedDate":"2024-01-26"},{"lineNumber":94,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":95,"author":{"gitId":"Jawad280"},"content":" while (s.hasNext()) {","lastModifiedDate":"2024-01-26"},{"lineNumber":96,"author":{"gitId":"Jawad280"},"content":" localToList(s.nextLine(), tasks);","lastModifiedDate":"2024-01-26"},{"lineNumber":97,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":98,"author":{"gitId":"Jawad280"},"content":" s.close();","lastModifiedDate":"2024-01-26"},{"lineNumber":99,"author":{"gitId":"Jawad280"},"content":" } catch (TobiasException tE) {","lastModifiedDate":"2024-01-30"},{"lineNumber":100,"author":{"gitId":"Jawad280"},"content":" tE.printMessage();","lastModifiedDate":"2024-01-30"},{"lineNumber":101,"author":{"gitId":"Jawad280"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-26"},{"lineNumber":102,"author":{"gitId":"Jawad280"},"content":" System.out.println(\"local to current function \" + e.getMessage());","lastModifiedDate":"2024-01-26"},{"lineNumber":103,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":104,"author":{"gitId":"Jawad280"},"content":" return tasks;","lastModifiedDate":"2024-01-26"},{"lineNumber":105,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":106,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":107,"author":{"gitId":"Jawad280"},"content":" public void storeToLocal(TaskList tasks) {","lastModifiedDate":"2024-01-26"},{"lineNumber":108,"author":{"gitId":"Jawad280"},"content":" String result \u003d tasks.saveMechanism();","lastModifiedDate":"2024-01-26"},{"lineNumber":109,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":110,"author":{"gitId":"Jawad280"},"content":" try {","lastModifiedDate":"2024-01-26"},{"lineNumber":111,"author":{"gitId":"Jawad280"},"content":" FileWriter fw \u003d new FileWriter(\"data/tobias.txt\");","lastModifiedDate":"2024-01-26"},{"lineNumber":112,"author":{"gitId":"Jawad280"},"content":" fw.write(result);","lastModifiedDate":"2024-01-26"},{"lineNumber":113,"author":{"gitId":"Jawad280"},"content":" fw.close();","lastModifiedDate":"2024-01-26"},{"lineNumber":114,"author":{"gitId":"Jawad280"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-26"},{"lineNumber":115,"author":{"gitId":"Jawad280"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-26"},{"lineNumber":116,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":117,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":118,"author":{"gitId":"Jawad280"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"Jawad280":118}},{"path":"src/main/java/task/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Jawad280"},"content":"package task;","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":3,"author":{"gitId":"Jawad280"},"content":"import exception.TobiasException;","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"Jawad280"},"content":"import ui.Ui;","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"Jawad280"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"Jawad280"},"content":"import java.util.List;","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"Jawad280"},"content":"public class TaskList {","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"Jawad280"},"content":" private List\u003cTask\u003e tasks;","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":12,"author":{"gitId":"Jawad280"},"content":" public TaskList() {","lastModifiedDate":"2024-01-26"},{"lineNumber":13,"author":{"gitId":"Jawad280"},"content":" this.tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-26"},{"lineNumber":14,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":15,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":16,"author":{"gitId":"Jawad280"},"content":" public void addToList(Task task) {","lastModifiedDate":"2024-01-26"},{"lineNumber":17,"author":{"gitId":"Jawad280"},"content":" tasks.add(task);","lastModifiedDate":"2024-01-26"},{"lineNumber":18,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":19,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":20,"author":{"gitId":"Jawad280"},"content":" public Task getTask(int index) {","lastModifiedDate":"2024-01-26"},{"lineNumber":21,"author":{"gitId":"Jawad280"},"content":" return tasks.get(index);","lastModifiedDate":"2024-01-26"},{"lineNumber":22,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":23,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":24,"author":{"gitId":"Jawad280"},"content":" public void removeFromList(int index) {","lastModifiedDate":"2024-01-26"},{"lineNumber":25,"author":{"gitId":"Jawad280"},"content":" tasks.remove(index);","lastModifiedDate":"2024-01-26"},{"lineNumber":26,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":27,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":28,"author":{"gitId":"Jawad280"},"content":" public String saveMechanism() {","lastModifiedDate":"2024-01-26"},{"lineNumber":29,"author":{"gitId":"Jawad280"},"content":" String result \u003d \"\";","lastModifiedDate":"2024-01-26"},{"lineNumber":30,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":31,"author":{"gitId":"Jawad280"},"content":" for (Task task : tasks) {","lastModifiedDate":"2024-01-26"},{"lineNumber":32,"author":{"gitId":"Jawad280"},"content":" result +\u003d task.storagePrinter() + System.lineSeparator();","lastModifiedDate":"2024-01-26"},{"lineNumber":33,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":34,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":35,"author":{"gitId":"Jawad280"},"content":" return result;","lastModifiedDate":"2024-01-26"},{"lineNumber":36,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":37,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":38,"author":{"gitId":"Jawad280"},"content":" public int taskNum() {","lastModifiedDate":"2024-01-26"},{"lineNumber":39,"author":{"gitId":"Jawad280"},"content":" return tasks.size();","lastModifiedDate":"2024-01-26"},{"lineNumber":40,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":41,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":42,"author":{"gitId":"Jawad280"},"content":" public void printList() {","lastModifiedDate":"2024-01-26"},{"lineNumber":43,"author":{"gitId":"Jawad280"},"content":" try {","lastModifiedDate":"2024-01-26"},{"lineNumber":44,"author":{"gitId":"Jawad280"},"content":" if (tasks.isEmpty()) {","lastModifiedDate":"2024-01-26"},{"lineNumber":45,"author":{"gitId":"Jawad280"},"content":" throw new TobiasException(\" Your list is empty at the moment !\");","lastModifiedDate":"2024-01-26"},{"lineNumber":46,"author":{"gitId":"Jawad280"},"content":" } else {","lastModifiedDate":"2024-01-26"},{"lineNumber":47,"author":{"gitId":"Jawad280"},"content":" Ui.printDivider();","lastModifiedDate":"2024-01-26"},{"lineNumber":48,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":49,"author":{"gitId":"Jawad280"},"content":" System.out.println(\" Here are the tasks in your list:\");","lastModifiedDate":"2024-01-26"},{"lineNumber":50,"author":{"gitId":"Jawad280"},"content":" for (Task task : tasks) {","lastModifiedDate":"2024-01-26"},{"lineNumber":51,"author":{"gitId":"Jawad280"},"content":" int index \u003d tasks.indexOf(task);","lastModifiedDate":"2024-01-26"},{"lineNumber":52,"author":{"gitId":"Jawad280"},"content":" task.taskPrinter(index);","lastModifiedDate":"2024-01-26"},{"lineNumber":53,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":54,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":55,"author":{"gitId":"Jawad280"},"content":" Ui.printDivider();","lastModifiedDate":"2024-01-26"},{"lineNumber":56,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":57,"author":{"gitId":"Jawad280"},"content":" } catch (TobiasException e) {","lastModifiedDate":"2024-01-26"},{"lineNumber":58,"author":{"gitId":"Jawad280"},"content":" e.printMessage();","lastModifiedDate":"2024-01-26"},{"lineNumber":59,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":60,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":61,"author":{"gitId":"Jawad280"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"Jawad280":61}},{"path":"src/main/java/ui/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Jawad280"},"content":"package ui;","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":3,"author":{"gitId":"Jawad280"},"content":"import task.Task;","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"Jawad280"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"Jawad280"},"content":"public class Ui {","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"Jawad280"},"content":" private static final String DIVIDER \u003d \" ---------------------------------------------------------------------------------------\";","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"Jawad280"},"content":" private static final String BOTNAME \u003d \"TOBIAS\";","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"Jawad280"},"content":" public void helloPrinter() {","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"Jawad280"},"content":" System.out.println(DIVIDER);","lastModifiedDate":"2024-01-26"},{"lineNumber":12,"author":{"gitId":"Jawad280"},"content":" System.out.println(\" Hello there! I\u0027m \" + BOTNAME);","lastModifiedDate":"2024-01-26"},{"lineNumber":13,"author":{"gitId":"Jawad280"},"content":" System.out.println(\" What can I do for you today ?\");","lastModifiedDate":"2024-01-26"},{"lineNumber":14,"author":{"gitId":"Jawad280"},"content":" System.out.println(DIVIDER);","lastModifiedDate":"2024-01-26"},{"lineNumber":15,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":16,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":17,"author":{"gitId":"Jawad280"},"content":" public void goodbyePrinter() {","lastModifiedDate":"2024-01-26"},{"lineNumber":18,"author":{"gitId":"Jawad280"},"content":" System.out.println(DIVIDER);","lastModifiedDate":"2024-01-26"},{"lineNumber":19,"author":{"gitId":"Jawad280"},"content":" System.out.println(\" I say this with a heavy heart but Goodbye my lover :( Hope to see you soon!\");","lastModifiedDate":"2024-01-26"},{"lineNumber":20,"author":{"gitId":"Jawad280"},"content":" System.out.println(DIVIDER);","lastModifiedDate":"2024-01-26"},{"lineNumber":21,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":22,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":23,"author":{"gitId":"Jawad280"},"content":" public void addedTaskPrinter(Task task, int size) {","lastModifiedDate":"2024-01-26"},{"lineNumber":24,"author":{"gitId":"Jawad280"},"content":" System.out.println(DIVIDER);","lastModifiedDate":"2024-01-26"},{"lineNumber":25,"author":{"gitId":"Jawad280"},"content":" System.out.println(\" Got it. I\u0027ve added this task: \");","lastModifiedDate":"2024-01-26"},{"lineNumber":26,"author":{"gitId":"Jawad280"},"content":" task.taskPrinter();","lastModifiedDate":"2024-01-26"},{"lineNumber":27,"author":{"gitId":"Jawad280"},"content":" System.out.println(\" Now you have \" + size + \" tasks in the list!\");","lastModifiedDate":"2024-01-26"},{"lineNumber":28,"author":{"gitId":"Jawad280"},"content":" System.out.println(DIVIDER);","lastModifiedDate":"2024-01-26"},{"lineNumber":29,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":30,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":31,"author":{"gitId":"Jawad280"},"content":" public static void printDivider() {","lastModifiedDate":"2024-01-26"},{"lineNumber":32,"author":{"gitId":"Jawad280"},"content":" System.out.println(DIVIDER);","lastModifiedDate":"2024-01-26"},{"lineNumber":33,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":34,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":35,"author":{"gitId":"Jawad280"},"content":" public String readCommand() {","lastModifiedDate":"2024-01-26"},{"lineNumber":36,"author":{"gitId":"Jawad280"},"content":" Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-26"},{"lineNumber":37,"author":{"gitId":"Jawad280"},"content":" String command \u003d scanner.nextLine().trim();","lastModifiedDate":"2024-01-26"},{"lineNumber":38,"author":{"gitId":"Jawad280"},"content":" return command;","lastModifiedDate":"2024-01-26"},{"lineNumber":39,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":40,"author":{"gitId":"Jawad280"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"Jawad280":40}},{"path":"src/test/java/parser/ParserTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Jawad280"},"content":"package parser;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Jawad280"},"content":"import exception.TobiasException;","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"Jawad280"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"Jawad280"},"content":"import task.TaskList;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"Jawad280"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"Jawad280"},"content":"public class ParserTest {","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"Jawad280"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"Jawad280"},"content":" public void no_from_and_to_for_events() {","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"Jawad280"},"content":" TaskList testList \u003d new TaskList();","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"Jawad280"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"Jawad280"},"content":" Parser.parseCommands(\"event marathon\", testList);","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"Jawad280"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"Jawad280"},"content":" Exception m \u003d new TobiasException(\" Hey, please enter a /from and /to date/day/time!!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"Jawad280"},"content":" assertEquals(m.getMessage(), e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"Jawad280"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"Jawad280"},"content":" public void invalid_date_syntax() {","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"Jawad280"},"content":" TaskList testList \u003d new TaskList();","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"Jawad280"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"Jawad280"},"content":" Parser.parseCommands(\"deadline subission /from 11-january-2023 5am\", testList);","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"Jawad280"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"Jawad280"},"content":" Exception m \u003d new TobiasException(\" Hey, please enter a date \u0026 time in this format : dd-MM-yyyy HHmm !\");","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"Jawad280"},"content":" assertEquals(m.getMessage(), e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"Jawad280"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"Jawad280":32}},{"path":"src/test/java/storage/StorageTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Jawad280"},"content":"package storage;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"Jawad280"},"content":"import exception.TobiasException;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"Jawad280"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"Jawad280"},"content":"import task.Event;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"Jawad280"},"content":"import task.Task;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"Jawad280"},"content":"import task.TaskList;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"Jawad280"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"Jawad280"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"Jawad280"},"content":"public class StorageTest {","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"Jawad280"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"Jawad280"},"content":" public void corrupted_saved_file() {","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"Jawad280"},"content":" // Instead of D for deadline, the file is corrupted and adds a G instead","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"Jawad280"},"content":" String testStoredCommand \u003d \"G|isdone1|descmarathon |from15-03-2024 1000|to15-03-2024 1600\";","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"Jawad280"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"Jawad280"},"content":" TaskList testList \u003d new TaskList();","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"Jawad280"},"content":" Storage.localToList(testStoredCommand, testList);","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"Jawad280"},"content":" } catch (TobiasException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"Jawad280"},"content":" assert(e.getMessage().equals(\" Saved file is corrupted!\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"Jawad280"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"Jawad280"},"content":" public void correct_stored_data_is_loaded() {","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"Jawad280"},"content":" // Should store an event command that is :","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"Jawad280"},"content":" // isDone: true,","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"Jawad280"},"content":" // description : marathon,","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"Jawad280"},"content":" // from \u0026 to : 15/03/2024 10 am to 15/03/2024 4pm","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"Jawad280"},"content":" String testStoredCommand \u003d \"E|isdone1|descmarathon |from15-03-2024 1000|to15-03-2024 1600\";","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"Jawad280"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"Jawad280"},"content":" TaskList testList \u003d new TaskList();","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"Jawad280"},"content":" LocalDateTime from \u003d LocalDateTime.parse(\"15-03-2024 1000\", DateTimeFormatter.ofPattern(\"dd-MM-yyyy HHmm\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"Jawad280"},"content":" LocalDateTime to \u003d LocalDateTime.parse(\"15-03-2024 1600\", DateTimeFormatter.ofPattern(\"dd-MM-yyyy HHmm\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"Jawad280"},"content":" Task expected \u003d new Event(\"marathon \", true, from, to);","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"Jawad280"},"content":" Storage.localToList(testStoredCommand, testList);","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"Jawad280"},"content":" assert(expected.equals(testList.getTask(0)));","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"Jawad280"},"content":" ","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"Jawad280"},"content":" } catch (TobiasException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"Jawad280"},"content":" e.printMessage();","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"Jawad280"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"Jawad280":46}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"Jawad280"},"content":"list","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"Jawad280"},"content":"todo Run","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"Jawad280"},"content":"deadline Submission /by Friday","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"Jawad280"},"content":"event Openhouse /from 25 Jan /to 28 Jan","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"Jawad280"},"content":"list","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"Jawad280"},"content":"mark 2","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"Jawad280"},"content":"bye","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"Jawad280":7}},{"path":"text-ui-test/runtest.sh","fileType":"sh","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"#!/usr/bin/env bash","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"# create bin directory if it doesn\u0027t exist","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"if [ ! -d \"../bin\" ]","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":" mkdir ../bin","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"# delete output from previous run","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"if [ -e \"./ACTUAL.TXT\" ]","lastModifiedDate":"2020-05-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":" rm ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"# compile the code into the bin folder, terminates if error occurred","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"if ! javac -cp ../src/main/java -Xlint:none -d ../bin ../src/main/java/*.java","lastModifiedDate":"2020-08-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" echo \"********** BUILD FAILURE **********\"","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" exit 1","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":"# run the program, feed commands from input.txt file and redirect the output to the ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"Jawad280"},"content":"java -classpath ../bin Tobias \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":"# convert to UNIX format","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":"cp EXPECTED.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":"dos2unix ACTUAL.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"# compare the output to the expected output","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"diff ACTUAL.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":"if [ $? -eq 0 ]","lastModifiedDate":"2020-05-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":" echo \"Test result: PASSED\"","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":" exit 0","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":"else","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" echo \"Test result: FAILED\"","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" exit 1","lastModifiedDate":"2020-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"Jawad280":1,"-":37}}] diff --git a/Jawad280_ip_master/commits.json b/Jawad280_ip_master/commits.json index f5944479..3884e9a6 100644 --- a/Jawad280_ip_master/commits.json +++ b/Jawad280_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"Jawad280":[{"date":"2024-01-25","commitResults":[{"hash":"eda016a6895c6d68a6c31bdaef554a79d2147310","isMergeCommit":false,"messageTitle":"Level 0 added","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":6,"deletions":1}}},{"hash":"669b67933075f2bc73d239c47594b1f7dc6b1911","isMergeCommit":false,"messageTitle":"level-1 Echo updated","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":32,"deletions":10}}},{"hash":"e2bca9cab6dc9dd1132e4df6d1b51b345b5f4239","isMergeCommit":false,"messageTitle":"Level 2 : Added list","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":21,"deletions":3}}},{"hash":"2b6359c9bd1504feebb249ee4d23ea0efa85560d","isMergeCommit":false,"messageTitle":"Level 3 : Mark as done","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":35,"deletions":5}}},{"hash":"ca79b74af7dfea51e72b963e0853942836bb01d9","isMergeCommit":false,"messageTitle":"Level 4 : Todos, Event, Deadlines","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":44,"deletions":5}}},{"hash":"385aa2aa8fa7ffc859d212bddd2eb4ee4ed79194","isMergeCommit":false,"messageTitle":"accidentally ignored the external classes, adding them back","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":100,"deletions":0}}},{"hash":"bcf8ffd3b57ae915e51470b4b32c6d9f28d38cec","isMergeCommit":false,"messageTitle":"Renamed Duke, Added TobiasExceptions and Delete function","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":275,"deletions":124}}},{"hash":"5f4914d5db87b878d794ca86f46083dc3dd12bdb","isMergeCommit":false,"messageTitle":"Simplified taskPrinter() \u0026 added a checkmark","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":22}}},{"hash":"9fa1370cacac642ef5d7167704f157869eecfc91","isMergeCommit":false,"messageTitle":"A-TextUiTesting added","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":7,"deletions":0},"sh":{"insertions":1,"deletions":1}}}]},{"date":"2024-01-26","commitResults":[{"hash":"866add7ebf38ad3e719ae072fb66fb4feeee6963","isMergeCommit":false,"messageTitle":"Level-7","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"java":{"insertions":169,"deletions":8}}},{"hash":"f6bad2f713df0fa8d3ad8a15e5fb879bbbedcc6d","isMergeCommit":false,"messageTitle":"Level 8 - Handling DateTime Objects","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{"java":{"insertions":57,"deletions":24}}},{"hash":"047f42d3994b7827576975c03bc296d88ed57259","isMergeCommit":false,"messageTitle":"A-MoreOOP","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{"java":{"insertions":656,"deletions":388}}},{"hash":"14d97cfa3bf3cb6c2c1f50b5c4f3279edb4f5e32","isMergeCommit":false,"messageTitle":"A-Packages : Partitioned the classes into respective packages","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{"java":{"insertions":92,"deletions":143}}},{"hash":"7423056a189c7bf251ba7cf8a839062c3cffd64a","isMergeCommit":true,"messageTitle":"Merge commit \u0027a6f73244a20539e20c2189973ebf597df34ef631\u0027 into branch-Level-8","messageBody":"* commit \u0027a6f73244a20539e20c2189973ebf597df34ef631\u0027:\n Bump gradle and lib version\n Add Gradle support\n docs/README.md: Tweak document template\n","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"Jawad280":{"java":772,"md":0,"fxml":0,"sh":1,"bat":0,"gradle":0,"txt":7}},"authorContributionVariance":{"Jawad280":278355.97},"authorDisplayNameMap":{"Jawad280":"CS2103T-F14-1 JAWA..THAB"}} +{"authorDailyContributionsMap":{"Jawad280":[{"date":"2024-01-25","commitResults":[{"hash":"eda016a6895c6d68a6c31bdaef554a79d2147310","isMergeCommit":false,"messageTitle":"Level 0 added","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":6,"deletions":1}}},{"hash":"669b67933075f2bc73d239c47594b1f7dc6b1911","isMergeCommit":false,"messageTitle":"level-1 Echo updated","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":32,"deletions":10}}},{"hash":"e2bca9cab6dc9dd1132e4df6d1b51b345b5f4239","isMergeCommit":false,"messageTitle":"Level 2 : Added list","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":21,"deletions":3}}},{"hash":"2b6359c9bd1504feebb249ee4d23ea0efa85560d","isMergeCommit":false,"messageTitle":"Level 3 : Mark as done","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":35,"deletions":5}}},{"hash":"ca79b74af7dfea51e72b963e0853942836bb01d9","isMergeCommit":false,"messageTitle":"Level 4 : Todos, Event, Deadlines","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":44,"deletions":5}}},{"hash":"385aa2aa8fa7ffc859d212bddd2eb4ee4ed79194","isMergeCommit":false,"messageTitle":"accidentally ignored the external classes, adding them back","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":100,"deletions":0}}},{"hash":"bcf8ffd3b57ae915e51470b4b32c6d9f28d38cec","isMergeCommit":false,"messageTitle":"Renamed Duke, Added TobiasExceptions and Delete function","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":275,"deletions":124}}},{"hash":"5f4914d5db87b878d794ca86f46083dc3dd12bdb","isMergeCommit":false,"messageTitle":"Simplified taskPrinter() \u0026 added a checkmark","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":22}}},{"hash":"9fa1370cacac642ef5d7167704f157869eecfc91","isMergeCommit":false,"messageTitle":"A-TextUiTesting added","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":7,"deletions":0},"sh":{"insertions":1,"deletions":1}}}]},{"date":"2024-01-26","commitResults":[{"hash":"866add7ebf38ad3e719ae072fb66fb4feeee6963","isMergeCommit":false,"messageTitle":"Level-7","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"java":{"insertions":169,"deletions":8}}},{"hash":"f6bad2f713df0fa8d3ad8a15e5fb879bbbedcc6d","isMergeCommit":false,"messageTitle":"Level 8 - Handling DateTime Objects","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{"java":{"insertions":57,"deletions":24}}},{"hash":"047f42d3994b7827576975c03bc296d88ed57259","isMergeCommit":false,"messageTitle":"A-MoreOOP","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{"java":{"insertions":656,"deletions":388}}},{"hash":"14d97cfa3bf3cb6c2c1f50b5c4f3279edb4f5e32","isMergeCommit":false,"messageTitle":"A-Packages : Partitioned the classes into respective packages","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{"java":{"insertions":92,"deletions":143}}},{"hash":"7423056a189c7bf251ba7cf8a839062c3cffd64a","isMergeCommit":true,"messageTitle":"Merge commit \u0027a6f73244a20539e20c2189973ebf597df34ef631\u0027 into branch-Level-8","messageBody":"* commit \u0027a6f73244a20539e20c2189973ebf597df34ef631\u0027:\n Bump gradle and lib version\n Add Gradle support\n docs/README.md: Tweak document template\n","tags":["A-Gradle"],"fileTypesAndContributionMap":{}}]},{"date":"2024-01-30","commitResults":[{"hash":"0c14dc03c62a4e20576a82b3cb33325fd920727b","isMergeCommit":false,"messageTitle":"A-Gradle \u0026 A-JUnit \u0026 A-Jar","messageBody":"","tags":["A-Jar","A-JUnit"],"fileTypesAndContributionMap":{"java":{"insertions":106,"deletions":4}}}]}]},"authorFileTypeContributionMap":{"Jawad280":{"java":874,"md":0,"fxml":0,"sh":1,"bat":0,"gradle":0,"txt":7}},"authorContributionVariance":{"Jawad280":200452.88},"authorDisplayNameMap":{"Jawad280":"CS2103T-F14-1 JAWA..THAB"}} diff --git a/Jerome-j_ip_master/authorship.json b/Jerome-j_ip_master/authorship.json index b53a4e18..49c17e4e 100644 --- a/Jerome-j_ip_master/authorship.json +++ b/Jerome-j_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"database.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"Jerome-j"},"content":"D | cook coconut milk | true | Sunday","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"Jerome-j"},"content":"T | abcd | true","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"Jerome-j"},"content":"T | abcd | true","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"Jerome-j":3}},{"path":"src/main/java/CustomExceptions/BlankEventException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Jerome-j"},"content":"package CustomExceptions;","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"Jerome-j"},"content":"public class BlankEventException extends Exception {","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"Jerome-j"},"content":" public BlankEventException(String description) {","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"Jerome-j"},"content":" super(description);","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"Jerome-j"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"Jerome-j":7}},{"path":"src/main/java/CustomExceptions/MalformedUserInputException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Jerome-j"},"content":"package CustomExceptions;","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"Jerome-j"},"content":"public class MalformedUserInputException extends Exception {","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"Jerome-j"},"content":" public MalformedUserInputException(String message) {","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"Jerome-j"},"content":" super(message);","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"Jerome-j"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"Jerome-j":7}},{"path":"src/main/java/CustomExceptions/NoTaskCreatedYetException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Jerome-j"},"content":"package CustomExceptions;","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"Jerome-j"},"content":"public class NoTaskCreatedYetException extends Exception {","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"Jerome-j"},"content":" public NoTaskCreatedYetException(){","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"Jerome-j"},"content":" super(\"There appears to be some problem with your user input.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"Jerome-j"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"Jerome-j":7}},{"path":"src/main/java/CustomExceptions/TooManyTasksException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Jerome-j"},"content":"package CustomExceptions;","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"Jerome-j"},"content":"public class TooManyTasksException extends Exception{","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"Jerome-j"},"content":" public TooManyTasksException(){","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"Jerome-j"},"content":" super(\"There are too many tasks.. So much that the array cannot hold anymore.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"Jerome-j"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"Jerome-j":7}},{"path":"src/main/java/DataStorage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Jerome-j"},"content":"import CustomExceptions.MalformedUserInputException;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"Jerome-j"},"content":"import CustomExceptions.NoTaskCreatedYetException;","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"Jerome-j"},"content":"import CustomExceptions.TooManyTasksException;","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"Jerome-j"},"content":"import TaskList.Deadline;","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"Jerome-j"},"content":"import TaskList.Event;","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"Jerome-j"},"content":"import TaskList.Task;","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"Jerome-j"},"content":"import TaskList.Todo;","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"Jerome-j"},"content":"import java.io.*;","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"Jerome-j"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"Jerome-j"},"content":"import java.util.LinkedList;","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"Jerome-j"},"content":"public class DataStorage {","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"Jerome-j"},"content":" private ArrayList\u003cTask\u003e tasksList;","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"Jerome-j"},"content":" private int taskCount;","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"Jerome-j"},"content":" private int maxTask;","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"Jerome-j"},"content":" private File file;","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"Jerome-j"},"content":" public DataStorage(int maxTask, String fileName) {","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"Jerome-j"},"content":" this.maxTask \u003d maxTask;","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"Jerome-j"},"content":" this.tasksList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"Jerome-j"},"content":" this.taskCount \u003d 0;","lastModifiedDate":"2024-01-24"},{"lineNumber":23,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"Jerome-j"},"content":" this.file \u003d new File(fileName);","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"Jerome-j"},"content":" // Solution below adapted from https://www.w3schools.com/java/java_files_create.asp","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"Jerome-j"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"Jerome-j"},"content":" if (this.file.createNewFile()) {","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"Jerome-j"},"content":" System.out.println(\"\\t The database has not been created. A new database has been created at the following location: \" + this.file.getAbsolutePath());","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"Jerome-j"},"content":" } else {","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"Jerome-j"},"content":" // This means that the file already exists here.","lastModifiedDate":"2024-01-28"},{"lineNumber":33,"author":{"gitId":"Jerome-j"},"content":" System.out.println(\"\\t Using the existing database located at: \" + this.file.getAbsolutePath());","lastModifiedDate":"2024-01-28"},{"lineNumber":34,"author":{"gitId":"Jerome-j"},"content":" this.tasksList \u003d readFromDatabaseIfAlreadyCreated();","lastModifiedDate":"2024-01-28"},{"lineNumber":35,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":38,"author":{"gitId":"Jerome-j"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":39,"author":{"gitId":"Jerome-j"},"content":" System.err.println(\"An error occurred while opening the file. \\n\" + \"An error occurred on your device; please check that there is at least 100 MB of free disk space.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"Jerome-j"},"content":" System.exit(1); // Exit the program. Non-zero indicates abnormal termination.","lastModifiedDate":"2024-01-28"},{"lineNumber":41,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":42,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":43,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":44,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":45,"author":{"gitId":"Jerome-j"},"content":" public Task getTask(int index) {","lastModifiedDate":"2024-01-24"},{"lineNumber":46,"author":{"gitId":"Jerome-j"},"content":" if (index \u003c 0 || index \u003e this.taskCount) {","lastModifiedDate":"2024-01-28"},{"lineNumber":47,"author":{"gitId":"Jerome-j"},"content":" throw new IndexOutOfBoundsException();","lastModifiedDate":"2024-01-24"},{"lineNumber":48,"author":{"gitId":"Jerome-j"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":49,"author":{"gitId":"Jerome-j"},"content":" return this.tasksList.get(index);","lastModifiedDate":"2024-01-24"},{"lineNumber":50,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":51,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":52,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":53,"author":{"gitId":"Jerome-j"},"content":" public void addTask(Task task) throws TooManyTasksException {","lastModifiedDate":"2024-01-24"},{"lineNumber":54,"author":{"gitId":"Jerome-j"},"content":" if (taskCount \u003e\u003d maxTask) {","lastModifiedDate":"2024-01-24"},{"lineNumber":55,"author":{"gitId":"Jerome-j"},"content":" throw new TooManyTasksException();","lastModifiedDate":"2024-01-24"},{"lineNumber":56,"author":{"gitId":"Jerome-j"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":57,"author":{"gitId":"Jerome-j"},"content":" this.tasksList.add(task);","lastModifiedDate":"2024-01-24"},{"lineNumber":58,"author":{"gitId":"Jerome-j"},"content":" addTaskToFile(task.toStorageString(), true);","lastModifiedDate":"2024-01-28"},{"lineNumber":59,"author":{"gitId":"Jerome-j"},"content":" this.taskCount++;","lastModifiedDate":"2024-01-24"},{"lineNumber":60,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":61,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":62,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":63,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":64,"author":{"gitId":"Jerome-j"},"content":" public void addTaskToFile(String line, boolean isAppend) {","lastModifiedDate":"2024-01-28"},{"lineNumber":65,"author":{"gitId":"Jerome-j"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":66,"author":{"gitId":"Jerome-j"},"content":" // Solution below adapted from: https://www.w3schools.com/java/java_files_create.asp","lastModifiedDate":"2024-01-28"},{"lineNumber":67,"author":{"gitId":"Jerome-j"},"content":" FileWriter myWriter \u003d new FileWriter(this.file, isAppend);","lastModifiedDate":"2024-01-28"},{"lineNumber":68,"author":{"gitId":"Jerome-j"},"content":" myWriter.append(line);","lastModifiedDate":"2024-01-28"},{"lineNumber":69,"author":{"gitId":"Jerome-j"},"content":" myWriter.append(\"\\n\");","lastModifiedDate":"2024-01-28"},{"lineNumber":70,"author":{"gitId":"Jerome-j"},"content":" myWriter.close();","lastModifiedDate":"2024-01-28"},{"lineNumber":71,"author":{"gitId":"Jerome-j"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":72,"author":{"gitId":"Jerome-j"},"content":" System.out.println(\"An error occurred while writing to the file.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":73,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":74,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":75,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":76,"author":{"gitId":"Jerome-j"},"content":" public ArrayList\u003cTask\u003e readFromDatabaseIfAlreadyCreated() {","lastModifiedDate":"2024-01-28"},{"lineNumber":77,"author":{"gitId":"Jerome-j"},"content":" ArrayList\u003cTask\u003e tasksList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-28"},{"lineNumber":78,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":79,"author":{"gitId":"Jerome-j"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":80,"author":{"gitId":"Jerome-j"},"content":" FileReader fileReader \u003d new FileReader(this.file);","lastModifiedDate":"2024-01-28"},{"lineNumber":81,"author":{"gitId":"Jerome-j"},"content":" BufferedReader bufferedReader \u003d new BufferedReader(fileReader);","lastModifiedDate":"2024-01-28"},{"lineNumber":82,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":83,"author":{"gitId":"Jerome-j"},"content":" String line;","lastModifiedDate":"2024-01-28"},{"lineNumber":84,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":85,"author":{"gitId":"Jerome-j"},"content":" // Continuously read until the end of file.","lastModifiedDate":"2024-01-28"},{"lineNumber":86,"author":{"gitId":"Jerome-j"},"content":" while ((line \u003d bufferedReader.readLine()) !\u003d null) {","lastModifiedDate":"2024-01-28"},{"lineNumber":87,"author":{"gitId":"Jerome-j"},"content":" Task task \u003d parseTask(line);","lastModifiedDate":"2024-01-28"},{"lineNumber":88,"author":{"gitId":"Jerome-j"},"content":" tasksList.add(task);","lastModifiedDate":"2024-01-28"},{"lineNumber":89,"author":{"gitId":"Jerome-j"},"content":" this.taskCount++;","lastModifiedDate":"2024-01-28"},{"lineNumber":90,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":91,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":92,"author":{"gitId":"Jerome-j"},"content":" bufferedReader.close();","lastModifiedDate":"2024-01-28"},{"lineNumber":93,"author":{"gitId":"Jerome-j"},"content":" fileReader.close();","lastModifiedDate":"2024-01-28"},{"lineNumber":94,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":95,"author":{"gitId":"Jerome-j"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":96,"author":{"gitId":"Jerome-j"},"content":" System.out.println(\"The file was not found.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":97,"author":{"gitId":"Jerome-j"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":98,"author":{"gitId":"Jerome-j"},"content":" System.out.println(\"An error occurred while reading from the file.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":99,"author":{"gitId":"Jerome-j"},"content":" } catch (MalformedUserInputException malformedUserInputException) {","lastModifiedDate":"2024-01-28"},{"lineNumber":100,"author":{"gitId":"Jerome-j"},"content":" System.out.println(\"Your database may be corrupted. \" + malformedUserInputException.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":101,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":102,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":103,"author":{"gitId":"Jerome-j"},"content":" return tasksList;","lastModifiedDate":"2024-01-28"},{"lineNumber":104,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":105,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":106,"author":{"gitId":"Jerome-j"},"content":" private Task parseTask(String line) throws MalformedUserInputException {","lastModifiedDate":"2024-01-28"},{"lineNumber":107,"author":{"gitId":"Jerome-j"},"content":" String[] splitTask \u003d line.split(\" \\\\| \");","lastModifiedDate":"2024-01-28"},{"lineNumber":108,"author":{"gitId":"Jerome-j"},"content":" int length \u003d splitTask.length;","lastModifiedDate":"2024-01-30"},{"lineNumber":109,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":110,"author":{"gitId":"Jerome-j"},"content":" // TODO: Handle a dirty input.","lastModifiedDate":"2024-01-28"},{"lineNumber":111,"author":{"gitId":"Jerome-j"},"content":" if (line.startsWith(\"T\")) {","lastModifiedDate":"2024-01-28"},{"lineNumber":112,"author":{"gitId":"Jerome-j"},"content":" // then it is a task","lastModifiedDate":"2024-01-28"},{"lineNumber":113,"author":{"gitId":"Jerome-j"},"content":" if (length !\u003d 3) throw new MalformedUserInputException(\"Your database is corrupted.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":114,"author":{"gitId":"Jerome-j"},"content":" return new Todo(splitTask[1], Boolean.valueOf(splitTask[2]));","lastModifiedDate":"2024-01-28"},{"lineNumber":115,"author":{"gitId":"Jerome-j"},"content":" } else if (line.startsWith(\"D\")) {","lastModifiedDate":"2024-01-28"},{"lineNumber":116,"author":{"gitId":"Jerome-j"},"content":" // then it is a deadline","lastModifiedDate":"2024-01-28"},{"lineNumber":117,"author":{"gitId":"Jerome-j"},"content":" if (length !\u003d 4) throw new MalformedUserInputException(\"Your database is corrupted.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":118,"author":{"gitId":"Jerome-j"},"content":" return new Deadline(splitTask[1], splitTask[3], Boolean.valueOf(splitTask[2]));","lastModifiedDate":"2024-01-28"},{"lineNumber":119,"author":{"gitId":"Jerome-j"},"content":" } else if (line.startsWith(\"E\")) {","lastModifiedDate":"2024-01-28"},{"lineNumber":120,"author":{"gitId":"Jerome-j"},"content":" // then it is an event","lastModifiedDate":"2024-01-28"},{"lineNumber":121,"author":{"gitId":"Jerome-j"},"content":" if (length !\u003d 5) throw new MalformedUserInputException(\"Your database is corrupted.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":122,"author":{"gitId":"Jerome-j"},"content":" return new Event(splitTask[1], splitTask[3], splitTask[4], Boolean.valueOf(splitTask[2]));","lastModifiedDate":"2024-01-28"},{"lineNumber":123,"author":{"gitId":"Jerome-j"},"content":" } else {","lastModifiedDate":"2024-01-28"},{"lineNumber":124,"author":{"gitId":"Jerome-j"},"content":" throw new MalformedUserInputException(\"Your database is potentially corrupted\");","lastModifiedDate":"2024-01-30"},{"lineNumber":125,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":126,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":127,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":128,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":129,"author":{"gitId":"Jerome-j"},"content":" public void setTaskStatus(int taskIndex, boolean status) throws NoTaskCreatedYetException {","lastModifiedDate":"2024-01-24"},{"lineNumber":130,"author":{"gitId":"Jerome-j"},"content":" if (taskIndex \u003c 0 || taskIndex \u003e this.maxTask) {","lastModifiedDate":"2024-01-24"},{"lineNumber":131,"author":{"gitId":"Jerome-j"},"content":" throw new IndexOutOfBoundsException();","lastModifiedDate":"2024-01-24"},{"lineNumber":132,"author":{"gitId":"Jerome-j"},"content":" } else if (taskIndex \u003e\u003d taskCount) {","lastModifiedDate":"2024-01-24"},{"lineNumber":133,"author":{"gitId":"Jerome-j"},"content":" // It is a valid index, but there is no task there yet.","lastModifiedDate":"2024-01-24"},{"lineNumber":134,"author":{"gitId":"Jerome-j"},"content":" throw new NoTaskCreatedYetException();","lastModifiedDate":"2024-01-24"},{"lineNumber":135,"author":{"gitId":"Jerome-j"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":136,"author":{"gitId":"Jerome-j"},"content":" this.tasksList.get(taskIndex).setDone(status);","lastModifiedDate":"2024-01-24"},{"lineNumber":137,"author":{"gitId":"Jerome-j"},"content":" // We rebuild the dataStorage again","lastModifiedDate":"2024-01-28"},{"lineNumber":138,"author":{"gitId":"Jerome-j"},"content":" rebuildStorage();","lastModifiedDate":"2024-01-28"},{"lineNumber":139,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":140,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":141,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":142,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":143,"author":{"gitId":"Jerome-j"},"content":" public int getTaskCount() {","lastModifiedDate":"2024-01-24"},{"lineNumber":144,"author":{"gitId":"Jerome-j"},"content":" return this.taskCount;","lastModifiedDate":"2024-01-24"},{"lineNumber":145,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":146,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":147,"author":{"gitId":"Jerome-j"},"content":" private void rebuildStorage() {","lastModifiedDate":"2024-01-28"},{"lineNumber":148,"author":{"gitId":"Jerome-j"},"content":" // TODO: might not be a very good idea to rebuild the entire database.","lastModifiedDate":"2024-01-28"},{"lineNumber":149,"author":{"gitId":"Jerome-j"},"content":" for (int i \u003d 0; i \u003c this.taskCount; i++) {","lastModifiedDate":"2024-01-28"},{"lineNumber":150,"author":{"gitId":"Jerome-j"},"content":" // i !\u003d 0 means that refresh the whole file.","lastModifiedDate":"2024-01-28"},{"lineNumber":151,"author":{"gitId":"Jerome-j"},"content":" addTaskToFile(tasksList.get(i).toStorageString(), i !\u003d 0);","lastModifiedDate":"2024-01-28"},{"lineNumber":152,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":153,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":154,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":155,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":156,"author":{"gitId":"Jerome-j"},"content":" public void deleteTask(int indexToDelete) throws NoTaskCreatedYetException {","lastModifiedDate":"2024-01-24"},{"lineNumber":157,"author":{"gitId":"Jerome-j"},"content":" if (indexToDelete \u003c 0 || indexToDelete \u003e this.maxTask) {","lastModifiedDate":"2024-01-24"},{"lineNumber":158,"author":{"gitId":"Jerome-j"},"content":" throw new IndexOutOfBoundsException();","lastModifiedDate":"2024-01-24"},{"lineNumber":159,"author":{"gitId":"Jerome-j"},"content":" } else if (indexToDelete \u003e\u003d this.taskCount) {","lastModifiedDate":"2024-01-24"},{"lineNumber":160,"author":{"gitId":"Jerome-j"},"content":" // It is a valid index, but there is no task there yet.","lastModifiedDate":"2024-01-24"},{"lineNumber":161,"author":{"gitId":"Jerome-j"},"content":" throw new NoTaskCreatedYetException();","lastModifiedDate":"2024-01-24"},{"lineNumber":162,"author":{"gitId":"Jerome-j"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":163,"author":{"gitId":"Jerome-j"},"content":" // If we reach here, it means that there is no problem.","lastModifiedDate":"2024-01-28"},{"lineNumber":164,"author":{"gitId":"Jerome-j"},"content":" this.tasksList.remove(indexToDelete);","lastModifiedDate":"2024-01-24"},{"lineNumber":165,"author":{"gitId":"Jerome-j"},"content":" this.taskCount--;","lastModifiedDate":"2024-01-24"},{"lineNumber":166,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":167,"author":{"gitId":"Jerome-j"},"content":" // We rebuild the dataStorage again","lastModifiedDate":"2024-01-28"},{"lineNumber":168,"author":{"gitId":"Jerome-j"},"content":" rebuildStorage();","lastModifiedDate":"2024-01-28"},{"lineNumber":169,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":170,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":171,"author":{"gitId":"Jerome-j"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"Jerome-j":171}},{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Jerome-j"},"content":"import CustomExceptions.BlankEventException;","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"Jerome-j"},"content":"import CustomExceptions.MalformedUserInputException;","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"Jerome-j"},"content":"import CustomExceptions.NoTaskCreatedYetException;","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"Jerome-j"},"content":"import CustomExceptions.TooManyTasksException;","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"Jerome-j"},"content":"import Parser.EventParser;","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"Jerome-j"},"content":"import TaskList.Task;","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"Jerome-j"},"content":"import java.time.DateTimeException;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"Jerome-j"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"Jerome-j"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"Jerome-j"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"Jerome-j"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":15,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"Jerome-j"},"content":" String userInput \u003d \"\";","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"Jerome-j"},"content":" // Outsource the dataStorage.","lastModifiedDate":"2024-01-24"},{"lineNumber":23,"author":{"gitId":"Jerome-j"},"content":" DataStorage dataStorage \u003d new DataStorage(Integer.MAX_VALUE, \"database.txt\");","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":25,"author":{"gitId":"Jerome-j"},"content":" // To read in user input","lastModifiedDate":"2024-01-24"},{"lineNumber":26,"author":{"gitId":"Jerome-j"},"content":" Scanner sc \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-24"},{"lineNumber":27,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":28,"author":{"gitId":"Jerome-j"},"content":" String welcomeMessage \u003d \"\\t ____________________________________________________________\\n\" +","lastModifiedDate":"2024-01-24"},{"lineNumber":29,"author":{"gitId":"Jerome-j"},"content":" \"\\t Hello! I\u0027m JeromeGPT\\n\" +","lastModifiedDate":"2024-01-24"},{"lineNumber":30,"author":{"gitId":"Jerome-j"},"content":" \"\\t What can I do for you?\\n\" +","lastModifiedDate":"2024-01-24"},{"lineNumber":31,"author":{"gitId":"Jerome-j"},"content":" \"\\t ____________________________________________________________\";","lastModifiedDate":"2024-01-24"},{"lineNumber":32,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":33,"author":{"gitId":"Jerome-j"},"content":" System.out.println(welcomeMessage);","lastModifiedDate":"2024-01-24"},{"lineNumber":34,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":35,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":36,"author":{"gitId":"Jerome-j"},"content":" while (true) {","lastModifiedDate":"2024-01-24"},{"lineNumber":37,"author":{"gitId":"Jerome-j"},"content":" // Keep reading user input until they type \"bye\"","lastModifiedDate":"2024-01-24"},{"lineNumber":38,"author":{"gitId":"Jerome-j"},"content":" userInput \u003d sc.nextLine();","lastModifiedDate":"2024-01-24"},{"lineNumber":39,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":40,"author":{"gitId":"Jerome-j"},"content":" if (userInput.equals(\"list\")) {","lastModifiedDate":"2024-01-24"},{"lineNumber":41,"author":{"gitId":"Jerome-j"},"content":" // Print out all the tasks.","lastModifiedDate":"2024-01-24"},{"lineNumber":42,"author":{"gitId":"Jerome-j"},"content":" System.out.println(\"\\t ____________________________________________________________\");","lastModifiedDate":"2024-01-24"},{"lineNumber":43,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":44,"author":{"gitId":"Jerome-j"},"content":" for (int i \u003d 0; i \u003c dataStorage.getTaskCount(); i++) {","lastModifiedDate":"2024-01-24"},{"lineNumber":45,"author":{"gitId":"Jerome-j"},"content":" int humanReadableId \u003d i + 1;","lastModifiedDate":"2024-01-24"},{"lineNumber":46,"author":{"gitId":"Jerome-j"},"content":" Task currentTask \u003d dataStorage.getTask(i);","lastModifiedDate":"2024-01-24"},{"lineNumber":47,"author":{"gitId":"Jerome-j"},"content":" System.out.println(\"\\t \" + humanReadableId + \". \" + currentTask.toString());","lastModifiedDate":"2024-01-24"},{"lineNumber":48,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":49,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":50,"author":{"gitId":"Jerome-j"},"content":" System.out.println(\"\\t ____________________________________________________________\");","lastModifiedDate":"2024-01-24"},{"lineNumber":51,"author":{"gitId":"Jerome-j"},"content":" } else if (userInput.startsWith(\"mark\")) {","lastModifiedDate":"2024-01-24"},{"lineNumber":52,"author":{"gitId":"Jerome-j"},"content":" handleCommandWithIndex(dataStorage, userInput, TypeOfActions.MARK);","lastModifiedDate":"2024-01-24"},{"lineNumber":53,"author":{"gitId":"Jerome-j"},"content":" } else if (userInput.startsWith(\"unmark\")) {","lastModifiedDate":"2024-01-24"},{"lineNumber":54,"author":{"gitId":"Jerome-j"},"content":" handleCommandWithIndex(dataStorage, userInput, TypeOfActions.UNMARK);","lastModifiedDate":"2024-01-24"},{"lineNumber":55,"author":{"gitId":"Jerome-j"},"content":" } else if (userInput.startsWith(\"delete\")) {","lastModifiedDate":"2024-01-24"},{"lineNumber":56,"author":{"gitId":"Jerome-j"},"content":" handleCommandWithIndex(dataStorage, userInput, TypeOfActions.DELETE);","lastModifiedDate":"2024-01-24"},{"lineNumber":57,"author":{"gitId":"Jerome-j"},"content":" } else if (userInput.startsWith(\"todo\")) {","lastModifiedDate":"2024-01-24"},{"lineNumber":58,"author":{"gitId":"Jerome-j"},"content":" // We further do another Regex search","lastModifiedDate":"2024-01-24"},{"lineNumber":59,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":60,"author":{"gitId":"Jerome-j"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":61,"author":{"gitId":"Jerome-j"},"content":" // In this format: todo borrow book.","lastModifiedDate":"2024-01-24"},{"lineNumber":62,"author":{"gitId":"Jerome-j"},"content":" Task task \u003d EventParser.toDoParser(userInput);","lastModifiedDate":"2024-01-24"},{"lineNumber":63,"author":{"gitId":"Jerome-j"},"content":" createNewTask(dataStorage, task);","lastModifiedDate":"2024-01-24"},{"lineNumber":64,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":65,"author":{"gitId":"Jerome-j"},"content":" } catch (MalformedUserInputException malformedUserInputException) {","lastModifiedDate":"2024-01-24"},{"lineNumber":66,"author":{"gitId":"Jerome-j"},"content":" System.out.println(\"\\t ____________________________________________________________\");","lastModifiedDate":"2024-01-24"},{"lineNumber":67,"author":{"gitId":"Jerome-j"},"content":" System.out.println(\"\\t You have a malformed input for your todo command. \\n\" +","lastModifiedDate":"2024-01-24"},{"lineNumber":68,"author":{"gitId":"Jerome-j"},"content":" \"\\t It is likely that you are missing the todo name\\n\" +","lastModifiedDate":"2024-01-24"},{"lineNumber":69,"author":{"gitId":"Jerome-j"},"content":" \"\\t Your command should be in this format: todo event_name\"","lastModifiedDate":"2024-01-24"},{"lineNumber":70,"author":{"gitId":"Jerome-j"},"content":" );","lastModifiedDate":"2024-01-24"},{"lineNumber":71,"author":{"gitId":"Jerome-j"},"content":" System.out.println(\"\\t ____________________________________________________________\");","lastModifiedDate":"2024-01-24"},{"lineNumber":72,"author":{"gitId":"Jerome-j"},"content":" } catch (BlankEventException e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":73,"author":{"gitId":"Jerome-j"},"content":" System.out.println(\"\\t ____________________________________________________________\");","lastModifiedDate":"2024-01-24"},{"lineNumber":74,"author":{"gitId":"Jerome-j"},"content":" System.out.println(\"\\t \" + e.getMessage());","lastModifiedDate":"2024-01-24"},{"lineNumber":75,"author":{"gitId":"Jerome-j"},"content":" System.out.println(\"\\t ____________________________________________________________\");","lastModifiedDate":"2024-01-24"},{"lineNumber":76,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":77,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":78,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":79,"author":{"gitId":"Jerome-j"},"content":" } else if (userInput.startsWith(\"deadline\")) {","lastModifiedDate":"2024-01-24"},{"lineNumber":80,"author":{"gitId":"Jerome-j"},"content":" // We further do another Regex search","lastModifiedDate":"2024-01-24"},{"lineNumber":81,"author":{"gitId":"Jerome-j"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":82,"author":{"gitId":"Jerome-j"},"content":" Task task \u003d EventParser.deadlineParser(userInput);","lastModifiedDate":"2024-01-24"},{"lineNumber":83,"author":{"gitId":"Jerome-j"},"content":" createNewTask(dataStorage, task);","lastModifiedDate":"2024-01-24"},{"lineNumber":84,"author":{"gitId":"Jerome-j"},"content":" } catch (MalformedUserInputException malformedUserInputException) {","lastModifiedDate":"2024-01-24"},{"lineNumber":85,"author":{"gitId":"Jerome-j"},"content":" System.out.println(\"\\t ____________________________________________________________\");","lastModifiedDate":"2024-01-24"},{"lineNumber":86,"author":{"gitId":"Jerome-j"},"content":" System.out.println(\"\\t You have a malformed input for your deadline command. \\n\" +","lastModifiedDate":"2024-01-24"},{"lineNumber":87,"author":{"gitId":"Jerome-j"},"content":" \"\\t It is likely that you are missing the event name and or a by date.\\n\" +","lastModifiedDate":"2024-01-24"},{"lineNumber":88,"author":{"gitId":"Jerome-j"},"content":" \"\\t Your command should be in this format: deadline return book /by Sunday \\n\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":89,"author":{"gitId":"Jerome-j"},"content":" \"\\t \" + malformedUserInputException.getMessage()","lastModifiedDate":"2024-01-30"},{"lineNumber":90,"author":{"gitId":"Jerome-j"},"content":" );","lastModifiedDate":"2024-01-24"},{"lineNumber":91,"author":{"gitId":"Jerome-j"},"content":" System.out.println(\"\\t ____________________________________________________________\");","lastModifiedDate":"2024-01-24"},{"lineNumber":92,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":93,"author":{"gitId":"Jerome-j"},"content":" } catch (BlankEventException e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":94,"author":{"gitId":"Jerome-j"},"content":" System.out.println(\"\\t ____________________________________________________________\");","lastModifiedDate":"2024-01-24"},{"lineNumber":95,"author":{"gitId":"Jerome-j"},"content":" System.out.println(\"\\t \" + e.getMessage());","lastModifiedDate":"2024-01-24"},{"lineNumber":96,"author":{"gitId":"Jerome-j"},"content":" System.out.println(\"\\t ____________________________________________________________\");","lastModifiedDate":"2024-01-24"},{"lineNumber":97,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":98,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":99,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":100,"author":{"gitId":"Jerome-j"},"content":" } else if (userInput.startsWith(\"event\")) {","lastModifiedDate":"2024-01-24"},{"lineNumber":101,"author":{"gitId":"Jerome-j"},"content":" // We further do another Regex search","lastModifiedDate":"2024-01-24"},{"lineNumber":102,"author":{"gitId":"Jerome-j"},"content":" // In this format: event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2024-01-24"},{"lineNumber":103,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":104,"author":{"gitId":"Jerome-j"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":105,"author":{"gitId":"Jerome-j"},"content":" Task task \u003d EventParser.eventParser(userInput);","lastModifiedDate":"2024-01-24"},{"lineNumber":106,"author":{"gitId":"Jerome-j"},"content":" createNewTask(dataStorage, task);","lastModifiedDate":"2024-01-24"},{"lineNumber":107,"author":{"gitId":"Jerome-j"},"content":" } catch (MalformedUserInputException malformedUserInputException) {","lastModifiedDate":"2024-01-24"},{"lineNumber":108,"author":{"gitId":"Jerome-j"},"content":" System.out.println(\"\\t ____________________________________________________________\");","lastModifiedDate":"2024-01-24"},{"lineNumber":109,"author":{"gitId":"Jerome-j"},"content":" System.out.println(\"\\t You have a malformed input for your event command.\\n\" +","lastModifiedDate":"2024-01-24"},{"lineNumber":110,"author":{"gitId":"Jerome-j"},"content":" \"\\t It is likely that you are missing the event name\" +","lastModifiedDate":"2024-01-24"},{"lineNumber":111,"author":{"gitId":"Jerome-j"},"content":" \"\\t Your command should be in this format: event project meeting /from Mon 2pm /to 4pm\");","lastModifiedDate":"2024-01-24"},{"lineNumber":112,"author":{"gitId":"Jerome-j"},"content":" System.out.println(\"\\t ____________________________________________________________\");","lastModifiedDate":"2024-01-24"},{"lineNumber":113,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":114,"author":{"gitId":"Jerome-j"},"content":" } catch (BlankEventException e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":115,"author":{"gitId":"Jerome-j"},"content":" System.out.println(\"\\t ____________________________________________________________\");","lastModifiedDate":"2024-01-24"},{"lineNumber":116,"author":{"gitId":"Jerome-j"},"content":" System.out.println(\"\\t \" + e.getMessage());","lastModifiedDate":"2024-01-24"},{"lineNumber":117,"author":{"gitId":"Jerome-j"},"content":" System.out.println(\"\\t ____________________________________________________________\");","lastModifiedDate":"2024-01-24"},{"lineNumber":118,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":119,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":120,"author":{"gitId":"Jerome-j"},"content":" } else if (userInput.equals(\"bye\")) {","lastModifiedDate":"2024-01-24"},{"lineNumber":121,"author":{"gitId":"Jerome-j"},"content":" // Use this construct because we don\u0027t want to echo the bye message.","lastModifiedDate":"2024-01-24"},{"lineNumber":122,"author":{"gitId":"Jerome-j"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":123,"author":{"gitId":"Jerome-j"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":124,"author":{"gitId":"Jerome-j"},"content":" System.out.println(\"\\t ____________________________________________________________\");","lastModifiedDate":"2024-01-24"},{"lineNumber":125,"author":{"gitId":"Jerome-j"},"content":" // Emoji of \\uD83D\\uDE05 is 😅","lastModifiedDate":"2024-01-24"},{"lineNumber":126,"author":{"gitId":"Jerome-j"},"content":" System.out.println(\" \\t I have no idea what you are trying to tell me??? \\uD83D\\uDE05\");","lastModifiedDate":"2024-01-24"},{"lineNumber":127,"author":{"gitId":"Jerome-j"},"content":" System.out.println(\" \\t Please try again.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":128,"author":{"gitId":"Jerome-j"},"content":" System.out.println(\"\\t ____________________________________________________________\");","lastModifiedDate":"2024-01-24"},{"lineNumber":129,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":130,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":131,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":132,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":133,"author":{"gitId":"Jerome-j"},"content":" System.out.println(","lastModifiedDate":"2024-01-24"},{"lineNumber":134,"author":{"gitId":"Jerome-j"},"content":" \"\\t ____________________________________________________________\\n\" +","lastModifiedDate":"2024-01-24"},{"lineNumber":135,"author":{"gitId":"Jerome-j"},"content":" \"\\t Bye. Hope to see you again soon!\\n\" +","lastModifiedDate":"2024-01-24"},{"lineNumber":136,"author":{"gitId":"Jerome-j"},"content":" \"\\t ____________________________________________________________\"","lastModifiedDate":"2024-01-24"},{"lineNumber":137,"author":{"gitId":"Jerome-j"},"content":" );","lastModifiedDate":"2024-01-24"},{"lineNumber":138,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":139,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":140,"author":{"gitId":"Jerome-j"},"content":" private static void createNewTask(DataStorage dataStorage, Task task) {","lastModifiedDate":"2024-01-24"},{"lineNumber":141,"author":{"gitId":"Jerome-j"},"content":" // This allows user to add in a new task.","lastModifiedDate":"2024-01-24"},{"lineNumber":142,"author":{"gitId":"Jerome-j"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":143,"author":{"gitId":"Jerome-j"},"content":" dataStorage.addTask(task);","lastModifiedDate":"2024-01-24"},{"lineNumber":144,"author":{"gitId":"Jerome-j"},"content":" System.out.println(","lastModifiedDate":"2024-01-24"},{"lineNumber":145,"author":{"gitId":"Jerome-j"},"content":" \"\\t ____________________________________________________________\\n\" +","lastModifiedDate":"2024-01-24"},{"lineNumber":146,"author":{"gitId":"Jerome-j"},"content":" \"\\t Got it. I\u0027ve added this task:\\n\" +","lastModifiedDate":"2024-01-24"},{"lineNumber":147,"author":{"gitId":"Jerome-j"},"content":" \"\\t added: \" + task.toString() + \"\\n\" +","lastModifiedDate":"2024-01-24"},{"lineNumber":148,"author":{"gitId":"Jerome-j"},"content":" \"\\t Now you have \" + dataStorage.getTaskCount() + \" task(s) in the list.\\n\" +","lastModifiedDate":"2024-01-24"},{"lineNumber":149,"author":{"gitId":"Jerome-j"},"content":" \"\\t ____________________________________________________________\"","lastModifiedDate":"2024-01-24"},{"lineNumber":150,"author":{"gitId":"Jerome-j"},"content":" );","lastModifiedDate":"2024-01-24"},{"lineNumber":151,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":152,"author":{"gitId":"Jerome-j"},"content":" } catch (TooManyTasksException tooManyTaskException) {","lastModifiedDate":"2024-01-24"},{"lineNumber":153,"author":{"gitId":"Jerome-j"},"content":" System.out.println(\"\\t ____________________________________________________________\");","lastModifiedDate":"2024-01-24"},{"lineNumber":154,"author":{"gitId":"Jerome-j"},"content":" System.out.println(\"\\t You are too busy .... how come you got so many tasks??\");","lastModifiedDate":"2024-01-24"},{"lineNumber":155,"author":{"gitId":"Jerome-j"},"content":" System.out.println(\"\\t See la the array no space already. Delete some stuff or restart the program please.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":156,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":157,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":158,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":159,"author":{"gitId":"Jerome-j"},"content":" public static void handleCommandWithIndex(DataStorage dataStorage, String userInput, TypeOfActions typeOfActions) {","lastModifiedDate":"2024-01-24"},{"lineNumber":160,"author":{"gitId":"Jerome-j"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":161,"author":{"gitId":"Jerome-j"},"content":" int idToMark \u003d Integer.parseInt(userInput.split(\" \")[1]) - 1;","lastModifiedDate":"2024-01-24"},{"lineNumber":162,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":163,"author":{"gitId":"Jerome-j"},"content":" if (typeOfActions \u003d\u003d TypeOfActions.UNMARK) {","lastModifiedDate":"2024-01-24"},{"lineNumber":164,"author":{"gitId":"Jerome-j"},"content":" dataStorage.setTaskStatus(idToMark, false);","lastModifiedDate":"2024-01-24"},{"lineNumber":165,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":166,"author":{"gitId":"Jerome-j"},"content":" System.out.println(\"\\t ____________________________________________________________\");","lastModifiedDate":"2024-01-24"},{"lineNumber":167,"author":{"gitId":"Jerome-j"},"content":" System.out.println(\"\\t Nice! I\u0027ve marked this task as not completed yet:\");","lastModifiedDate":"2024-01-24"},{"lineNumber":168,"author":{"gitId":"Jerome-j"},"content":" System.out.println(\"\\t \" + dataStorage.getTask(idToMark).toString());","lastModifiedDate":"2024-01-24"},{"lineNumber":169,"author":{"gitId":"Jerome-j"},"content":" System.out.println(\"\\t ____________________________________________________________\");","lastModifiedDate":"2024-01-24"},{"lineNumber":170,"author":{"gitId":"Jerome-j"},"content":" } else if (typeOfActions \u003d\u003d TypeOfActions.MARK) {","lastModifiedDate":"2024-01-24"},{"lineNumber":171,"author":{"gitId":"Jerome-j"},"content":" dataStorage.setTaskStatus(idToMark, true);","lastModifiedDate":"2024-01-24"},{"lineNumber":172,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":173,"author":{"gitId":"Jerome-j"},"content":" System.out.println(\"\\t ____________________________________________________________\");","lastModifiedDate":"2024-01-24"},{"lineNumber":174,"author":{"gitId":"Jerome-j"},"content":" System.out.println(\"\\t Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2024-01-24"},{"lineNumber":175,"author":{"gitId":"Jerome-j"},"content":" System.out.println(\"\\t \" + dataStorage.getTask(idToMark).toString());","lastModifiedDate":"2024-01-24"},{"lineNumber":176,"author":{"gitId":"Jerome-j"},"content":" System.out.println(\"\\t ____________________________________________________________\");","lastModifiedDate":"2024-01-24"},{"lineNumber":177,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":178,"author":{"gitId":"Jerome-j"},"content":" } else if (typeOfActions \u003d\u003d TypeOfActions.DELETE) {","lastModifiedDate":"2024-01-24"},{"lineNumber":179,"author":{"gitId":"Jerome-j"},"content":" Task task \u003d dataStorage.getTask(idToMark);","lastModifiedDate":"2024-01-24"},{"lineNumber":180,"author":{"gitId":"Jerome-j"},"content":" dataStorage.deleteTask(idToMark);","lastModifiedDate":"2024-01-24"},{"lineNumber":181,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":182,"author":{"gitId":"Jerome-j"},"content":" System.out.println(\"\\t ____________________________________________________________\");","lastModifiedDate":"2024-01-24"},{"lineNumber":183,"author":{"gitId":"Jerome-j"},"content":" System.out.println(\"\\t Noted. I\u0027ve removed this task:\");","lastModifiedDate":"2024-01-24"},{"lineNumber":184,"author":{"gitId":"Jerome-j"},"content":" System.out.println(\"\\t \" + task.toString());","lastModifiedDate":"2024-01-24"},{"lineNumber":185,"author":{"gitId":"Jerome-j"},"content":" System.out.println(\"\\t Now you have \" + dataStorage.getTaskCount() + \" tasks in the list.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":186,"author":{"gitId":"Jerome-j"},"content":" System.out.println(\"\\t ____________________________________________________________\");","lastModifiedDate":"2024-01-24"},{"lineNumber":187,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":188,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":189,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":190,"author":{"gitId":"Jerome-j"},"content":" } catch (IndexOutOfBoundsException indexOutOfBoundsException) {","lastModifiedDate":"2024-01-24"},{"lineNumber":191,"author":{"gitId":"Jerome-j"},"content":" System.out.println(\"\\t ____________________________________________________________\");","lastModifiedDate":"2024-01-24"},{"lineNumber":192,"author":{"gitId":"Jerome-j"},"content":" System.out.println(\"\\t Please do not enter an invalid index. There are \" + dataStorage.getTaskCount() + \" task(s) currently.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":193,"author":{"gitId":"Jerome-j"},"content":" System.out.println(\"\\t ____________________________________________________________\");","lastModifiedDate":"2024-01-24"},{"lineNumber":194,"author":{"gitId":"Jerome-j"},"content":" } catch (NoTaskCreatedYetException noTaskCreatedYetException) {","lastModifiedDate":"2024-01-24"},{"lineNumber":195,"author":{"gitId":"Jerome-j"},"content":" System.out.println(\"\\t ____________________________________________________________\");","lastModifiedDate":"2024-01-24"},{"lineNumber":196,"author":{"gitId":"Jerome-j"},"content":" System.out.println(\"\\t No task is created here yet.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":197,"author":{"gitId":"Jerome-j"},"content":" System.out.println(\"\\t ____________________________________________________________\");","lastModifiedDate":"2024-01-24"},{"lineNumber":198,"author":{"gitId":"Jerome-j"},"content":" } catch (NumberFormatException numberFormatException) {","lastModifiedDate":"2024-01-24"},{"lineNumber":199,"author":{"gitId":"Jerome-j"},"content":" System.out.println(\"\\t ____________________________________________________________\");","lastModifiedDate":"2024-01-24"},{"lineNumber":200,"author":{"gitId":"Jerome-j"},"content":" System.out.println(\"\\t Please enter positive integers 1, 2, 3, ... etc only.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":201,"author":{"gitId":"Jerome-j"},"content":" System.out.println(\"\\t ____________________________________________________________\");","lastModifiedDate":"2024-01-24"},{"lineNumber":202,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":203,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":204,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":205,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":206,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":207,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":208,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":209,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"},{"lineNumber":210,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"Jerome-j":206,"-":4}},{"path":"src/main/java/Parser/DateTimeParser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Jerome-j"},"content":"package Parser;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"Jerome-j"},"content":"import CustomExceptions.MalformedUserInputException;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"Jerome-j"},"content":"import java.time.DateTimeException;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"Jerome-j"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"Jerome-j"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"Jerome-j"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"Jerome-j"},"content":"public class DateTimeParser {","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"Jerome-j"},"content":" // Solution adapted from: https://stackoverflow.com/questions/22463062/how-can-i-parse-format-dates-with-localdatetime-java-8","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"Jerome-j"},"content":" public static final DateTimeFormatter DATE_INPUT_FORMAT \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd\");","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"Jerome-j"},"content":" public static final DateTimeFormatter DATE_OUTPUT_FORMAT \u003d DateTimeFormatter.ofPattern(\"MMM dd yyyy\");","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"Jerome-j"},"content":" private LocalDate localDate;","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"Jerome-j"},"content":" public DateTimeParser(String dateTime) throws MalformedUserInputException {","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"Jerome-j"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"Jerome-j"},"content":" // Possible formats","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"Jerome-j"},"content":" // 12 May","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"Jerome-j"},"content":" // 12 May HH:mm","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"Jerome-j"},"content":" // 12 May 2023","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"Jerome-j"},"content":" // 12 May 2024 11:22","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"Jerome-j"},"content":" // Monday","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"Jerome-j"},"content":" // Monday 2 PM","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"Jerome-j"},"content":" // Monday 2:00 PM","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"Jerome-j"},"content":" localDate \u003d LocalDate.parse(dateTime, DATE_INPUT_FORMAT);","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"Jerome-j"},"content":" } catch (DateTimeException dateTimeException) {","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"Jerome-j"},"content":" throw new MalformedUserInputException(\"Invalid date time format. \\n\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"Jerome-j"},"content":" \"Please enter in format 2024-01-01.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"Jerome-j"},"content":" public String toStorageString() {","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"Jerome-j"},"content":" return this.localDate.format(DATE_INPUT_FORMAT);","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"Jerome-j"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"Jerome-j"},"content":" public String toString() {","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"Jerome-j"},"content":" return this.localDate.format(DATE_OUTPUT_FORMAT);","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"Jerome-j"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"Jerome-j":44}},{"path":"src/main/java/Parser/EventParser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Jerome-j"},"content":"package Parser;","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"Jerome-j"},"content":"import CustomExceptions.BlankEventException;","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"Jerome-j"},"content":"import CustomExceptions.MalformedUserInputException;","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"Jerome-j"},"content":"import TaskList.Deadline;","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"Jerome-j"},"content":"import TaskList.Event;","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"Jerome-j"},"content":"import TaskList.Task;","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"Jerome-j"},"content":"import TaskList.Todo;","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"Jerome-j"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"Jerome-j"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"Jerome-j"},"content":"public class EventParser {","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"Jerome-j"},"content":" public static Task toDoParser(String userInput) throws MalformedUserInputException, BlankEventException {","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"Jerome-j"},"content":" // Solution below adapted from https://www.w3schools.com/java/java_regex.asp","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"Jerome-j"},"content":" Pattern pattern \u003d Pattern.compile(\"^todo (.+)$\");","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"Jerome-j"},"content":" Matcher matcher \u003d pattern.matcher(userInput);","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"Jerome-j"},"content":" if (matcher.find()) {","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"Jerome-j"},"content":" String task \u003d matcher.group(1).trim();","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"Jerome-j"},"content":" if (task.isEmpty()) {","lastModifiedDate":"2024-01-24"},{"lineNumber":23,"author":{"gitId":"Jerome-j"},"content":" throw new BlankEventException(\"Please do not enter an empty task.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"Jerome-j"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":25,"author":{"gitId":"Jerome-j"},"content":" Todo newTodoTask \u003d new Todo(task, false);","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"Jerome-j"},"content":" return newTodoTask;","lastModifiedDate":"2024-01-24"},{"lineNumber":27,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":28,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":29,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":30,"author":{"gitId":"Jerome-j"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":31,"author":{"gitId":"Jerome-j"},"content":" throw new MalformedUserInputException(\"Your todo command is malformed.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":33,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":34,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":35,"author":{"gitId":"Jerome-j"},"content":" public static Task deadlineParser(String userInput) throws MalformedUserInputException, BlankEventException {","lastModifiedDate":"2024-01-24"},{"lineNumber":36,"author":{"gitId":"Jerome-j"},"content":" // Solution below adapted from https://www.w3schools.com/java/java_regex.asp","lastModifiedDate":"2024-01-24"},{"lineNumber":37,"author":{"gitId":"Jerome-j"},"content":" Pattern pattern \u003d Pattern.compile(\"^deadline (.+) \\\\/by (.+)$\");","lastModifiedDate":"2024-01-24"},{"lineNumber":38,"author":{"gitId":"Jerome-j"},"content":" Matcher matcher \u003d pattern.matcher(userInput);","lastModifiedDate":"2024-01-24"},{"lineNumber":39,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":40,"author":{"gitId":"Jerome-j"},"content":" if (matcher.find()) {","lastModifiedDate":"2024-01-24"},{"lineNumber":41,"author":{"gitId":"Jerome-j"},"content":" String task \u003d matcher.group(1).trim();","lastModifiedDate":"2024-01-24"},{"lineNumber":42,"author":{"gitId":"Jerome-j"},"content":" String deadline \u003d matcher.group(2).trim();","lastModifiedDate":"2024-01-24"},{"lineNumber":43,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":44,"author":{"gitId":"Jerome-j"},"content":" if (task.isEmpty()) {","lastModifiedDate":"2024-01-24"},{"lineNumber":45,"author":{"gitId":"Jerome-j"},"content":" throw new BlankEventException(\"Please do not enter an empty task.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":46,"author":{"gitId":"Jerome-j"},"content":" } else if (deadline.isEmpty()) {","lastModifiedDate":"2024-01-24"},{"lineNumber":47,"author":{"gitId":"Jerome-j"},"content":" throw new BlankEventException(\"Please do not enter an empty deadline.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":48,"author":{"gitId":"Jerome-j"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":49,"author":{"gitId":"Jerome-j"},"content":" Deadline newDeadline \u003d new Deadline(task, deadline, false);","lastModifiedDate":"2024-01-28"},{"lineNumber":50,"author":{"gitId":"Jerome-j"},"content":" return newDeadline;","lastModifiedDate":"2024-01-24"},{"lineNumber":51,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":52,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":53,"author":{"gitId":"Jerome-j"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":54,"author":{"gitId":"Jerome-j"},"content":" throw new MalformedUserInputException(\"Your deadline command is malformed.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":56,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":57,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":58,"author":{"gitId":"Jerome-j"},"content":" public static Task eventParser(String userInput) throws MalformedUserInputException, BlankEventException {","lastModifiedDate":"2024-01-24"},{"lineNumber":59,"author":{"gitId":"Jerome-j"},"content":" // Solution below adapted from https://www.w3schools.com/java/java_regex.asp","lastModifiedDate":"2024-01-24"},{"lineNumber":60,"author":{"gitId":"Jerome-j"},"content":" Pattern pattern \u003d Pattern.compile(\"^event (.+) \\\\/from (.+) \\\\/to (.+)$\");","lastModifiedDate":"2024-01-24"},{"lineNumber":61,"author":{"gitId":"Jerome-j"},"content":" Matcher matcher \u003d pattern.matcher(userInput);","lastModifiedDate":"2024-01-24"},{"lineNumber":62,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":63,"author":{"gitId":"Jerome-j"},"content":" if (matcher.find()) {","lastModifiedDate":"2024-01-24"},{"lineNumber":64,"author":{"gitId":"Jerome-j"},"content":" String task \u003d matcher.group(1).trim();","lastModifiedDate":"2024-01-24"},{"lineNumber":65,"author":{"gitId":"Jerome-j"},"content":" String from \u003d matcher.group(2).trim();","lastModifiedDate":"2024-01-24"},{"lineNumber":66,"author":{"gitId":"Jerome-j"},"content":" String to \u003d matcher.group(3).trim();","lastModifiedDate":"2024-01-24"},{"lineNumber":67,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":68,"author":{"gitId":"Jerome-j"},"content":" if (task.isEmpty()) {","lastModifiedDate":"2024-01-24"},{"lineNumber":69,"author":{"gitId":"Jerome-j"},"content":" throw new BlankEventException(\"Please do not enter an empty task.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":70,"author":{"gitId":"Jerome-j"},"content":" } else if (from.isEmpty()) {","lastModifiedDate":"2024-01-24"},{"lineNumber":71,"author":{"gitId":"Jerome-j"},"content":" throw new BlankEventException(\"Please do not enter an empty from date.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":72,"author":{"gitId":"Jerome-j"},"content":" } else if (to.isEmpty()) {","lastModifiedDate":"2024-01-24"},{"lineNumber":73,"author":{"gitId":"Jerome-j"},"content":" throw new BlankEventException(\"Please do not enter an empty to date.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":74,"author":{"gitId":"Jerome-j"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":75,"author":{"gitId":"Jerome-j"},"content":" Event newEventTask \u003d new Event(task, from, to, false);","lastModifiedDate":"2024-01-28"},{"lineNumber":76,"author":{"gitId":"Jerome-j"},"content":" return newEventTask;","lastModifiedDate":"2024-01-24"},{"lineNumber":77,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":78,"author":{"gitId":"Jerome-j"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":79,"author":{"gitId":"Jerome-j"},"content":" throw new MalformedUserInputException(\"Your event input is malformed.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":80,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":81,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":82,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":83,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":84,"author":{"gitId":"Jerome-j"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"Jerome-j":84}},{"path":"src/main/java/TaskList/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Jerome-j"},"content":"package TaskList;","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"Jerome-j"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"Jerome-j"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"Jerome-j"},"content":"import CustomExceptions.MalformedUserInputException;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"Jerome-j"},"content":"import Parser.DateTimeParser;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"Jerome-j"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"Jerome-j"},"content":" private DateTimeParser by;","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"Jerome-j"},"content":" public Deadline(String description, String by, boolean isDone) throws MalformedUserInputException {","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"Jerome-j"},"content":" super(description, isDone);","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"Jerome-j"},"content":" this.by \u003d new DateTimeParser(by);","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"Jerome-j"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"Jerome-j"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"Jerome-j"},"content":" return \"[D]\" + super.toString() + \" (by: \" + by + \")\";","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"Jerome-j"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"Jerome-j"},"content":" public String toStorageString() {","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"Jerome-j"},"content":" return \"D | \" + this.getDescription() + \" | \" + super.getStatus() + \" | \" + this.by.toStorageString();","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"Jerome-j"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"Jerome-j":29}},{"path":"src/main/java/TaskList/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Jerome-j"},"content":"package TaskList;","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"Jerome-j"},"content":"import CustomExceptions.MalformedUserInputException;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"Jerome-j"},"content":"import Parser.DateTimeParser;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"Jerome-j"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"Jerome-j"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"Jerome-j"},"content":" private DateTimeParser startTime;","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"Jerome-j"},"content":" private DateTimeParser endTime;","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"Jerome-j"},"content":" public Event(String description, String startTime, String endTime, boolean isDone) throws MalformedUserInputException {","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"Jerome-j"},"content":" super(description, isDone);","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"Jerome-j"},"content":" this.startTime \u003d new DateTimeParser(startTime);","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"Jerome-j"},"content":" this.endTime \u003d new DateTimeParser(endTime);","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"Jerome-j"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"Jerome-j"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"Jerome-j"},"content":" return \"[E]\" + super.toString() + \" (from: \" + this.startTime + \" to: \" + this.endTime + \")\";","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"Jerome-j"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"Jerome-j"},"content":" public String toStorageString() {","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"Jerome-j"},"content":" return \"E | \" + this.getDescription() + \" | \" + super.getStatus() + \" | \" + this.startTime.toStorageString() + \" | \" + this.endTime.toStorageString();","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"Jerome-j"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"Jerome-j":29}},{"path":"src/main/java/TaskList/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Jerome-j"},"content":"package TaskList;","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"Jerome-j"},"content":"public class Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"Jerome-j"},"content":" private String description;","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"Jerome-j"},"content":" private boolean isDone;","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"Jerome-j"},"content":" public Task(String description, boolean isDone) {","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"Jerome-j"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"Jerome-j"},"content":" this.isDone \u003d isDone;","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"Jerome-j"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"Jerome-j"},"content":" return (isDone ? \"X\" : \" \"); // mark done task with X","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"Jerome-j"},"content":" public boolean getStatus() {","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"Jerome-j"},"content":" return this.isDone;","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"Jerome-j"},"content":" public void setDone(boolean status) {","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"Jerome-j"},"content":" this.isDone \u003d status;","lastModifiedDate":"2024-01-24"},{"lineNumber":23,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":25,"author":{"gitId":"Jerome-j"},"content":" public String getDescription() {","lastModifiedDate":"2024-01-24"},{"lineNumber":26,"author":{"gitId":"Jerome-j"},"content":" return this.description;","lastModifiedDate":"2024-01-24"},{"lineNumber":27,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":28,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":29,"author":{"gitId":"Jerome-j"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":30,"author":{"gitId":"Jerome-j"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":31,"author":{"gitId":"Jerome-j"},"content":" return \"[\" + this.getStatusIcon() + \"] \" + this.getDescription();","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":33,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":34,"author":{"gitId":"Jerome-j"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":35,"author":{"gitId":"Jerome-j"},"content":" * Allows saving of the Task object in a String format so that it can be stored in the database.","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"Jerome-j"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"Jerome-j"},"content":" * @return String interpretation of Task object.","lastModifiedDate":"2024-01-28"},{"lineNumber":38,"author":{"gitId":"Jerome-j"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":39,"author":{"gitId":"Jerome-j"},"content":" public String toStorageString() {","lastModifiedDate":"2024-01-28"},{"lineNumber":40,"author":{"gitId":"Jerome-j"},"content":" return \"T | \" + this.getStatus() + \" | \" + this.description;","lastModifiedDate":"2024-01-28"},{"lineNumber":41,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":42,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":43,"author":{"gitId":"Jerome-j"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"Jerome-j":43}},{"path":"src/main/java/TaskList/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Jerome-j"},"content":"package TaskList;","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"Jerome-j"},"content":"public class Todo extends Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"Jerome-j"},"content":" public Todo(String description, boolean isDone) {","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"Jerome-j"},"content":" super(description, isDone);","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"Jerome-j"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"Jerome-j"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"Jerome-j"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"Jerome-j"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"Jerome-j"},"content":" public String toStorageString() {","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"Jerome-j"},"content":" return \"T | \" + this.getDescription() + \" | \" + super.getStatus();","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"Jerome-j"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"Jerome-j":20}},{"path":"src/main/java/TypeOfActions.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Jerome-j"},"content":"public enum TypeOfActions {","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"Jerome-j"},"content":" DELETE,","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"Jerome-j"},"content":" MARK,","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"Jerome-j"},"content":" UNMARK","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"Jerome-j"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"Jerome-j":5}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"Jerome-j"},"content":"somethingwrong","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"Jerome-j"},"content":"todo hello","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"Jerome-j"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"Jerome-j"},"content":"mark 1","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"Jerome-j"},"content":"event party /from Monday 2pm /to 4pm","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"Jerome-j"},"content":"unmark 1","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"Jerome-j"},"content":"deadline return book /by Sunday","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"Jerome-j"},"content":"mark 2","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"Jerome-j"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"Jerome-j"},"content":"event party /FROM Monday 2pm /to 4pm","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"Jerome-j"},"content":"mark -2","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"Jerome-j"},"content":"delete 1","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"Jerome-j"},"content":"mark 12098765456t7yuioi8765467890-98765789","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"Jerome-j"},"content":"mark","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"Jerome-j"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"Jerome-j"},"content":"delete 3","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"Jerome-j"},"content":"unmark","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"Jerome-j":17}}] +[{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Jerome-j"},"content":"import commands.ByeCommand;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Jerome-j"},"content":"import commands.Command;","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"Jerome-j"},"content":"import commands.CommandResult;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"Jerome-j"},"content":"import common.DataStorage;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"Jerome-j"},"content":"import parser.Parser;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"Jerome-j"},"content":"import ui.Ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":9,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"Jerome-j"},"content":" private Ui ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"Jerome-j"},"content":" private DataStorage dataStorage;","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"Jerome-j"},"content":" public Duke() {","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"Jerome-j"},"content":" public void start() {","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"Jerome-j"},"content":" // TODO: There could be a try catch here","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"Jerome-j"},"content":" this.ui \u003d new Ui();","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"Jerome-j"},"content":" this.dataStorage \u003d new DataStorage(Integer.MAX_VALUE, \"database.txt\");","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"Jerome-j"},"content":" ui.showWelcome();","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"Jerome-j"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"Jerome-j"},"content":" * Prints the Goodbye message and exits.","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"Jerome-j"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"Jerome-j"},"content":" private void exit() {","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"Jerome-j"},"content":" ui.showGoodbye();","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"Jerome-j"},"content":" System.exit(0);","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":33,"author":{"gitId":"Jerome-j"},"content":" public void run() {","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"Jerome-j"},"content":" start();","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"Jerome-j"},"content":" runCommandLoopUntilExitCommand();","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"Jerome-j"},"content":" exit();","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"Jerome-j"},"content":" new Duke().run();","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":43,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"Jerome-j"},"content":" public CommandResult executeCommand(Command command) {","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"Jerome-j"},"content":" command.setData(dataStorage);","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"Jerome-j"},"content":" CommandResult commandResult \u003d command.execute();","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"Jerome-j"},"content":" return commandResult;","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"Jerome-j"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"Jerome-j"},"content":" * Reads the user command and executes it, until the user issues the exit command.","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"Jerome-j"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"Jerome-j"},"content":" private void runCommandLoopUntilExitCommand() {","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":55,"author":{"gitId":"Jerome-j"},"content":" Command command;","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"Jerome-j"},"content":" do {","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"Jerome-j"},"content":" // Keep reading user input until they type \"bye\"","lastModifiedDate":"2024-01-24"},{"lineNumber":59,"author":{"gitId":"Jerome-j"},"content":" String userInput \u003d ui.readCommand();","lastModifiedDate":"2024-01-30"},{"lineNumber":60,"author":{"gitId":"Jerome-j"},"content":" command \u003d new Parser().parseCommand(userInput);","lastModifiedDate":"2024-01-30"},{"lineNumber":61,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":62,"author":{"gitId":"Jerome-j"},"content":" CommandResult commandResult \u003d executeCommand(command);","lastModifiedDate":"2024-01-30"},{"lineNumber":63,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":64,"author":{"gitId":"Jerome-j"},"content":" ui.showLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":65,"author":{"gitId":"Jerome-j"},"content":" System.out.println(commandResult.feedbackToUser);","lastModifiedDate":"2024-01-30"},{"lineNumber":66,"author":{"gitId":"Jerome-j"},"content":" ui.showLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":67,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":68,"author":{"gitId":"Jerome-j"},"content":" } while (!ByeCommand.isExit(command));","lastModifiedDate":"2024-01-30"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":70,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":71,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":72,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"},{"lineNumber":73,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"Jerome-j":69,"-":4}},{"path":"src/main/java/commands/ByeCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Jerome-j"},"content":"package commands;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"Jerome-j"},"content":"public class ByeCommand extends Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"Jerome-j"},"content":" public static final String COMMAND_WORD \u003d \"bye\";","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"Jerome-j"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Quits the program.\\n\"","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"Jerome-j"},"content":" + \"Example: \" + COMMAND_WORD;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"Jerome-j"},"content":" public static final String MESSAGE_EXIT_ACKNOWLEDGMENT \u003d \"\\t Exiting as requested ...\";","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"Jerome-j"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"Jerome-j"},"content":" public CommandResult execute() {","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"Jerome-j"},"content":" return new CommandResult(MESSAGE_EXIT_ACKNOWLEDGMENT);","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"Jerome-j"},"content":" public static boolean isExit(Command command) {","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"Jerome-j"},"content":" return command instanceof ByeCommand; // instanceof returns false if it is null","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"Jerome-j"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"Jerome-j":22}},{"path":"src/main/java/commands/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Jerome-j"},"content":"package commands;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"Jerome-j"},"content":"import common.DataStorage;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"Jerome-j"},"content":"/**","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"Jerome-j"},"content":" * Represents an executable command.","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"Jerome-j"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"Jerome-j"},"content":"public class Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"Jerome-j"},"content":" protected DataStorage dataStorage;","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"Jerome-j"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"Jerome-j"},"content":" * Executes the command and returns the result.","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"Jerome-j"},"content":" * TODO: Code referenced from: https://github.com/se-edu/addressbook-level2","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"Jerome-j"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"Jerome-j"},"content":" public CommandResult execute() {","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"Jerome-j"},"content":" throw new UnsupportedOperationException(\"This method is to be implemented by child classes\");","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"Jerome-j"},"content":" };","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"Jerome-j"},"content":" public void setData(DataStorage dataStorage) {","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"Jerome-j"},"content":" this.dataStorage \u003d dataStorage;","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"Jerome-j"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"Jerome-j":24}},{"path":"src/main/java/commands/CommandResult.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Jerome-j"},"content":"package commands;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"Jerome-j"},"content":"/**","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"Jerome-j"},"content":" * Represents the result of a command execution.","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"Jerome-j"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"Jerome-j"},"content":"public class CommandResult {","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"Jerome-j"},"content":" /** The feedback message to be shown to the user. Contains a description of the execution result */","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"Jerome-j"},"content":" // TODO: Code referenced from: https://github.com/se-edu/addressbook-level2","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"Jerome-j"},"content":" public final String feedbackToUser;","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"Jerome-j"},"content":" public CommandResult(String feedbackToUser) {","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"Jerome-j"},"content":" this.feedbackToUser \u003d feedbackToUser;","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"Jerome-j"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"Jerome-j":16}},{"path":"src/main/java/commands/DeadlineCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Jerome-j"},"content":"package commands;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"Jerome-j"},"content":"import exception.MalformedUserInputException;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"Jerome-j"},"content":"import tasklist.Deadline;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"Jerome-j"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"Jerome-j"},"content":"import static common.DateTimeHandler.DATE_INPUT_FORMAT_STRING;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"Jerome-j"},"content":"public class DeadlineCommand extends Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"Jerome-j"},"content":" public static final String COMMAND_WORD \u003d \"deadline\";","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"Jerome-j"},"content":" public static final String MESSAGE_USAGE \u003d \"\\t \" + COMMAND_WORD + \": Adds an deadline. \\n\"","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"Jerome-j"},"content":" + \"\\t Example: \" + COMMAND_WORD","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"Jerome-j"},"content":" + \" boil hot water /by \" + DATE_INPUT_FORMAT_STRING ;","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"Jerome-j"},"content":" public static final String MESSAGE_BLANK_EVENT \u003d \"\\t The event name cannot be empty!\";","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"Jerome-j"},"content":" public static final String MESSAGE_BLANK_END_TIME \u003d \"\\t The end time cannot be empty!\";","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"Jerome-j"},"content":" public static final String MESSAGE_SUCCESS \u003d \"\\t Got it. I\u0027ve added this task: \\n\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"Jerome-j"},"content":" \"\\t %s\\n\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"Jerome-j"},"content":" \"\\t Now you have %d task(s) available!\";","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"Jerome-j"},"content":" public static final Pattern DEADLINE_ARGUMENTS_FORMAT \u003d Pattern.compile(\"(?\u003ceventName\u003e.+) \\\\/by (?\u003cendTime\u003e\\\\S+)\");","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"Jerome-j"},"content":" private final Deadline toAdd;","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"Jerome-j"},"content":" public DeadlineCommand(String eventName, String by) throws MalformedUserInputException {","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"Jerome-j"},"content":" this.toAdd \u003d new Deadline(eventName, by, false);","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"Jerome-j"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"Jerome-j"},"content":" public CommandResult execute() {","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"Jerome-j"},"content":" dataStorage.addTask(this.toAdd);","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"Jerome-j"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, toAdd.toString(), dataStorage.getTaskCount()));","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"Jerome-j"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"Jerome-j":37}},{"path":"src/main/java/commands/DeleteCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Jerome-j"},"content":"package commands;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"Jerome-j"},"content":"import exception.MalformedUserInputException;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"Jerome-j"},"content":"import tasklist.Task;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"Jerome-j"},"content":"public class DeleteCommand extends Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"Jerome-j"},"content":" public static final String COMMAND_WORD \u003d \"delete\";","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"Jerome-j"},"content":" public static final String MESSAGE_USAGE \u003d \"\\t \" + COMMAND_WORD + \": Delete a selected event when it exists. \\n\"","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"Jerome-j"},"content":" + \"\\t Example: \" + COMMAND_WORD","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"Jerome-j"},"content":" + \" 1 \";","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"Jerome-j"},"content":" public static final String MESSAGE_SUCCESS \u003d \"\\t Noted, I have removed this task:\\n\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"Jerome-j"},"content":" \"\\t %s\\n\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"Jerome-j"},"content":" \"\\t Now you have %d task(s) in the list.\";","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"Jerome-j"},"content":" public static final String MESSAGE_INVALID_ID \u003d \"\\t Please enter a integer that is 1 or larger.\";","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"Jerome-j"},"content":" public static final String MESSAGE_TASK_NOT_CREATED_YET \u003d \" \\t This is an invalid index\\n\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"Jerome-j"},"content":" \"\\t There are %d tasks available.\\n\";","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"Jerome-j"},"content":" private int targetIndex;","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"Jerome-j"},"content":" public DeleteCommand(int targetIndex) {","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"Jerome-j"},"content":" this.targetIndex \u003d targetIndex;","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"Jerome-j"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"Jerome-j"},"content":" public CommandResult execute() {","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"Jerome-j"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"Jerome-j"},"content":" Task task \u003d dataStorage.getTask(targetIndex);","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"Jerome-j"},"content":" dataStorage.deleteTask(targetIndex);","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"Jerome-j"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, task, dataStorage.getTaskCount()));","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"Jerome-j"},"content":" } catch (MalformedUserInputException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"Jerome-j"},"content":" return new CommandResult(e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"Jerome-j"},"content":" } catch (IndexOutOfBoundsException iobe) {","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"Jerome-j"},"content":" return new CommandResult(String.format(MESSAGE_TASK_NOT_CREATED_YET, dataStorage.getTaskCount()));","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"Jerome-j"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"Jerome-j":38}},{"path":"src/main/java/commands/EventCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Jerome-j"},"content":"package commands;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"Jerome-j"},"content":"import exception.MalformedUserInputException;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"Jerome-j"},"content":"import tasklist.Event;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"Jerome-j"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"Jerome-j"},"content":"import static common.DateTimeHandler.DATE_INPUT_FORMAT_STRING;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"Jerome-j"},"content":"public class EventCommand extends Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"Jerome-j"},"content":" public static final String COMMAND_WORD \u003d \"event\";","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"Jerome-j"},"content":" public static final String MESSAGE_USAGE \u003d \"\\t \" + COMMAND_WORD + \": Adds an event.\\n\"","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"Jerome-j"},"content":" + \"\\t Example: \" + COMMAND_WORD","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"Jerome-j"},"content":" + \" go for CS2103 tutorial /from \" + DATE_INPUT_FORMAT_STRING + \" /to \" + DATE_INPUT_FORMAT_STRING;","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"Jerome-j"},"content":" public static final String MESSAGE_SUCCESS \u003d \"\\t Got it. I\u0027ve added this task:\\n\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"Jerome-j"},"content":" \"\\t %s\\n\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"Jerome-j"},"content":" \"\\t Now you have %d task(s) available!\";","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"Jerome-j"},"content":" public static final String MESSAGE_BLANK_EVENT \u003d \"\\t The event name cannot be empty!\";","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"Jerome-j"},"content":" public static final String MESSAGE_BLANK_START_TIME \u003d \"\\t The start time cannot be empty!\";","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"Jerome-j"},"content":" public static final String MESSAGE_BLANK_END_TIME \u003d \"\\t The end time cannot be empty!\";","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"Jerome-j"},"content":" public static final Pattern EVENT_ARGUMENTS_FORMAT \u003d Pattern.compile(\"(?\u003ceventName\u003e.+) \\\\/from (?\u003cstartTime\u003e\\\\S+) \\\\/to (?\u003cendTime\u003e\\\\S+)\");","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"Jerome-j"},"content":" private final Event toAdd;","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"Jerome-j"},"content":" public EventCommand(String eventName, String startTime, String endTime) throws MalformedUserInputException {","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"Jerome-j"},"content":" this.toAdd \u003d new Event(eventName, startTime, endTime, false);","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"Jerome-j"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"Jerome-j"},"content":" public CommandResult execute() {","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"Jerome-j"},"content":" dataStorage.addTask(this.toAdd);","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"Jerome-j"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, toAdd.toString(), dataStorage.getTaskCount()));","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"Jerome-j"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"Jerome-j":38}},{"path":"src/main/java/commands/IncorrectCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Jerome-j"},"content":"package commands;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"Jerome-j"},"content":"/**","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"Jerome-j"},"content":" * Represents an incorrect command. Upon execution, produces some feedback to the user.","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"Jerome-j"},"content":" * TODO: taken from","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"Jerome-j"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"Jerome-j"},"content":"public class IncorrectCommand extends Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"Jerome-j"},"content":" public final String feedbackToUser;","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"Jerome-j"},"content":" public IncorrectCommand(String feedbackToUser) {","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"Jerome-j"},"content":" this.feedbackToUser \u003d feedbackToUser;","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"Jerome-j"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"Jerome-j"},"content":" public CommandResult execute() {","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"Jerome-j"},"content":" return new CommandResult(feedbackToUser);","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"Jerome-j"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"Jerome-j":21}},{"path":"src/main/java/commands/ListCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Jerome-j"},"content":"package commands;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"Jerome-j"},"content":"import tasklist.Task;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"Jerome-j"},"content":"public class ListCommand extends Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"Jerome-j"},"content":" public static final String COMMAND_WORD \u003d \"list\";","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"Jerome-j"},"content":" private static final String MESSAGE_INDIVIDUAL_LISTING_FORMAT \u003d \"\\t %d. %s\";","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"Jerome-j"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"Jerome-j"},"content":" public CommandResult execute() {","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"Jerome-j"},"content":" StringBuilder listViewBuilder \u003d new StringBuilder();","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"Jerome-j"},"content":" for (int i \u003d 0; i \u003c dataStorage.getTaskCount(); i++) {","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"Jerome-j"},"content":" Task currentTask \u003d dataStorage.getTask(i);","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"Jerome-j"},"content":" listViewBuilder.append(String.format(MESSAGE_INDIVIDUAL_LISTING_FORMAT, i + 1, currentTask.toString()));","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"Jerome-j"},"content":" // Append blank line if it is not last line.","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"Jerome-j"},"content":" if (i \u003c dataStorage.getTaskCount() - 1) {","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"Jerome-j"},"content":" listViewBuilder.append(System.lineSeparator());","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"Jerome-j"},"content":" return new CommandResult(listViewBuilder.toString());","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"Jerome-j"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"Jerome-j":28}},{"path":"src/main/java/commands/MarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Jerome-j"},"content":"package commands;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"Jerome-j"},"content":"import exception.MalformedUserInputException;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"Jerome-j"},"content":"import tasklist.Task;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"Jerome-j"},"content":"import static common.DateTimeHandler.DATE_INPUT_FORMAT_STRING;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"Jerome-j"},"content":"public class MarkCommand extends Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"Jerome-j"},"content":" public static final String COMMAND_WORD \u003d \"mark\";","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"Jerome-j"},"content":" public static final String MESSAGE_USAGE \u003d \"\\t \" + COMMAND_WORD + \": Marks an event as completed.\\n\"","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"Jerome-j"},"content":" + \"\\t Example: \" + COMMAND_WORD","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"Jerome-j"},"content":" + \" 1 \";","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"Jerome-j"},"content":" public static final String MESSAGE_SUCCESS \u003d \"\\t Nice! I\u0027ve marked this task as done:\\n\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"Jerome-j"},"content":" \"\\t %s\";","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"Jerome-j"},"content":" public static final String MESSAGE_INVALID_ID \u003d \"\\t Please enter a integer that is 1 or larger.\";","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"Jerome-j"},"content":" public static final String MESSAGE_TASK_NOT_CREATED_YET \u003d \" \\t This is an invalid index\\n\"+","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"Jerome-j"},"content":" \"\\t There are %d tasks available.\";","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"Jerome-j"},"content":" private int targetIndex;","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"Jerome-j"},"content":" public MarkCommand(int targetIndex) {","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"Jerome-j"},"content":" this.targetIndex \u003d targetIndex;","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"Jerome-j"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"Jerome-j"},"content":" public CommandResult execute() {","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"Jerome-j"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"Jerome-j"},"content":" dataStorage.setTaskStatus(targetIndex, true);","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"Jerome-j"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, dataStorage.getTask(targetIndex)));","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"Jerome-j"},"content":" } catch (MalformedUserInputException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"Jerome-j"},"content":" return new CommandResult(e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"Jerome-j"},"content":" } catch (IndexOutOfBoundsException iobe) {","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"Jerome-j"},"content":" return new CommandResult(String.format(MESSAGE_TASK_NOT_CREATED_YET, dataStorage.getTaskCount()));","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"Jerome-j"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"Jerome-j":38}},{"path":"src/main/java/commands/TodoCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Jerome-j"},"content":"package commands;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"Jerome-j"},"content":"import tasklist.Todo;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"Jerome-j"},"content":"public class TodoCommand extends Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"Jerome-j"},"content":" public static final String COMMAND_WORD \u003d \"todo\";","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"Jerome-j"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Adds a todo task. \\n\"","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"Jerome-j"},"content":" + \"Example: \" + COMMAND_WORD","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"Jerome-j"},"content":" + \" boil coconut milk\";","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"Jerome-j"},"content":" public static final String MESSAGE_SUCCESS \u003d \"\\t Got it. I\u0027ve added this task:\\n\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"Jerome-j"},"content":" \"\\t %s\\n\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"Jerome-j"},"content":" \"\\t Now you have %d task(s) available!\";","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"Jerome-j"},"content":" public static final String MESSAGE_BLANK_EVENT \u003d \"\\t The event name cannot be empty!\";","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"Jerome-j"},"content":" private final Todo toAdd;","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"Jerome-j"},"content":" public TodoCommand(String taskName) {","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"Jerome-j"},"content":" this.toAdd \u003d new Todo(taskName, false);","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"Jerome-j"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"Jerome-j"},"content":" public CommandResult execute() {","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"Jerome-j"},"content":" dataStorage.addTask(this.toAdd);","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"Jerome-j"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, toAdd.toString(), dataStorage.getTaskCount()));","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"Jerome-j"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"Jerome-j":29}},{"path":"src/main/java/commands/UnmarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Jerome-j"},"content":"package commands;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"Jerome-j"},"content":"import exception.MalformedUserInputException;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"Jerome-j"},"content":"public class UnmarkCommand extends Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"Jerome-j"},"content":" public static final String COMMAND_WORD \u003d \"unmark\";","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"Jerome-j"},"content":" public static final String MESSAGE_USAGE \u003d \"\\t \" + COMMAND_WORD + \": Marks an event as uncompleted.\\n\"","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"Jerome-j"},"content":" + \"\\t Example: \" + COMMAND_WORD","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"Jerome-j"},"content":" + \" 1 \";","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"Jerome-j"},"content":" public static final String MESSAGE_SUCCESS \u003d \"\\t Nice! I\u0027ve marked this task as uncompleted:\\n\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"Jerome-j"},"content":" \"\\t %s\";","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"Jerome-j"},"content":" public static final String MESSAGE_INVALID_ID \u003d \"\\t Please enter a integer that is 1 or larger.\";","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"Jerome-j"},"content":" public static final String MESSAGE_TASK_NOT_CREATED_YET \u003d \" \\t This is an invalid index\\n\"+","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"Jerome-j"},"content":" \"\\t There are %d tasks available.\";","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"Jerome-j"},"content":" private int targetIndex;","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"Jerome-j"},"content":" public UnmarkCommand(int targetIndex) {","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"Jerome-j"},"content":" this.targetIndex \u003d targetIndex;","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"Jerome-j"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"Jerome-j"},"content":" public CommandResult execute() {","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"Jerome-j"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"Jerome-j"},"content":" dataStorage.setTaskStatus(targetIndex, false);","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"Jerome-j"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, dataStorage.getTask(targetIndex)));","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"Jerome-j"},"content":" } catch (MalformedUserInputException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"Jerome-j"},"content":" return new CommandResult(e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"Jerome-j"},"content":" } catch (IndexOutOfBoundsException iobe) {","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"Jerome-j"},"content":" return new CommandResult(String.format(MESSAGE_TASK_NOT_CREATED_YET, dataStorage.getTaskCount()));","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"Jerome-j"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"Jerome-j":35}},{"path":"src/main/java/common/DataStorage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Jerome-j"},"content":"package common;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"Jerome-j"},"content":"import exception.MalformedUserInputException;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"Jerome-j"},"content":"import tasklist.Deadline;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"Jerome-j"},"content":"import tasklist.Event;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"Jerome-j"},"content":"import tasklist.Task;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"Jerome-j"},"content":"import tasklist.Todo;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"Jerome-j"},"content":"import java.io.*;","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"Jerome-j"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"Jerome-j"},"content":"public class DataStorage {","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"Jerome-j"},"content":" private ArrayList\u003cTask\u003e tasksList;","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"Jerome-j"},"content":" private int taskCount;","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"Jerome-j"},"content":" private int maxTask;","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"Jerome-j"},"content":" private File file;","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"Jerome-j"},"content":" public DataStorage(int maxTask, String fileName) {","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"Jerome-j"},"content":" this.maxTask \u003d maxTask;","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"Jerome-j"},"content":" this.tasksList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"Jerome-j"},"content":" this.taskCount \u003d 0;","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"Jerome-j"},"content":" this.file \u003d new File(fileName);","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"Jerome-j"},"content":" // Solution below adapted from https://www.w3schools.com/java/java_files_create.asp","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"Jerome-j"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"Jerome-j"},"content":" if (this.file.createNewFile()) {","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"Jerome-j"},"content":"// System.out.println(\"\\t The database has not been created. A new database has been created at the following location: \" + this.file.getAbsolutePath());","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"Jerome-j"},"content":" } else {","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"Jerome-j"},"content":" // This means that the file already exists here.","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"Jerome-j"},"content":"// System.out.println(\"\\t Using the existing database located at: \" + this.file.getAbsolutePath());","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"Jerome-j"},"content":" this.tasksList \u003d readFromDatabaseIfAlreadyCreated();","lastModifiedDate":"2024-01-28"},{"lineNumber":34,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":35,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"Jerome-j"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":38,"author":{"gitId":"Jerome-j"},"content":" System.err.println(\"An error occurred while opening the file. \\n\" + \"An error occurred on your device; please check that there is at least 100 MB of free disk space.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"Jerome-j"},"content":" System.exit(1); // Exit the program. Non-zero indicates abnormal termination.","lastModifiedDate":"2024-01-28"},{"lineNumber":40,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":41,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":42,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":43,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":44,"author":{"gitId":"Jerome-j"},"content":" public Task getTask(int index) {","lastModifiedDate":"2024-01-24"},{"lineNumber":45,"author":{"gitId":"Jerome-j"},"content":" if (index \u003c 0 || index \u003e this.taskCount) {","lastModifiedDate":"2024-01-28"},{"lineNumber":46,"author":{"gitId":"Jerome-j"},"content":" throw new IndexOutOfBoundsException();","lastModifiedDate":"2024-01-24"},{"lineNumber":47,"author":{"gitId":"Jerome-j"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":48,"author":{"gitId":"Jerome-j"},"content":" return this.tasksList.get(index);","lastModifiedDate":"2024-01-24"},{"lineNumber":49,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":50,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":51,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":52,"author":{"gitId":"Jerome-j"},"content":" public void addTask(Task task) {","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"Jerome-j"},"content":" this.tasksList.add(task);","lastModifiedDate":"2024-01-24"},{"lineNumber":54,"author":{"gitId":"Jerome-j"},"content":" addTaskToFile(task.toStorageString(), true);","lastModifiedDate":"2024-01-28"},{"lineNumber":55,"author":{"gitId":"Jerome-j"},"content":" this.taskCount++;","lastModifiedDate":"2024-01-24"},{"lineNumber":56,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":57,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":58,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":59,"author":{"gitId":"Jerome-j"},"content":" public void addTaskToFile(String line, boolean isAppend) {","lastModifiedDate":"2024-01-28"},{"lineNumber":60,"author":{"gitId":"Jerome-j"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":61,"author":{"gitId":"Jerome-j"},"content":" // Solution below adapted from: https://www.w3schools.com/java/java_files_create.asp","lastModifiedDate":"2024-01-28"},{"lineNumber":62,"author":{"gitId":"Jerome-j"},"content":" FileWriter myWriter \u003d new FileWriter(this.file, isAppend);","lastModifiedDate":"2024-01-28"},{"lineNumber":63,"author":{"gitId":"Jerome-j"},"content":" myWriter.append(line);","lastModifiedDate":"2024-01-28"},{"lineNumber":64,"author":{"gitId":"Jerome-j"},"content":" myWriter.append(\"\\n\");","lastModifiedDate":"2024-01-28"},{"lineNumber":65,"author":{"gitId":"Jerome-j"},"content":" myWriter.close();","lastModifiedDate":"2024-01-28"},{"lineNumber":66,"author":{"gitId":"Jerome-j"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":67,"author":{"gitId":"Jerome-j"},"content":" System.out.println(\"An error occurred while writing to the file.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":68,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":69,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":70,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":71,"author":{"gitId":"Jerome-j"},"content":" public ArrayList\u003cTask\u003e readFromDatabaseIfAlreadyCreated() {","lastModifiedDate":"2024-01-28"},{"lineNumber":72,"author":{"gitId":"Jerome-j"},"content":" ArrayList\u003cTask\u003e tasksList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-28"},{"lineNumber":73,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":74,"author":{"gitId":"Jerome-j"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":75,"author":{"gitId":"Jerome-j"},"content":" FileReader fileReader \u003d new FileReader(this.file);","lastModifiedDate":"2024-01-28"},{"lineNumber":76,"author":{"gitId":"Jerome-j"},"content":" BufferedReader bufferedReader \u003d new BufferedReader(fileReader);","lastModifiedDate":"2024-01-28"},{"lineNumber":77,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":78,"author":{"gitId":"Jerome-j"},"content":" String line;","lastModifiedDate":"2024-01-28"},{"lineNumber":79,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":80,"author":{"gitId":"Jerome-j"},"content":" // Continuously read until the end of file.","lastModifiedDate":"2024-01-28"},{"lineNumber":81,"author":{"gitId":"Jerome-j"},"content":" while ((line \u003d bufferedReader.readLine()) !\u003d null) {","lastModifiedDate":"2024-01-28"},{"lineNumber":82,"author":{"gitId":"Jerome-j"},"content":" Task task \u003d parseTask(line);","lastModifiedDate":"2024-01-28"},{"lineNumber":83,"author":{"gitId":"Jerome-j"},"content":" tasksList.add(task);","lastModifiedDate":"2024-01-28"},{"lineNumber":84,"author":{"gitId":"Jerome-j"},"content":" this.taskCount++;","lastModifiedDate":"2024-01-28"},{"lineNumber":85,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":86,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":87,"author":{"gitId":"Jerome-j"},"content":" bufferedReader.close();","lastModifiedDate":"2024-01-28"},{"lineNumber":88,"author":{"gitId":"Jerome-j"},"content":" fileReader.close();","lastModifiedDate":"2024-01-28"},{"lineNumber":89,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":90,"author":{"gitId":"Jerome-j"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":91,"author":{"gitId":"Jerome-j"},"content":" System.out.println(\"The file was not found.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":92,"author":{"gitId":"Jerome-j"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":93,"author":{"gitId":"Jerome-j"},"content":" System.out.println(\"An error occurred while reading from the file.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":94,"author":{"gitId":"Jerome-j"},"content":" } catch (MalformedUserInputException malformedUserInputException) {","lastModifiedDate":"2024-01-28"},{"lineNumber":95,"author":{"gitId":"Jerome-j"},"content":" System.out.println(\"Your database may be corrupted. \" + malformedUserInputException.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":96,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":97,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":98,"author":{"gitId":"Jerome-j"},"content":" return tasksList;","lastModifiedDate":"2024-01-28"},{"lineNumber":99,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":100,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":101,"author":{"gitId":"Jerome-j"},"content":" private Task parseTask(String line) throws MalformedUserInputException {","lastModifiedDate":"2024-01-28"},{"lineNumber":102,"author":{"gitId":"Jerome-j"},"content":" String[] splitTask \u003d line.split(\" \\\\| \");","lastModifiedDate":"2024-01-28"},{"lineNumber":103,"author":{"gitId":"Jerome-j"},"content":" int length \u003d splitTask.length;","lastModifiedDate":"2024-01-30"},{"lineNumber":104,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":105,"author":{"gitId":"Jerome-j"},"content":" // TODO: Handle a dirty input.","lastModifiedDate":"2024-01-28"},{"lineNumber":106,"author":{"gitId":"Jerome-j"},"content":" if (line.startsWith(\"T\")) {","lastModifiedDate":"2024-01-28"},{"lineNumber":107,"author":{"gitId":"Jerome-j"},"content":" // then it is a task","lastModifiedDate":"2024-01-28"},{"lineNumber":108,"author":{"gitId":"Jerome-j"},"content":" if (length !\u003d 3) throw new MalformedUserInputException(\"Your database is corrupted.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":109,"author":{"gitId":"Jerome-j"},"content":" return new Todo(splitTask[1], Boolean.valueOf(splitTask[2]));","lastModifiedDate":"2024-01-28"},{"lineNumber":110,"author":{"gitId":"Jerome-j"},"content":" } else if (line.startsWith(\"D\")) {","lastModifiedDate":"2024-01-28"},{"lineNumber":111,"author":{"gitId":"Jerome-j"},"content":" // then it is a deadline","lastModifiedDate":"2024-01-28"},{"lineNumber":112,"author":{"gitId":"Jerome-j"},"content":" if (length !\u003d 4) throw new MalformedUserInputException(\"Your database is corrupted.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":113,"author":{"gitId":"Jerome-j"},"content":" return new Deadline(splitTask[1], splitTask[3], Boolean.valueOf(splitTask[2]));","lastModifiedDate":"2024-01-28"},{"lineNumber":114,"author":{"gitId":"Jerome-j"},"content":" } else if (line.startsWith(\"E\")) {","lastModifiedDate":"2024-01-28"},{"lineNumber":115,"author":{"gitId":"Jerome-j"},"content":" // then it is an event","lastModifiedDate":"2024-01-28"},{"lineNumber":116,"author":{"gitId":"Jerome-j"},"content":" if (length !\u003d 5) throw new MalformedUserInputException(\"Your database is corrupted.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":117,"author":{"gitId":"Jerome-j"},"content":" return new Event(splitTask[1], splitTask[3], splitTask[4], Boolean.valueOf(splitTask[2]));","lastModifiedDate":"2024-01-28"},{"lineNumber":118,"author":{"gitId":"Jerome-j"},"content":" } else {","lastModifiedDate":"2024-01-28"},{"lineNumber":119,"author":{"gitId":"Jerome-j"},"content":" throw new MalformedUserInputException(\"Your database is potentially corrupted\");","lastModifiedDate":"2024-01-30"},{"lineNumber":120,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":121,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":122,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":123,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":124,"author":{"gitId":"Jerome-j"},"content":" public void setTaskStatus(int taskIndex, boolean status) throws MalformedUserInputException {","lastModifiedDate":"2024-01-30"},{"lineNumber":125,"author":{"gitId":"Jerome-j"},"content":" if (taskIndex \u003c 0 || taskIndex \u003e this.maxTask) {","lastModifiedDate":"2024-01-24"},{"lineNumber":126,"author":{"gitId":"Jerome-j"},"content":" throw new IndexOutOfBoundsException();","lastModifiedDate":"2024-01-24"},{"lineNumber":127,"author":{"gitId":"Jerome-j"},"content":" } else if (taskIndex \u003e\u003d taskCount) {","lastModifiedDate":"2024-01-24"},{"lineNumber":128,"author":{"gitId":"Jerome-j"},"content":" // It is a valid index, but there is no task there yet.","lastModifiedDate":"2024-01-24"},{"lineNumber":129,"author":{"gitId":"Jerome-j"},"content":" throw new MalformedUserInputException(\"\\t The task has not been created yet.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":130,"author":{"gitId":"Jerome-j"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":131,"author":{"gitId":"Jerome-j"},"content":" this.tasksList.get(taskIndex).setDone(status);","lastModifiedDate":"2024-01-24"},{"lineNumber":132,"author":{"gitId":"Jerome-j"},"content":" // We rebuild the dataStorage again","lastModifiedDate":"2024-01-28"},{"lineNumber":133,"author":{"gitId":"Jerome-j"},"content":" rebuildStorage();","lastModifiedDate":"2024-01-28"},{"lineNumber":134,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":135,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":136,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":137,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":138,"author":{"gitId":"Jerome-j"},"content":" public int getTaskCount() {","lastModifiedDate":"2024-01-24"},{"lineNumber":139,"author":{"gitId":"Jerome-j"},"content":" return this.taskCount;","lastModifiedDate":"2024-01-24"},{"lineNumber":140,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":141,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":142,"author":{"gitId":"Jerome-j"},"content":" private void rebuildStorage() {","lastModifiedDate":"2024-01-28"},{"lineNumber":143,"author":{"gitId":"Jerome-j"},"content":" // TODO: might not be a very good idea to rebuild the entire database.","lastModifiedDate":"2024-01-28"},{"lineNumber":144,"author":{"gitId":"Jerome-j"},"content":" for (int i \u003d 0; i \u003c this.taskCount; i++) {","lastModifiedDate":"2024-01-28"},{"lineNumber":145,"author":{"gitId":"Jerome-j"},"content":" // i !\u003d 0 means that refresh the whole file.","lastModifiedDate":"2024-01-28"},{"lineNumber":146,"author":{"gitId":"Jerome-j"},"content":" addTaskToFile(tasksList.get(i).toStorageString(), i !\u003d 0);","lastModifiedDate":"2024-01-28"},{"lineNumber":147,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":148,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":149,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":150,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":151,"author":{"gitId":"Jerome-j"},"content":" public void deleteTask(int indexToDelete) throws MalformedUserInputException {","lastModifiedDate":"2024-01-30"},{"lineNumber":152,"author":{"gitId":"Jerome-j"},"content":" if (indexToDelete \u003c 0 || indexToDelete \u003e this.maxTask) {","lastModifiedDate":"2024-01-24"},{"lineNumber":153,"author":{"gitId":"Jerome-j"},"content":" throw new IndexOutOfBoundsException();","lastModifiedDate":"2024-01-24"},{"lineNumber":154,"author":{"gitId":"Jerome-j"},"content":" } else if (indexToDelete \u003e\u003d this.taskCount) {","lastModifiedDate":"2024-01-24"},{"lineNumber":155,"author":{"gitId":"Jerome-j"},"content":" // It is a valid index, but there is no task there yet.","lastModifiedDate":"2024-01-24"},{"lineNumber":156,"author":{"gitId":"Jerome-j"},"content":" throw new MalformedUserInputException(\"There are no task stored at the specified location.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":157,"author":{"gitId":"Jerome-j"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":158,"author":{"gitId":"Jerome-j"},"content":" // If we reach here, it means that there is no problem.","lastModifiedDate":"2024-01-28"},{"lineNumber":159,"author":{"gitId":"Jerome-j"},"content":" this.tasksList.remove(indexToDelete);","lastModifiedDate":"2024-01-24"},{"lineNumber":160,"author":{"gitId":"Jerome-j"},"content":" this.taskCount--;","lastModifiedDate":"2024-01-24"},{"lineNumber":161,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":162,"author":{"gitId":"Jerome-j"},"content":" // We rebuild the dataStorage again","lastModifiedDate":"2024-01-28"},{"lineNumber":163,"author":{"gitId":"Jerome-j"},"content":" rebuildStorage();","lastModifiedDate":"2024-01-28"},{"lineNumber":164,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":165,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":166,"author":{"gitId":"Jerome-j"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"Jerome-j":166}},{"path":"src/main/java/common/DateTimeHandler.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Jerome-j"},"content":"package common;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"Jerome-j"},"content":"import exception.MalformedUserInputException;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"Jerome-j"},"content":"import java.time.DateTimeException;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"Jerome-j"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"Jerome-j"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"Jerome-j"},"content":"public class DateTimeHandler {","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"Jerome-j"},"content":" // Solution adapted from: https://stackoverflow.com/questions/22463062/how-can-i-parse-format-dates-with-localdatetime-java-8","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"Jerome-j"},"content":" public static String DATE_INPUT_FORMAT_STRING \u003d \"yyyy-MM-dd\";","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"Jerome-j"},"content":" public static final DateTimeFormatter DATE_INPUT_FORMAT \u003d DateTimeFormatter.ofPattern(DATE_INPUT_FORMAT_STRING);","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"Jerome-j"},"content":" public static final DateTimeFormatter DATE_OUTPUT_FORMAT \u003d DateTimeFormatter.ofPattern(\"MMM dd yyyy\");","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"Jerome-j"},"content":" private LocalDate localDate;","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"Jerome-j"},"content":" public DateTimeHandler(String dateTime) throws MalformedUserInputException {","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"Jerome-j"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"Jerome-j"},"content":" // Possible formats","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"Jerome-j"},"content":" // 12 May","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"Jerome-j"},"content":" // 12 May HH:mm","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"Jerome-j"},"content":" // 12 May 2023","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"Jerome-j"},"content":" // 12 May 2024 11:22","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"Jerome-j"},"content":" // Monday","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"Jerome-j"},"content":" // Monday 2 PM","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"Jerome-j"},"content":" // Monday 2:00 PM","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"Jerome-j"},"content":" localDate \u003d LocalDate.parse(dateTime, DATE_INPUT_FORMAT);","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"Jerome-j"},"content":" } catch (DateTimeException dateTimeException) {","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"Jerome-j"},"content":" throw new MalformedUserInputException(\"\\t Invalid date time format.\\n\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"Jerome-j"},"content":" \"\\t Please enter in format \" + DATE_INPUT_FORMAT_STRING);","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"Jerome-j"},"content":" public String toStorageString() {","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"Jerome-j"},"content":" return this.localDate.format(DATE_INPUT_FORMAT);","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"Jerome-j"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"Jerome-j"},"content":" public String toString() {","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"Jerome-j"},"content":" return this.localDate.format(DATE_OUTPUT_FORMAT);","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"Jerome-j"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"Jerome-j":44}},{"path":"src/main/java/common/Messages.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Jerome-j"},"content":"package common;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"Jerome-j"},"content":"public class Messages {","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"Jerome-j"},"content":" public static final String MESSAGE_GOODBYE \u003d \"Bye. Hope to see you again soon!\";","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"Jerome-j"},"content":" // Emoji of \\uD83D\\uDE05 is 😅","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"Jerome-j"},"content":" public static final String MESSAGE_INCORRECT \u003d \"\\t I have no idea what you are trying to tell me??? \\uD83D\\uDE05\";","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"Jerome-j"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"Jerome-j":8}},{"path":"src/main/java/exception/MalformedUserInputException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Jerome-j"},"content":"package exception;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"Jerome-j"},"content":"public class MalformedUserInputException extends Exception {","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"Jerome-j"},"content":" public MalformedUserInputException(String message) {","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"Jerome-j"},"content":" super(message);","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"Jerome-j"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"Jerome-j":7}},{"path":"src/main/java/parser/EventParser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Jerome-j"},"content":"package parser;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"Jerome-j"},"content":"import exception.MalformedUserInputException;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"Jerome-j"},"content":"import tasklist.Deadline;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"Jerome-j"},"content":"import tasklist.Event;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"Jerome-j"},"content":"import tasklist.Task;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"Jerome-j"},"content":"import tasklist.Todo;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"Jerome-j"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"Jerome-j"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"Jerome-j"},"content":"public class EventParser {","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"Jerome-j"},"content":" public static Task toDoParser(String userInput) throws MalformedUserInputException {","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"Jerome-j"},"content":" // Solution below adapted from https://www.w3schools.com/java/java_regex.asp","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"Jerome-j"},"content":" Pattern pattern \u003d Pattern.compile(\"^todo (.+)$\");","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"Jerome-j"},"content":" Matcher matcher \u003d pattern.matcher(userInput);","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"Jerome-j"},"content":" if (matcher.find()) {","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"Jerome-j"},"content":" String task \u003d matcher.group(1).trim();","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"Jerome-j"},"content":" if (task.isEmpty()) {","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"Jerome-j"},"content":" throw new MalformedUserInputException(\"Please do not enter an empty task.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"Jerome-j"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"Jerome-j"},"content":" Todo newTodoTask \u003d new Todo(task, false);","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"Jerome-j"},"content":" return newTodoTask;","lastModifiedDate":"2024-01-24"},{"lineNumber":26,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":27,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":28,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":29,"author":{"gitId":"Jerome-j"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":30,"author":{"gitId":"Jerome-j"},"content":" throw new MalformedUserInputException(\"Your todo command is malformed.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":32,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":33,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":34,"author":{"gitId":"Jerome-j"},"content":" public static Task deadlineParser(String userInput) throws MalformedUserInputException {","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"Jerome-j"},"content":" // Solution below adapted from https://www.w3schools.com/java/java_regex.asp","lastModifiedDate":"2024-01-24"},{"lineNumber":36,"author":{"gitId":"Jerome-j"},"content":" Pattern pattern \u003d Pattern.compile(\"^deadline (.+) \\\\/by (.+)$\");","lastModifiedDate":"2024-01-24"},{"lineNumber":37,"author":{"gitId":"Jerome-j"},"content":" Matcher matcher \u003d pattern.matcher(userInput);","lastModifiedDate":"2024-01-24"},{"lineNumber":38,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":39,"author":{"gitId":"Jerome-j"},"content":" if (matcher.find()) {","lastModifiedDate":"2024-01-24"},{"lineNumber":40,"author":{"gitId":"Jerome-j"},"content":" String task \u003d matcher.group(1).trim();","lastModifiedDate":"2024-01-24"},{"lineNumber":41,"author":{"gitId":"Jerome-j"},"content":" String deadline \u003d matcher.group(2).trim();","lastModifiedDate":"2024-01-24"},{"lineNumber":42,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":43,"author":{"gitId":"Jerome-j"},"content":" if (task.isEmpty()) {","lastModifiedDate":"2024-01-24"},{"lineNumber":44,"author":{"gitId":"Jerome-j"},"content":" throw new MalformedUserInputException(\"Please do not enter an empty task.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"Jerome-j"},"content":" } else if (deadline.isEmpty()) {","lastModifiedDate":"2024-01-24"},{"lineNumber":46,"author":{"gitId":"Jerome-j"},"content":" throw new MalformedUserInputException(\"Please do not enter an empty deadline.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"Jerome-j"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":48,"author":{"gitId":"Jerome-j"},"content":" Deadline newDeadline \u003d new Deadline(task, deadline, false);","lastModifiedDate":"2024-01-28"},{"lineNumber":49,"author":{"gitId":"Jerome-j"},"content":" return newDeadline;","lastModifiedDate":"2024-01-24"},{"lineNumber":50,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":51,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":52,"author":{"gitId":"Jerome-j"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":53,"author":{"gitId":"Jerome-j"},"content":" throw new MalformedUserInputException(\"Your deadline command is malformed.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":55,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":56,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":57,"author":{"gitId":"Jerome-j"},"content":" public static Task eventParser(String userInput) throws MalformedUserInputException {","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"Jerome-j"},"content":" // Solution below adapted from https://www.w3schools.com/java/java_regex.asp","lastModifiedDate":"2024-01-24"},{"lineNumber":59,"author":{"gitId":"Jerome-j"},"content":" Pattern pattern \u003d Pattern.compile(\"^event (.+) \\\\/from (.+) \\\\/to (.+)$\");","lastModifiedDate":"2024-01-24"},{"lineNumber":60,"author":{"gitId":"Jerome-j"},"content":" Matcher matcher \u003d pattern.matcher(userInput);","lastModifiedDate":"2024-01-24"},{"lineNumber":61,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":62,"author":{"gitId":"Jerome-j"},"content":" if (matcher.find()) {","lastModifiedDate":"2024-01-24"},{"lineNumber":63,"author":{"gitId":"Jerome-j"},"content":" String task \u003d matcher.group(1).trim();","lastModifiedDate":"2024-01-24"},{"lineNumber":64,"author":{"gitId":"Jerome-j"},"content":" String from \u003d matcher.group(2).trim();","lastModifiedDate":"2024-01-24"},{"lineNumber":65,"author":{"gitId":"Jerome-j"},"content":" String to \u003d matcher.group(3).trim();","lastModifiedDate":"2024-01-24"},{"lineNumber":66,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":67,"author":{"gitId":"Jerome-j"},"content":" if (task.isEmpty()) {","lastModifiedDate":"2024-01-24"},{"lineNumber":68,"author":{"gitId":"Jerome-j"},"content":" throw new MalformedUserInputException(\"Please do not enter an empty task.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":69,"author":{"gitId":"Jerome-j"},"content":" } else if (from.isEmpty()) {","lastModifiedDate":"2024-01-24"},{"lineNumber":70,"author":{"gitId":"Jerome-j"},"content":" throw new MalformedUserInputException(\"Please do not enter an empty from date.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":71,"author":{"gitId":"Jerome-j"},"content":" } else if (to.isEmpty()) {","lastModifiedDate":"2024-01-24"},{"lineNumber":72,"author":{"gitId":"Jerome-j"},"content":" throw new MalformedUserInputException(\"Please do not enter an empty to date.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":73,"author":{"gitId":"Jerome-j"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":74,"author":{"gitId":"Jerome-j"},"content":" Event newEventTask \u003d new Event(task, from, to, false);","lastModifiedDate":"2024-01-28"},{"lineNumber":75,"author":{"gitId":"Jerome-j"},"content":" return newEventTask;","lastModifiedDate":"2024-01-24"},{"lineNumber":76,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":77,"author":{"gitId":"Jerome-j"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":78,"author":{"gitId":"Jerome-j"},"content":" throw new MalformedUserInputException(\"Your event input is malformed.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":79,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":80,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":81,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":82,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":83,"author":{"gitId":"Jerome-j"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"Jerome-j":83}},{"path":"src/main/java/parser/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Jerome-j"},"content":"package parser;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"Jerome-j"},"content":"import commands.*;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"Jerome-j"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"Jerome-j"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"Jerome-j"},"content":"import common.Messages;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"Jerome-j"},"content":"import exception.MalformedUserInputException;","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"Jerome-j"},"content":"import tasklist.Event;","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"Jerome-j"},"content":"import static commands.EventCommand.EVENT_ARGUMENTS_FORMAT;","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"Jerome-j"},"content":"import static commands.MarkCommand.MESSAGE_INVALID_ID;","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"Jerome-j"},"content":"import static commands.TodoCommand.MESSAGE_BLANK_EVENT;","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"Jerome-j"},"content":"public class Parser {","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"Jerome-j"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"Jerome-j"},"content":" * Used for initial separation of command word and args.","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"Jerome-j"},"content":" * TODO: fill in the reference","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"Jerome-j"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"Jerome-j"},"content":" public static final Pattern BASIC_COMMAND_FORMAT \u003d Pattern.compile(\"(?\u003ccommandWord\u003e\\\\S+)(?\u003carguments\u003e.*)\");","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"Jerome-j"},"content":" public Command parseCommand(String userInput) {","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"Jerome-j"},"content":" final Matcher matcher \u003d BASIC_COMMAND_FORMAT.matcher(userInput.trim());","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"Jerome-j"},"content":" if (!matcher.matches()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"Jerome-j"},"content":" return new IncorrectCommand(Messages.MESSAGE_INCORRECT);","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"Jerome-j"},"content":" final String commandWord \u003d matcher.group(\"commandWord\");","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"Jerome-j"},"content":" final String arguments \u003d matcher.group(\"arguments\");","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"Jerome-j"},"content":" switch (commandWord) {","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"Jerome-j"},"content":" case TodoCommand.COMMAND_WORD:","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"Jerome-j"},"content":" return prepareTodo(arguments);","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"Jerome-j"},"content":" case EventCommand.COMMAND_WORD:","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"Jerome-j"},"content":" return prepareEvent(arguments);","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"Jerome-j"},"content":" case ByeCommand.COMMAND_WORD:","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"Jerome-j"},"content":" return new ByeCommand();","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"Jerome-j"},"content":" case ListCommand.COMMAND_WORD:","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"Jerome-j"},"content":" return new ListCommand();","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"Jerome-j"},"content":" case DeadlineCommand.COMMAND_WORD:","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"Jerome-j"},"content":" return prepareDeadline(arguments);","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"Jerome-j"},"content":" case MarkCommand.COMMAND_WORD:","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"Jerome-j"},"content":" return prepareMarkCommand(arguments);","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"Jerome-j"},"content":" case UnmarkCommand.COMMAND_WORD:","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"Jerome-j"},"content":" return prepareUnmarkCommand(arguments);","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"Jerome-j"},"content":" case DeleteCommand.COMMAND_WORD:","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"Jerome-j"},"content":" return prepareDeleteCommand(arguments);","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"Jerome-j"},"content":" default:","lastModifiedDate":"2024-01-30"},{"lineNumber":59,"author":{"gitId":"Jerome-j"},"content":" return new IncorrectCommand(Messages.MESSAGE_INCORRECT);","lastModifiedDate":"2024-01-30"},{"lineNumber":60,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":61,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":62,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":63,"author":{"gitId":"Jerome-j"},"content":" private Command prepareMarkCommand(String arguments) {","lastModifiedDate":"2024-01-30"},{"lineNumber":64,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":65,"author":{"gitId":"Jerome-j"},"content":" if (arguments.trim().isEmpty()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":66,"author":{"gitId":"Jerome-j"},"content":" return new IncorrectCommand(MarkCommand.MESSAGE_INVALID_ID);","lastModifiedDate":"2024-01-30"},{"lineNumber":67,"author":{"gitId":"Jerome-j"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":68,"author":{"gitId":"Jerome-j"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":69,"author":{"gitId":"Jerome-j"},"content":" int targetIndex \u003d Integer.valueOf(arguments.trim()) - 1;","lastModifiedDate":"2024-01-30"},{"lineNumber":70,"author":{"gitId":"Jerome-j"},"content":" return new MarkCommand(targetIndex);","lastModifiedDate":"2024-01-30"},{"lineNumber":71,"author":{"gitId":"Jerome-j"},"content":" } catch (NumberFormatException nfe) {","lastModifiedDate":"2024-01-30"},{"lineNumber":72,"author":{"gitId":"Jerome-j"},"content":" return new IncorrectCommand(MarkCommand.MESSAGE_INVALID_ID);","lastModifiedDate":"2024-01-30"},{"lineNumber":73,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":74,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":75,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":76,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":77,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":78,"author":{"gitId":"Jerome-j"},"content":" private Command prepareUnmarkCommand(String arguments) {","lastModifiedDate":"2024-01-30"},{"lineNumber":79,"author":{"gitId":"Jerome-j"},"content":" if (arguments.trim().isEmpty()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":80,"author":{"gitId":"Jerome-j"},"content":" return new IncorrectCommand(UnmarkCommand.MESSAGE_INVALID_ID);","lastModifiedDate":"2024-01-30"},{"lineNumber":81,"author":{"gitId":"Jerome-j"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":82,"author":{"gitId":"Jerome-j"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":83,"author":{"gitId":"Jerome-j"},"content":" int targetIndex \u003d Integer.valueOf(arguments.trim()) - 1;","lastModifiedDate":"2024-01-30"},{"lineNumber":84,"author":{"gitId":"Jerome-j"},"content":" return new UnmarkCommand(targetIndex);","lastModifiedDate":"2024-01-30"},{"lineNumber":85,"author":{"gitId":"Jerome-j"},"content":" } catch (NumberFormatException nfe) {","lastModifiedDate":"2024-01-30"},{"lineNumber":86,"author":{"gitId":"Jerome-j"},"content":" return new IncorrectCommand(UnmarkCommand.MESSAGE_INVALID_ID);","lastModifiedDate":"2024-01-30"},{"lineNumber":87,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":88,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":89,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":90,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":91,"author":{"gitId":"Jerome-j"},"content":" private Command prepareDeleteCommand(String arguments) {","lastModifiedDate":"2024-01-30"},{"lineNumber":92,"author":{"gitId":"Jerome-j"},"content":" if (arguments.trim().isEmpty()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":93,"author":{"gitId":"Jerome-j"},"content":" return new IncorrectCommand(DeleteCommand.MESSAGE_INVALID_ID);","lastModifiedDate":"2024-01-30"},{"lineNumber":94,"author":{"gitId":"Jerome-j"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":95,"author":{"gitId":"Jerome-j"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":96,"author":{"gitId":"Jerome-j"},"content":" int targetIndex \u003d Integer.valueOf(arguments.trim()) - 1;","lastModifiedDate":"2024-01-30"},{"lineNumber":97,"author":{"gitId":"Jerome-j"},"content":" return new DeleteCommand(targetIndex);","lastModifiedDate":"2024-01-30"},{"lineNumber":98,"author":{"gitId":"Jerome-j"},"content":" } catch (NumberFormatException nfe) {","lastModifiedDate":"2024-01-30"},{"lineNumber":99,"author":{"gitId":"Jerome-j"},"content":" return new IncorrectCommand(DeleteCommand.MESSAGE_INVALID_ID);","lastModifiedDate":"2024-01-30"},{"lineNumber":100,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":101,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":102,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":103,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":104,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":105,"author":{"gitId":"Jerome-j"},"content":" private Command prepareDeadline(String arguments) {","lastModifiedDate":"2024-01-30"},{"lineNumber":106,"author":{"gitId":"Jerome-j"},"content":" final Matcher matcher \u003d DeadlineCommand.DEADLINE_ARGUMENTS_FORMAT.matcher(arguments.trim());","lastModifiedDate":"2024-01-30"},{"lineNumber":107,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":108,"author":{"gitId":"Jerome-j"},"content":" if (!matcher.matches()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":109,"author":{"gitId":"Jerome-j"},"content":" return new IncorrectCommand(DeadlineCommand.MESSAGE_USAGE);","lastModifiedDate":"2024-01-30"},{"lineNumber":110,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":111,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":112,"author":{"gitId":"Jerome-j"},"content":" final String eventName \u003d matcher.group(\"eventName\");","lastModifiedDate":"2024-01-30"},{"lineNumber":113,"author":{"gitId":"Jerome-j"},"content":" final String endTime \u003d matcher.group(\"endTime\");","lastModifiedDate":"2024-01-30"},{"lineNumber":114,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":115,"author":{"gitId":"Jerome-j"},"content":" if (eventName.isEmpty()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":116,"author":{"gitId":"Jerome-j"},"content":" return new IncorrectCommand(DeadlineCommand.MESSAGE_BLANK_EVENT);","lastModifiedDate":"2024-01-30"},{"lineNumber":117,"author":{"gitId":"Jerome-j"},"content":" } else if (endTime.isEmpty()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":118,"author":{"gitId":"Jerome-j"},"content":" return new IncorrectCommand(DeadlineCommand.MESSAGE_BLANK_END_TIME);","lastModifiedDate":"2024-01-30"},{"lineNumber":119,"author":{"gitId":"Jerome-j"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":120,"author":{"gitId":"Jerome-j"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":121,"author":{"gitId":"Jerome-j"},"content":" return new DeadlineCommand(eventName, endTime);","lastModifiedDate":"2024-01-30"},{"lineNumber":122,"author":{"gitId":"Jerome-j"},"content":" } catch (MalformedUserInputException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":123,"author":{"gitId":"Jerome-j"},"content":" return new IncorrectCommand(e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":124,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":125,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":126,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":127,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":128,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":129,"author":{"gitId":"Jerome-j"},"content":" private Command prepareEvent(String arguments) {","lastModifiedDate":"2024-01-30"},{"lineNumber":130,"author":{"gitId":"Jerome-j"},"content":" final Matcher matcher \u003d EventCommand.EVENT_ARGUMENTS_FORMAT.matcher(arguments.trim());","lastModifiedDate":"2024-01-30"},{"lineNumber":131,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":132,"author":{"gitId":"Jerome-j"},"content":" if (!matcher.matches()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":133,"author":{"gitId":"Jerome-j"},"content":" return new IncorrectCommand(EventCommand.MESSAGE_USAGE);","lastModifiedDate":"2024-01-30"},{"lineNumber":134,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":135,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":136,"author":{"gitId":"Jerome-j"},"content":" final String startTime \u003d matcher.group(\"startTime\");","lastModifiedDate":"2024-01-30"},{"lineNumber":137,"author":{"gitId":"Jerome-j"},"content":" final String endTime \u003d matcher.group(\"endTime\");","lastModifiedDate":"2024-01-30"},{"lineNumber":138,"author":{"gitId":"Jerome-j"},"content":" final String eventName \u003d matcher.group(\"eventName\");","lastModifiedDate":"2024-01-30"},{"lineNumber":139,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":140,"author":{"gitId":"Jerome-j"},"content":" if (startTime.isEmpty()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":141,"author":{"gitId":"Jerome-j"},"content":" return new IncorrectCommand(EventCommand.MESSAGE_BLANK_START_TIME);","lastModifiedDate":"2024-01-30"},{"lineNumber":142,"author":{"gitId":"Jerome-j"},"content":" } else if (eventName.isEmpty()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":143,"author":{"gitId":"Jerome-j"},"content":" return new IncorrectCommand(EventCommand.MESSAGE_BLANK_EVENT);","lastModifiedDate":"2024-01-30"},{"lineNumber":144,"author":{"gitId":"Jerome-j"},"content":" } else if (endTime.isEmpty()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":145,"author":{"gitId":"Jerome-j"},"content":" return new IncorrectCommand(EventCommand.MESSAGE_BLANK_END_TIME);","lastModifiedDate":"2024-01-30"},{"lineNumber":146,"author":{"gitId":"Jerome-j"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":147,"author":{"gitId":"Jerome-j"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":148,"author":{"gitId":"Jerome-j"},"content":" return new EventCommand(eventName, startTime, endTime);","lastModifiedDate":"2024-01-30"},{"lineNumber":149,"author":{"gitId":"Jerome-j"},"content":" } catch (MalformedUserInputException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":150,"author":{"gitId":"Jerome-j"},"content":" return new IncorrectCommand(e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":151,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":152,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":153,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":154,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":155,"author":{"gitId":"Jerome-j"},"content":" private Command prepareTodo(String arguments) {","lastModifiedDate":"2024-01-30"},{"lineNumber":156,"author":{"gitId":"Jerome-j"},"content":" String eventName \u003d arguments.trim();","lastModifiedDate":"2024-01-30"},{"lineNumber":157,"author":{"gitId":"Jerome-j"},"content":" if (eventName.isEmpty()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":158,"author":{"gitId":"Jerome-j"},"content":" return new IncorrectCommand(TodoCommand.MESSAGE_BLANK_EVENT);","lastModifiedDate":"2024-01-30"},{"lineNumber":159,"author":{"gitId":"Jerome-j"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":160,"author":{"gitId":"Jerome-j"},"content":" return new TodoCommand(eventName);","lastModifiedDate":"2024-01-30"},{"lineNumber":161,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":162,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":163,"author":{"gitId":"Jerome-j"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"Jerome-j":163}},{"path":"src/main/java/tasklist/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Jerome-j"},"content":"package tasklist;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"Jerome-j"},"content":"import exception.MalformedUserInputException;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"Jerome-j"},"content":"import common.DateTimeHandler;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"Jerome-j"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"Jerome-j"},"content":" private DateTimeHandler by;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"Jerome-j"},"content":" public Deadline(String description, String by, boolean isDone) throws MalformedUserInputException {","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"Jerome-j"},"content":" super(description, isDone);","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"Jerome-j"},"content":" this.by \u003d new DateTimeHandler(by);","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"Jerome-j"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"Jerome-j"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"Jerome-j"},"content":" return \"[D]\" + super.toString() + \" (by: \" + by + \")\";","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"Jerome-j"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"Jerome-j"},"content":" public String toStorageString() {","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"Jerome-j"},"content":" return \"D | \" + this.getDescription() + \" | \" + super.getStatus() + \" | \" + this.by.toStorageString();","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"Jerome-j"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"Jerome-j":26}},{"path":"src/main/java/tasklist/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Jerome-j"},"content":"package tasklist;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"Jerome-j"},"content":"import exception.MalformedUserInputException;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"Jerome-j"},"content":"import common.DateTimeHandler;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"Jerome-j"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"Jerome-j"},"content":" private DateTimeHandler startTime;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"Jerome-j"},"content":" private DateTimeHandler endTime;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"Jerome-j"},"content":" public Event(String description, String startTime, String endTime, boolean isDone) throws MalformedUserInputException {","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"Jerome-j"},"content":" super(description, isDone);","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"Jerome-j"},"content":" this.startTime \u003d new DateTimeHandler(startTime);","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"Jerome-j"},"content":" this.endTime \u003d new DateTimeHandler(endTime);","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"Jerome-j"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"Jerome-j"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"Jerome-j"},"content":" return \"[E]\" + super.toString() + \" (from: \" + this.startTime + \" to: \" + this.endTime + \")\";","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"Jerome-j"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"Jerome-j"},"content":" public String toStorageString() {","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"Jerome-j"},"content":" return \"E | \" + this.getDescription() + \" | \" + super.getStatus() + \" | \" + this.startTime.toStorageString() + \" | \" + this.endTime.toStorageString();","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"Jerome-j"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"Jerome-j":27}},{"path":"src/main/java/tasklist/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Jerome-j"},"content":"package tasklist;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"Jerome-j"},"content":"public class Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"Jerome-j"},"content":" private String description;","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"Jerome-j"},"content":" private boolean isDone;","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"Jerome-j"},"content":" public Task(String description, boolean isDone) {","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"Jerome-j"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"Jerome-j"},"content":" this.isDone \u003d isDone;","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"Jerome-j"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"Jerome-j"},"content":" return (isDone ? \"X\" : \" \"); // mark done task with X","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"Jerome-j"},"content":" public boolean getStatus() {","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"Jerome-j"},"content":" return this.isDone;","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"Jerome-j"},"content":" public void setDone(boolean status) {","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"Jerome-j"},"content":" this.isDone \u003d status;","lastModifiedDate":"2024-01-24"},{"lineNumber":23,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":25,"author":{"gitId":"Jerome-j"},"content":" public String getDescription() {","lastModifiedDate":"2024-01-24"},{"lineNumber":26,"author":{"gitId":"Jerome-j"},"content":" return this.description;","lastModifiedDate":"2024-01-24"},{"lineNumber":27,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":28,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":29,"author":{"gitId":"Jerome-j"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":30,"author":{"gitId":"Jerome-j"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":31,"author":{"gitId":"Jerome-j"},"content":" return \"[\" + this.getStatusIcon() + \"] \" + this.getDescription();","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":33,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":34,"author":{"gitId":"Jerome-j"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":35,"author":{"gitId":"Jerome-j"},"content":" * Allows saving of the Task object in a String format so that it can be stored in the database.","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"Jerome-j"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"Jerome-j"},"content":" * @return String interpretation of Task object.","lastModifiedDate":"2024-01-28"},{"lineNumber":38,"author":{"gitId":"Jerome-j"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":39,"author":{"gitId":"Jerome-j"},"content":" public String toStorageString() {","lastModifiedDate":"2024-01-28"},{"lineNumber":40,"author":{"gitId":"Jerome-j"},"content":" return \"T | \" + this.getStatus() + \" | \" + this.description;","lastModifiedDate":"2024-01-28"},{"lineNumber":41,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":42,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":43,"author":{"gitId":"Jerome-j"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"Jerome-j":43}},{"path":"src/main/java/tasklist/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Jerome-j"},"content":"package tasklist;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"Jerome-j"},"content":"public class Todo extends Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"Jerome-j"},"content":" public Todo(String description, boolean isDone) {","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"Jerome-j"},"content":" super(description, isDone);","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"Jerome-j"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"Jerome-j"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"Jerome-j"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"Jerome-j"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"Jerome-j"},"content":" public String toStorageString() {","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"Jerome-j"},"content":" return \"T | \" + this.getDescription() + \" | \" + super.getStatus();","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"Jerome-j"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"Jerome-j":20}},{"path":"src/main/java/ui/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Jerome-j"},"content":"package ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"Jerome-j"},"content":"import common.Messages;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"Jerome-j"},"content":"import java.io.InputStream;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"Jerome-j"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"Jerome-j"},"content":"public class Ui {","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"Jerome-j"},"content":" private Scanner scanner;","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"Jerome-j"},"content":" public Ui() {","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"Jerome-j"},"content":" scanner \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"Jerome-j"},"content":" public void showLine() {","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"Jerome-j"},"content":" System.out.println(\"\\t ____________________________________________________________\");","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"Jerome-j"},"content":" public void showWelcome() {","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"Jerome-j"},"content":" showLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"Jerome-j"},"content":" System.out.println(\"\\t Hello! I\u0027m JeromeGPT\");","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"Jerome-j"},"content":" System.out.println(\"\\t What can I do for you?\");","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"Jerome-j"},"content":" showLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"Jerome-j"},"content":" public void showGoodbye() {","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"Jerome-j"},"content":" showLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"Jerome-j"},"content":" System.out.println(\"\\t \" + Messages.MESSAGE_GOODBYE);","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"Jerome-j"},"content":" showLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"Jerome-j"},"content":" public String readCommand() {","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"Jerome-j"},"content":" return scanner.nextLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"Jerome-j"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"Jerome-j":38}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"Jerome-j"},"content":"somethingwrong","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"Jerome-j"},"content":"todo hello","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"Jerome-j"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"Jerome-j"},"content":"mark 1","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"Jerome-j"},"content":"event party all day every /from 2023-01-01 /to 2024-03-09","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"Jerome-j"},"content":"list","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"Jerome-j"},"content":"event party all day every /from 2023-02-01 /to 2024-03-09","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"Jerome-j"},"content":"list","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"Jerome-j"},"content":"unmark 1","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"Jerome-j"},"content":"deadline return book /by Sunday","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"Jerome-j"},"content":"mark 2","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"Jerome-j"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"Jerome-j"},"content":"event party /FROM Monday 2pm /to 4pm","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"Jerome-j"},"content":"mark -2","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"Jerome-j"},"content":"delete 1","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"Jerome-j"},"content":"mark 12098765456t7yuioi8765467890-98765789","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"Jerome-j"},"content":"mark","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"Jerome-j"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"Jerome-j"},"content":"delete 3","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"Jerome-j"},"content":"unmark","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"Jerome-j"},"content":"delete -3","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"Jerome-j"},"content":"delete 3.123456","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"Jerome-j"},"content":"bye","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"Jerome-j":23}},{"path":"text-ui-test/runtest.sh","fileType":"sh","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"#!/usr/bin/env bash","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"Jerome-j"},"content":"rm -rf database.txt","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"-"},"content":"# create bin directory if it doesn\u0027t exist","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"if [ ! -d \"../bin\" ]","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":" mkdir ../bin","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":"# delete output from previous run","lastModifiedDate":"2020-05-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":"if [ -e \"./ACTUAL.TXT\" ]","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":" rm ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"# compile the code into the bin folder, terminates if error occurred","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":"if ! javac -cp ../src/main/java -Xlint:none -d ../bin ../src/main/java/*.java","lastModifiedDate":"2020-08-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" echo \"********** BUILD FAILURE **********\"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" exit 1","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"-"},"content":"# run the program, feed commands from input.txt file and redirect the output to the ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":"java -classpath ../bin Duke \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"# convert to UNIX format","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"cp EXPECTED.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":"dos2unix ACTUAL.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":"# compare the output to the expected output","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"diff ACTUAL.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":"if [ $? -eq 0 ]","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" echo \"Test result: PASSED\"","lastModifiedDate":"2020-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":" exit 0","lastModifiedDate":"2020-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":"else","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":" echo \"Test result: FAILED\"","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":" exit 1","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"Jerome-j":4,"-":38}}] diff --git a/Jerome-j_ip_master/commits.json b/Jerome-j_ip_master/commits.json index 642c9e2f..f4de0a91 100644 --- a/Jerome-j_ip_master/commits.json +++ b/Jerome-j_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"Jerome-j":[{"date":"2024-01-24","commitResults":[{"hash":"8f9969130fb09c33a2442f0114fb6c83f7efc2e2","isMergeCommit":false,"messageTitle":"Initial commit because I forgot to commit the Level-1 in the previous version, and I followed some guide on StackOverFlow to rebase - and then i encountered some errors.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":0}}},{"hash":"3dddd3c36a8f2dee050fc6837de8ad0caa23345f","isMergeCommit":false,"messageTitle":"Level-0: Initial commit that simply greets the user and exits.","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":7}}},{"hash":"95345187ecb81680f1f2d8ff5172cc7ce8940e23","isMergeCommit":false,"messageTitle":"Level-1: Improve the skeletal version of Duke so that it echos commands entered by the user, and exits when the user types the command bye.","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":35,"deletions":6}}},{"hash":"4aa6f49dbe41cf966f2b911ea376d7a253b556e2","isMergeCommit":false,"messageTitle":"Level-2: Add the ability to store whatever text entered by the user and display them back to the user when requested.","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":33,"deletions":5}}},{"hash":"0b50e483b17e26cd030c3e02feadfd15de4e2318","isMergeCommit":false,"messageTitle":"Level-3: changed the switch-case construct to if-else, and added a new Task class that was lifted off course site. Add the ability to mark tasks as done and the ability to change the status back to not done.","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":59,"deletions":32}}},{"hash":"367cb7b82e0f77b20539c31657abd744fc71f913","isMergeCommit":false,"messageTitle":"Level-4: Add support for tracking three types of tasks: ToDos, Events, Deadlines. Changed all the variables in each class to be a private variable. No error handling yet.","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":150,"deletions":19}}},{"hash":"500e648022ca8d411987d06f58cd45353e57eb9e","isMergeCommit":false,"messageTitle":"A-TextUiTesting: Use the input/output redirection technique to semi-automate the testing of Duke.","messageBody":"Removed trailing whitespace in welcome message.\n","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":9,"deletions":0},"java":{"insertions":1,"deletions":1}}},{"hash":"e0b4e9e08090a893b390bf3cf6cfc857d1ec137a","isMergeCommit":false,"messageTitle":"Level-4_interim: Shifted Task/Todo/Event/Deadline into its own folder to make it neater.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":13,"deletions":0}}},{"hash":"3f12e247d5f2645b1dd13c972e7474df79d1cd0e","isMergeCommit":false,"messageTitle":"Level-5_interim: Separated the logic for the Parser, Exceptions, and grouped all tasks types in a single package.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":245,"deletions":89}}},{"hash":"fc8afd36128003b4ad81ce62743725ca4c6548f3","isMergeCommit":false,"messageTitle":"Level-5_interim: Changed error message to be more descriptive; specifically for the todo, deadline, positive integer.","messageBody":"Handles un/mark a, un/mark -2, un/mark 100 (number beyond the current tasks created etc).\n\nTrim user input to prevent user from entering a empty item in the command String for all 3 types.\n","fileTypesAndContributionMap":{"txt":{"insertions":7,"deletions":1},"java":{"insertions":95,"deletions":50}}},{"hash":"963540aa8bc63328040dff782a3542471eebeff6","isMergeCommit":false,"messageTitle":"Level-5: Enabled error handling.","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"cc6e0752491395b00fcc183e205aa0036f7af1bd","isMergeCommit":false,"messageTitle":"Level-6_interim: satisfied baseline handling for the delete case.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":41,"deletions":9}}},{"hash":"2383b29146e5b15bc782e75a806849a2f62ff35e","isMergeCommit":false,"messageTitle":"Level-6_interim: added enums","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":18,"deletions":5}}},{"hash":"2211a16dc50eee03547daf07237afbb330c28eda","isMergeCommit":false,"messageTitle":"Level-6 and A-TextUiTesting: Broke apart commands (DELETE/MARK/UNMARK) that have an index component to them using an enum.","messageBody":"","tags":["Level-6","A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":53,"deletions":80}}}]},{"date":"2024-01-28","commitResults":[{"hash":"0c4de6266da677c93dd445eb47123aeaa1aabfa0","isMergeCommit":false,"messageTitle":"Added file storage to HDD support...","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":24,"deletions":2}}},{"hash":"293d73c4111308207633930a610a77b31f53cfa9","isMergeCommit":false,"messageTitle":"Do not allow user to access Tasks that has not been created yet.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":4}}},{"hash":"bf9e8dcc8236032ee6ffcb9633838a9b9f5b8864","isMergeCommit":false,"messageTitle":"Slightly changed error message.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":3}}},{"hash":"e7abaf2455531a05e453337a2f7b6a71d94b111e","isMergeCommit":false,"messageTitle":"Level-7_interim: allow printing so that file can be properly stored in the database.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":45,"deletions":10}}},{"hash":"cf112e8082383df585aa6a8c7f671619219ea389","isMergeCommit":false,"messageTitle":"Default the task when added is considered incomplete","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":3}}},{"hash":"bbc8dd084581d742a1bcd3f90cf9a1b2364cdb9b","isMergeCommit":false,"messageTitle":"Level-7_interim: placeholder function to write value to database is now working.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":12,"deletions":0}}},{"hash":"f56cc89e79809bf84116812eeda0cb034ab024a0","isMergeCommit":false,"messageTitle":"Level-7_interim: added a sample save method","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":6}}},{"hash":"bbe1e200fe6cec49776f9879493423ac032dc3d3","isMergeCommit":false,"messageTitle":"Level-7_interim: Allow data to be rebuilt once the app is re-opened. Rebuild database once data is modified.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":72,"deletions":5}}},{"hash":"f7a167b2ffc038e655dd182232ad3fab51422f42","isMergeCommit":false,"messageTitle":"Level-7_interim: Added database txt file.","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":0}}},{"hash":"415b7034afa087edaf225db4da06418d38bbc1cc","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}}]},{"date":"2024-01-30","commitResults":[{"hash":"c1ff1e1cbd70eb79db2cdbd412bdf6c54c0f3f05","isMergeCommit":false,"messageTitle":"Modify user input exception to be more descriptive","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":5}}},{"hash":"08f29696b65020155bb68a955a5523700f7cd89a","isMergeCommit":false,"messageTitle":"Remove print statements from database.","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":5,"deletions":3},"java":{"insertions":6,"deletions":5}}},{"hash":"9a8959fb73aef95a619fe4e99b37b9625a87964c","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"1cd73c1019b6b1fc109b7a0840dd2505b0a9734f","isMergeCommit":false,"messageTitle":"Enable custom message in MalformedUserInputException","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"cce52ef3e660aced095cfe0355f073223be4bc7a","isMergeCommit":false,"messageTitle":"Separate the time-date parsing logic","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":37,"deletions":0}}},{"hash":"627441f905c407b1836a5e904a3a11621b7eb20f","isMergeCommit":false,"messageTitle":"Make time parsing error more descriptive","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"b100b83c87ecda55594d2dc714cac49308d8a0e9","isMergeCommit":false,"messageTitle":"Store DateTime as DateTime object rather than String","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":19,"deletions":8}}},{"hash":"50e30137cc4ab83527b8d9e2b8dbf09c9c7a0eb7","isMergeCommit":false,"messageTitle":"Create a DateTime class to properly store values in database","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":30,"deletions":14}}},{"hash":"3e5f77fc0a4a4963fbfecc4a555c765c3d8ee627","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"Jerome-j":{"java":659,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":0,"txt":20}},"authorContributionVariance":{"Jerome-j":87334.414},"authorDisplayNameMap":{"Jerome-j":"JERO.. JIE"}} +{"authorDailyContributionsMap":{"Jerome-j":[{"date":"2024-01-24","commitResults":[{"hash":"8f9969130fb09c33a2442f0114fb6c83f7efc2e2","isMergeCommit":false,"messageTitle":"Initial commit because I forgot to commit the Level-1 in the previous version, and I followed some guide on StackOverFlow to rebase - and then i encountered some errors.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":0}}},{"hash":"3dddd3c36a8f2dee050fc6837de8ad0caa23345f","isMergeCommit":false,"messageTitle":"Level-0: Initial commit that simply greets the user and exits.","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":7}}},{"hash":"95345187ecb81680f1f2d8ff5172cc7ce8940e23","isMergeCommit":false,"messageTitle":"Level-1: Improve the skeletal version of Duke so that it echos commands entered by the user, and exits when the user types the command bye.","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":35,"deletions":6}}},{"hash":"4aa6f49dbe41cf966f2b911ea376d7a253b556e2","isMergeCommit":false,"messageTitle":"Level-2: Add the ability to store whatever text entered by the user and display them back to the user when requested.","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":33,"deletions":5}}},{"hash":"0b50e483b17e26cd030c3e02feadfd15de4e2318","isMergeCommit":false,"messageTitle":"Level-3: changed the switch-case construct to if-else, and added a new Task class that was lifted off course site. Add the ability to mark tasks as done and the ability to change the status back to not done.","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":59,"deletions":32}}},{"hash":"367cb7b82e0f77b20539c31657abd744fc71f913","isMergeCommit":false,"messageTitle":"Level-4: Add support for tracking three types of tasks: ToDos, Events, Deadlines. Changed all the variables in each class to be a private variable. No error handling yet.","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":150,"deletions":19}}},{"hash":"500e648022ca8d411987d06f58cd45353e57eb9e","isMergeCommit":false,"messageTitle":"A-TextUiTesting: Use the input/output redirection technique to semi-automate the testing of Duke.","messageBody":"Removed trailing whitespace in welcome message.\n","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":9,"deletions":0},"java":{"insertions":1,"deletions":1}}},{"hash":"e0b4e9e08090a893b390bf3cf6cfc857d1ec137a","isMergeCommit":false,"messageTitle":"Level-4_interim: Shifted Task/Todo/Event/Deadline into its own folder to make it neater.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":13,"deletions":0}}},{"hash":"3f12e247d5f2645b1dd13c972e7474df79d1cd0e","isMergeCommit":false,"messageTitle":"Level-5_interim: Separated the logic for the Parser, Exceptions, and grouped all tasks types in a single package.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":245,"deletions":89}}},{"hash":"fc8afd36128003b4ad81ce62743725ca4c6548f3","isMergeCommit":false,"messageTitle":"Level-5_interim: Changed error message to be more descriptive; specifically for the todo, deadline, positive integer.","messageBody":"Handles un/mark a, un/mark -2, un/mark 100 (number beyond the current tasks created etc).\n\nTrim user input to prevent user from entering a empty item in the command String for all 3 types.\n","fileTypesAndContributionMap":{"txt":{"insertions":7,"deletions":1},"java":{"insertions":95,"deletions":50}}},{"hash":"963540aa8bc63328040dff782a3542471eebeff6","isMergeCommit":false,"messageTitle":"Level-5: Enabled error handling.","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"cc6e0752491395b00fcc183e205aa0036f7af1bd","isMergeCommit":false,"messageTitle":"Level-6_interim: satisfied baseline handling for the delete case.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":41,"deletions":9}}},{"hash":"2383b29146e5b15bc782e75a806849a2f62ff35e","isMergeCommit":false,"messageTitle":"Level-6_interim: added enums","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":18,"deletions":5}}},{"hash":"2211a16dc50eee03547daf07237afbb330c28eda","isMergeCommit":false,"messageTitle":"Level-6 and A-TextUiTesting: Broke apart commands (DELETE/MARK/UNMARK) that have an index component to them using an enum.","messageBody":"","tags":["Level-6","A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":53,"deletions":80}}}]},{"date":"2024-01-28","commitResults":[{"hash":"0c4de6266da677c93dd445eb47123aeaa1aabfa0","isMergeCommit":false,"messageTitle":"Added file storage to HDD support...","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":24,"deletions":2}}},{"hash":"293d73c4111308207633930a610a77b31f53cfa9","isMergeCommit":false,"messageTitle":"Do not allow user to access Tasks that has not been created yet.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":4}}},{"hash":"bf9e8dcc8236032ee6ffcb9633838a9b9f5b8864","isMergeCommit":false,"messageTitle":"Slightly changed error message.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":3}}},{"hash":"e7abaf2455531a05e453337a2f7b6a71d94b111e","isMergeCommit":false,"messageTitle":"Level-7_interim: allow printing so that file can be properly stored in the database.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":45,"deletions":10}}},{"hash":"cf112e8082383df585aa6a8c7f671619219ea389","isMergeCommit":false,"messageTitle":"Default the task when added is considered incomplete","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":3}}},{"hash":"bbc8dd084581d742a1bcd3f90cf9a1b2364cdb9b","isMergeCommit":false,"messageTitle":"Level-7_interim: placeholder function to write value to database is now working.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":12,"deletions":0}}},{"hash":"f56cc89e79809bf84116812eeda0cb034ab024a0","isMergeCommit":false,"messageTitle":"Level-7_interim: added a sample save method","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":6}}},{"hash":"bbe1e200fe6cec49776f9879493423ac032dc3d3","isMergeCommit":false,"messageTitle":"Level-7_interim: Allow data to be rebuilt once the app is re-opened. Rebuild database once data is modified.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":72,"deletions":5}}},{"hash":"f7a167b2ffc038e655dd182232ad3fab51422f42","isMergeCommit":false,"messageTitle":"Level-7_interim: Added database txt file.","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":0}}},{"hash":"415b7034afa087edaf225db4da06418d38bbc1cc","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}}]},{"date":"2024-01-30","commitResults":[{"hash":"c1ff1e1cbd70eb79db2cdbd412bdf6c54c0f3f05","isMergeCommit":false,"messageTitle":"Modify user input exception to be more descriptive","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":5}}},{"hash":"08f29696b65020155bb68a955a5523700f7cd89a","isMergeCommit":false,"messageTitle":"Remove print statements from database.","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":5,"deletions":3},"java":{"insertions":6,"deletions":5}}},{"hash":"9a8959fb73aef95a619fe4e99b37b9625a87964c","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"1cd73c1019b6b1fc109b7a0840dd2505b0a9734f","isMergeCommit":false,"messageTitle":"Enable custom message in MalformedUserInputException","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"cce52ef3e660aced095cfe0355f073223be4bc7a","isMergeCommit":false,"messageTitle":"Separate the time-date parsing logic","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":37,"deletions":0}}},{"hash":"627441f905c407b1836a5e904a3a11621b7eb20f","isMergeCommit":false,"messageTitle":"Make time parsing error more descriptive","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"b100b83c87ecda55594d2dc714cac49308d8a0e9","isMergeCommit":false,"messageTitle":"Store DateTime as DateTime object rather than String","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":19,"deletions":8}}},{"hash":"50e30137cc4ab83527b8d9e2b8dbf09c9c7a0eb7","isMergeCommit":false,"messageTitle":"Create a DateTime class to properly store values in database","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":30,"deletions":14}}},{"hash":"3e5f77fc0a4a4963fbfecc4a555c765c3d8ee627","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}},{"hash":"9ec6ac97da424850bc0c6ea8ad35429f2a045e5a","isMergeCommit":false,"messageTitle":"Separate the welcome message into Ui class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":23,"deletions":7}}},{"hash":"10e80ad19f3d553105d5a9dd55d95ed02208482c","isMergeCommit":false,"messageTitle":"Remove code from main class into run() function","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":3}}},{"hash":"ef1e0900ca6ddba4c05fac487c845baf8790f7d5","isMergeCommit":false,"messageTitle":"Remove code from main class into run() function","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":6,"deletions":5}}},{"hash":"3d2c68f0f134aaf58979948840e2e5857ddfeed6","isMergeCommit":false,"messageTitle":"Change package name to lower case","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":78,"deletions":70}}},{"hash":"88c451f43c0017935fc03710e6338bf7dce75f11","isMergeCommit":false,"messageTitle":"Shift DataStorage.java into a commom Java package.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":0}}},{"hash":"70828148b73f403292b97fe673d6ea270aab6ff2","isMergeCommit":false,"messageTitle":"Create a command class to be the template of each individual command","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":37,"deletions":0}}},{"hash":"9af44bc7759f1a9f013988802d9bc2000381f5c7","isMergeCommit":false,"messageTitle":"Remove duplicates and redundant exceptions","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":1},"java":{"insertions":83,"deletions":84}}},{"hash":"406289d5c31bcc7d5b4ff84665ff2ee03db4d60b","isMergeCommit":false,"messageTitle":"Catch new streamlined MalformedUserInputException exception","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"69c1e37cd831c92045628bbe1c74a8cdd25dfe10","isMergeCommit":false,"messageTitle":"Separate the logic for the parser","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":5,"deletions":0},"java":{"insertions":142,"deletions":70}}},{"hash":"a9e063776d8d9fa898541902db051429f39e1888","isMergeCommit":false,"messageTitle":"Enable Todo and Bye command","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":51,"deletions":7}}},{"hash":"0fa362c759cd50b6cee0e36d35bb671e68dfba24","isMergeCommit":false,"messageTitle":"Add default message for incorrect command","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":1}}},{"hash":"66707030b4ffd54a38df4b644c5d7708225c93da","isMergeCommit":false,"messageTitle":"Tidy up code and only enable bye and todo command","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":18,"deletions":19}}},{"hash":"79d2ea173d77c8b2789bfa254fe979fae09e6108","isMergeCommit":false,"messageTitle":"Create List command as own class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":32,"deletions":4}}},{"hash":"e30b9e6b830a77763a99f59cddc081b747352ce0","isMergeCommit":false,"messageTitle":"Create deadline command as its own class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":76,"deletions":4}}},{"hash":"55575970aa6f3103e60bb8a30df63d880ead4048","isMergeCommit":false,"messageTitle":"Create deadline command as its own class and allow space in event name","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":68,"deletions":3}}},{"hash":"95868defaed6de11408014a1bcc57f5b41acdbc5","isMergeCommit":false,"messageTitle":"Rename and move the date time handling facility","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":13,"deletions":18}}},{"hash":"fe9892532ff8c77636814b6aa082a27008b8de15","isMergeCommit":false,"messageTitle":"Add tab to list command and remove redundant code","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":87}}},{"hash":"cc34803b0ba03de1e4a964dd04fb05cb935c42f2","isMergeCommit":false,"messageTitle":"Add mark command","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":57,"deletions":0}}},{"hash":"e8a924439b4aecec995696ac9e29c3ee531f58d9","isMergeCommit":false,"messageTitle":"Add unmark command","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":51,"deletions":0}}},{"hash":"f71b2cb30d2ab39f324ff554d526acd63961afb6","isMergeCommit":false,"messageTitle":"Add delete command","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":55,"deletions":0}}},{"hash":"64633b55a3228af7e9463b9bb3871af6d4039943","isMergeCommit":false,"messageTitle":"Remove old code","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":51}}},{"hash":"5511a11690c38bde5512525283708420803053e5","isMergeCommit":false,"messageTitle":"Add tests to cater for new design","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":7,"deletions":2},"java":{"insertions":3,"deletions":3},"sh":{"insertions":4,"deletions":0}}},{"hash":"127af88a34ca48298643e9776b94d026d609794d","isMergeCommit":false,"messageTitle":"Update test case","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":11},"java":{"insertions":13,"deletions":13},"sh":{"insertions":1,"deletions":1}}},{"hash":"9004c08dc391ff91491c2ab6ca4d89103d45cbea","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-MoreOOP\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"f29f4e5100e4457f72a1c1fbd85adf938fd8770a","isMergeCommit":false,"messageTitle":"Remove enums for ActionTypes","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":5}}},{"hash":"fe0e986db79f9a9c35d1618398969b63d4c9f941","isMergeCommit":false,"messageTitle":"Move Ui to new package","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":3}}},{"hash":"f83b9733618e7f764e4a4651c40248537aa1214d","isMergeCommit":false,"messageTitle":"Modify test case to try bye command","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":1},"java":{"insertions":2,"deletions":2}}},{"hash":"5ec2b46a11a783759766a3693d1111ef5934ed48","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-Packages\u0027","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"Jerome-j":{"java":1020,"md":0,"fxml":0,"sh":4,"bat":0,"gradle":0,"txt":23}},"authorContributionVariance":{"Jerome-j":225146.08},"authorDisplayNameMap":{"Jerome-j":"JERO.. JIE"}} diff --git a/JiaXinEu_ip_master/authorship.json b/JiaXinEu_ip_master/authorship.json index a6398114..adce38dd 100644 --- a/JiaXinEu_ip_master/authorship.json +++ b/JiaXinEu_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"src/main/java/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"JiaXinEu"},"content":"public interface Command {","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"JiaXinEu"},"content":" public void execute(TaskList list, Ui ui, Storage storage) throws DukeException;","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"JiaXinEu"},"content":" public boolean isExit();","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"JiaXinEu"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"JiaXinEu":5}},{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"JiaXinEu"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"JiaXinEu"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"JiaXinEu"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"JiaXinEu"},"content":"public class Deadline extends Task{","lastModifiedDate":"2024-01-21"},{"lineNumber":6,"author":{"gitId":"JiaXinEu"},"content":" private LocalDateTime date;","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":8,"author":{"gitId":"JiaXinEu"},"content":" public Deadline(String task, String date) {","lastModifiedDate":"2024-01-21"},{"lineNumber":9,"author":{"gitId":"JiaXinEu"},"content":" super(task);","lastModifiedDate":"2024-01-21"},{"lineNumber":10,"author":{"gitId":"JiaXinEu"},"content":" this.date \u003d setDate(date);","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"JiaXinEu"},"content":" public LocalDateTime setDate(String s) throws DateTimeParseException {","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"JiaXinEu"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"dd-MM-yyyy HH:mm\");","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"JiaXinEu"},"content":" LocalDateTime date \u003d null;","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"JiaXinEu"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"JiaXinEu"},"content":" date \u003d LocalDateTime.parse(s, formatter);","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"JiaXinEu"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"JiaXinEu"},"content":" throw new DateTimeParseException(\"Invalid start/end date. Specify date in format \u0027dd-MM-yyyy HH:mm\u0027.\", e.getParsedString(), e.getErrorIndex());","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"JiaXinEu"},"content":" return date;","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":23,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":24,"author":{"gitId":"JiaXinEu"},"content":" @Override","lastModifiedDate":"2024-01-21"},{"lineNumber":25,"author":{"gitId":"JiaXinEu"},"content":" public String printTask() {","lastModifiedDate":"2024-01-21"},{"lineNumber":26,"author":{"gitId":"JiaXinEu"},"content":" return \"[D]\" + super.printTask() + \" (by: \" + printDate() + \")\";","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":28,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":29,"author":{"gitId":"JiaXinEu"},"content":" @Override","lastModifiedDate":"2024-01-26"},{"lineNumber":30,"author":{"gitId":"JiaXinEu"},"content":" public String toString() {","lastModifiedDate":"2024-01-26"},{"lineNumber":31,"author":{"gitId":"JiaXinEu"},"content":" return String.format(\"D | %s | %s\", super.toString(), this.date.format(DateTimeFormatter.ofPattern(\"dd-MM-yyyy HH:mm\")));","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":33,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":34,"author":{"gitId":"JiaXinEu"},"content":" public String printDate() {","lastModifiedDate":"2024-01-28"},{"lineNumber":35,"author":{"gitId":"JiaXinEu"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"MMM dd yyyy, HH:mm\");","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"JiaXinEu"},"content":" return this.date.format(formatter);","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":38,"author":{"gitId":"JiaXinEu"},"content":"}","lastModifiedDate":"2024-01-21"}],"authorContributionMap":{"JiaXinEu":38}},{"path":"src/main/java/DeadlineCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"JiaXinEu"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"JiaXinEu"},"content":"public class DeadlineCommand implements Command {","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"JiaXinEu"},"content":" private String input;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"JiaXinEu"},"content":" public DeadlineCommand(String input) {","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"JiaXinEu"},"content":" this.input \u003d input;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"JiaXinEu"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"JiaXinEu"},"content":" public void execute(TaskList list, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"JiaXinEu"},"content":" String[] task \u003d input.split(\"/by\");","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"JiaXinEu"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"JiaXinEu"},"content":" Task t \u003d new Deadline(task[0].substring(9).trim(), task[1].trim());","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"JiaXinEu"},"content":" list.add(t);","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"JiaXinEu"},"content":" ui.showAdded(t, list);","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"JiaXinEu"},"content":" storage.writeToFile(list);","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"JiaXinEu"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"JiaXinEu"},"content":" throw new DukeException(e.getMessage());","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"JiaXinEu"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"JiaXinEu"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"JiaXinEu"},"content":" return false;","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"JiaXinEu"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"JiaXinEu":27}},{"path":"src/main/java/DeleteCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"JiaXinEu"},"content":"public class DeleteCommand implements Command {","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"JiaXinEu"},"content":" private String input;","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"JiaXinEu"},"content":" public DeleteCommand(String input) {","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"JiaXinEu"},"content":" this.input \u003d input;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"JiaXinEu"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"JiaXinEu"},"content":" public void execute(TaskList list, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"JiaXinEu"},"content":" String[] s \u003d input.split(\"\\\\s\");","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"JiaXinEu"},"content":" int num \u003d Integer.parseInt(s[1]);","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"JiaXinEu"},"content":" if (num \u003c\u003d list.getSize() \u0026\u0026 num \u003e\u003d 1) {","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"JiaXinEu"},"content":" Task t \u003d list.delete(num - 1);","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"JiaXinEu"},"content":" ui.showDeleted(t, list);","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"JiaXinEu"},"content":" storage.writeToFile(list);","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"JiaXinEu"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"JiaXinEu"},"content":" throw new DukeException(\"Task (\" + num + \") not found.\\n\" + list.print());","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"JiaXinEu"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"JiaXinEu"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"JiaXinEu"},"content":" return false;","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"JiaXinEu"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"JiaXinEu":25}},{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":2,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"JiaXinEu"},"content":" private Storage storage;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"JiaXinEu"},"content":" private TaskList tasks;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"JiaXinEu"},"content":" private Ui ui;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"JiaXinEu"},"content":" public Duke(String file, String fileParent, String name, String logo) {","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"JiaXinEu"},"content":" ui \u003d new Ui(name, logo, System.in);","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"JiaXinEu"},"content":" storage \u003d new Storage(file, fileParent);","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"JiaXinEu"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"JiaXinEu"},"content":" tasks \u003d new TaskList(storage.readFromFile());","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"JiaXinEu"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"JiaXinEu"},"content":" ui.showLoadingError();","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"JiaXinEu"},"content":" tasks \u003d new TaskList();","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":16,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":17,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":18,"author":{"gitId":"JiaXinEu"},"content":" public void run() {","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"JiaXinEu"},"content":" ui.showWelcome();","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"JiaXinEu"},"content":" boolean isExit \u003d false;","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"JiaXinEu"},"content":" while (!isExit) {","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"JiaXinEu"},"content":" try {","lastModifiedDate":"2024-01-26"},{"lineNumber":23,"author":{"gitId":"JiaXinEu"},"content":" String fullCommand \u003d ui.readCommand();","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"JiaXinEu"},"content":" ui.showLine();","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"JiaXinEu"},"content":" Command c \u003d Parser.parseCommand(fullCommand);","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"JiaXinEu"},"content":" c.execute(tasks, ui, storage);","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"JiaXinEu"},"content":" isExit \u003d c.isExit();","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"JiaXinEu"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"JiaXinEu"},"content":" ui.showError(e.getMessage());","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"JiaXinEu"},"content":" } finally {","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"JiaXinEu"},"content":" ui.showLine();","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":33,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":34,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":35,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":36,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"JiaXinEu"},"content":" String logo \u003d \"\\t ____ __ _ _ __ ___ ___ ____ ___ ____\\n\\t\"","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"JiaXinEu"},"content":" + \" (_ _) /__\\\\( \\\\/ )/__\\\\ / __)/ __)(_ _)/ __)(_ _)\\n\\t\"","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"JiaXinEu"},"content":" + \" .-_)( /(__)\\\\\\\\ //(__)\\\\ \\\\__ \\\\\\\\__ \\\\ _)(_ \\\\__ \\\\ )(\\n\\t\"","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"JiaXinEu"},"content":" + \"\\\\____)(__)(__)\\\\/(__)(__)(___/(___/(____)(___/ (__)\\n\";","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":43,"author":{"gitId":"JiaXinEu"},"content":" new Duke(\"Duke.txt\", \"./data\", \"JavAssist\", logo).run();","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"JiaXinEu"},"content":"//","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"JiaXinEu"},"content":"//","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"JiaXinEu"},"content":"// public static void main(String[] args) {","lastModifiedDate":"2024-01-29"},{"lineNumber":50,"author":{"gitId":"JiaXinEu"},"content":"// String logo \u003d \"\\t ____ __ _ _ __ ___ ___ ____ ___ ____\\n\\t\"","lastModifiedDate":"2024-01-29"},{"lineNumber":51,"author":{"gitId":"JiaXinEu"},"content":"// + \" (_ _) /__\\\\( \\\\/ )/__\\\\ / __)/ __)(_ _)/ __)(_ _)\\n\\t\"","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"JiaXinEu"},"content":"// + \" .-_)( /(__)\\\\\\\\ //(__)\\\\ \\\\__ \\\\\\\\__ \\\\ _)(_ \\\\__ \\\\ )(\\n\\t\"","lastModifiedDate":"2024-01-29"},{"lineNumber":53,"author":{"gitId":"JiaXinEu"},"content":"// + \"\\\\____)(__)(__)\\\\/(__)(__)(___/(___/(____)(___/ (__)\\n\";","lastModifiedDate":"2024-01-29"},{"lineNumber":54,"author":{"gitId":"JiaXinEu"},"content":"//","lastModifiedDate":"2024-01-29"},{"lineNumber":55,"author":{"gitId":"JiaXinEu"},"content":"//","lastModifiedDate":"2024-01-29"},{"lineNumber":56,"author":{"gitId":"JiaXinEu"},"content":"// TaskList list \u003d new TaskList();","lastModifiedDate":"2024-01-29"},{"lineNumber":57,"author":{"gitId":"JiaXinEu"},"content":"//","lastModifiedDate":"2024-01-29"},{"lineNumber":58,"author":{"gitId":"JiaXinEu"},"content":"// Storage sto \u003d new Storage(\"Duke.txt\", \"./data\");","lastModifiedDate":"2024-01-29"},{"lineNumber":59,"author":{"gitId":"JiaXinEu"},"content":"//","lastModifiedDate":"2024-01-29"},{"lineNumber":60,"author":{"gitId":"JiaXinEu"},"content":"//","lastModifiedDate":"2024-01-29"},{"lineNumber":61,"author":{"gitId":"JiaXinEu"},"content":"// list.setList(sto.readFromFile());","lastModifiedDate":"2024-01-29"},{"lineNumber":62,"author":{"gitId":"JiaXinEu"},"content":"//","lastModifiedDate":"2024-01-29"},{"lineNumber":63,"author":{"gitId":"JiaXinEu"},"content":"//","lastModifiedDate":"2024-01-29"},{"lineNumber":64,"author":{"gitId":"JiaXinEu"},"content":"// Ui ui \u003d new Ui(\"JavAssist\");","lastModifiedDate":"2024-01-29"},{"lineNumber":65,"author":{"gitId":"JiaXinEu"},"content":"//","lastModifiedDate":"2024-01-29"},{"lineNumber":66,"author":{"gitId":"JiaXinEu"},"content":"// ui.showWelcome();","lastModifiedDate":"2024-01-29"},{"lineNumber":67,"author":{"gitId":"JiaXinEu"},"content":"//","lastModifiedDate":"2024-01-29"},{"lineNumber":68,"author":{"gitId":"JiaXinEu"},"content":"// String input;","lastModifiedDate":"2024-01-29"},{"lineNumber":69,"author":{"gitId":"JiaXinEu"},"content":"//","lastModifiedDate":"2024-01-29"},{"lineNumber":70,"author":{"gitId":"JiaXinEu"},"content":"//","lastModifiedDate":"2024-01-29"},{"lineNumber":71,"author":{"gitId":"JiaXinEu"},"content":"// boolean isExit \u003d false;","lastModifiedDate":"2024-01-29"},{"lineNumber":72,"author":{"gitId":"JiaXinEu"},"content":"//","lastModifiedDate":"2024-01-29"},{"lineNumber":73,"author":{"gitId":"JiaXinEu"},"content":"// while (!isExit) {","lastModifiedDate":"2024-01-29"},{"lineNumber":74,"author":{"gitId":"JiaXinEu"},"content":"// input \u003d ui.readCommand();","lastModifiedDate":"2024-01-29"},{"lineNumber":75,"author":{"gitId":"JiaXinEu"},"content":"// ui.showLine();","lastModifiedDate":"2024-01-29"},{"lineNumber":76,"author":{"gitId":"JiaXinEu"},"content":"// try {","lastModifiedDate":"2024-01-29"},{"lineNumber":77,"author":{"gitId":"JiaXinEu"},"content":"// Command c \u003d Parser.parseCommand(input);","lastModifiedDate":"2024-01-29"},{"lineNumber":78,"author":{"gitId":"JiaXinEu"},"content":"// c.execute(list, ui, sto);","lastModifiedDate":"2024-01-29"},{"lineNumber":79,"author":{"gitId":"JiaXinEu"},"content":"// isExit \u003d c.isExit();","lastModifiedDate":"2024-01-29"},{"lineNumber":80,"author":{"gitId":"JiaXinEu"},"content":"// } catch (DukeException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":81,"author":{"gitId":"JiaXinEu"},"content":"// ui.showError(e.getMessage());","lastModifiedDate":"2024-01-29"},{"lineNumber":82,"author":{"gitId":"JiaXinEu"},"content":"// } finally {","lastModifiedDate":"2024-01-29"},{"lineNumber":83,"author":{"gitId":"JiaXinEu"},"content":"// ui.showLine();","lastModifiedDate":"2024-01-29"},{"lineNumber":84,"author":{"gitId":"JiaXinEu"},"content":"// }","lastModifiedDate":"2024-01-29"},{"lineNumber":85,"author":{"gitId":"JiaXinEu"},"content":"// }","lastModifiedDate":"2024-01-29"},{"lineNumber":86,"author":{"gitId":"JiaXinEu"},"content":"// }","lastModifiedDate":"2024-01-29"},{"lineNumber":87,"author":{"gitId":"JiaXinEu"},"content":"//","lastModifiedDate":"2024-01-29"},{"lineNumber":88,"author":{"gitId":"JiaXinEu"},"content":"//// private static InputType getCommandType(String input) {","lastModifiedDate":"2024-01-29"},{"lineNumber":89,"author":{"gitId":"JiaXinEu"},"content":"////","lastModifiedDate":"2024-01-29"},{"lineNumber":90,"author":{"gitId":"JiaXinEu"},"content":"//// if (input.equals(\"list\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":91,"author":{"gitId":"JiaXinEu"},"content":"//// return InputType.LIST;","lastModifiedDate":"2024-01-29"},{"lineNumber":92,"author":{"gitId":"JiaXinEu"},"content":"//// } else if (input.startsWith(\"mark\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":93,"author":{"gitId":"JiaXinEu"},"content":"//// return InputType.MARK;","lastModifiedDate":"2024-01-29"},{"lineNumber":94,"author":{"gitId":"JiaXinEu"},"content":"//// } else if (input.startsWith(\"unmark\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":95,"author":{"gitId":"JiaXinEu"},"content":"//// return InputType.UNMARK;","lastModifiedDate":"2024-01-29"},{"lineNumber":96,"author":{"gitId":"JiaXinEu"},"content":"//// } else if (input.startsWith(\"delete\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":97,"author":{"gitId":"JiaXinEu"},"content":"//// return InputType.DELETE;","lastModifiedDate":"2024-01-29"},{"lineNumber":98,"author":{"gitId":"JiaXinEu"},"content":"//// } else if (input.equals(\"bye\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":99,"author":{"gitId":"JiaXinEu"},"content":"//// return InputType.BYE;","lastModifiedDate":"2024-01-29"},{"lineNumber":100,"author":{"gitId":"JiaXinEu"},"content":"//// } else if (input.startsWith(\"todo\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":101,"author":{"gitId":"JiaXinEu"},"content":"//// return InputType.TODO;","lastModifiedDate":"2024-01-29"},{"lineNumber":102,"author":{"gitId":"JiaXinEu"},"content":"//// } else if (input.startsWith(\"deadline\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":103,"author":{"gitId":"JiaXinEu"},"content":"//// return InputType.DEADLINE;","lastModifiedDate":"2024-01-29"},{"lineNumber":104,"author":{"gitId":"JiaXinEu"},"content":"//// } else if (input.startsWith(\"event\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":105,"author":{"gitId":"JiaXinEu"},"content":"//// return InputType.EVENT;","lastModifiedDate":"2024-01-29"},{"lineNumber":106,"author":{"gitId":"JiaXinEu"},"content":"//// } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":107,"author":{"gitId":"JiaXinEu"},"content":"//// return InputType.UNKNOWN;","lastModifiedDate":"2024-01-29"},{"lineNumber":108,"author":{"gitId":"JiaXinEu"},"content":"//// }","lastModifiedDate":"2024-01-29"},{"lineNumber":109,"author":{"gitId":"JiaXinEu"},"content":"//// }","lastModifiedDate":"2024-01-29"},{"lineNumber":110,"author":{"gitId":"JiaXinEu"},"content":"//","lastModifiedDate":"2024-01-29"},{"lineNumber":111,"author":{"gitId":"JiaXinEu"},"content":"//// private static void print(ArrayList\u003cTask\u003e list) {","lastModifiedDate":"2024-01-29"},{"lineNumber":112,"author":{"gitId":"JiaXinEu"},"content":"//// if (list.isEmpty()) {","lastModifiedDate":"2024-01-29"},{"lineNumber":113,"author":{"gitId":"JiaXinEu"},"content":"//// System.out.println(\"\\t OOPS!!! No task in list ૮ ´• ﻌ ´• ა\");","lastModifiedDate":"2024-01-29"},{"lineNumber":114,"author":{"gitId":"JiaXinEu"},"content":"//// System.out.println(\"\\t You may add task with keywords: todo, deadline, event.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":115,"author":{"gitId":"JiaXinEu"},"content":"//// } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":116,"author":{"gitId":"JiaXinEu"},"content":"//// System.out.println(\"\\t Here are the tasks in your list ૮ ˙Ⱉ˙ ა :\");","lastModifiedDate":"2024-01-29"},{"lineNumber":117,"author":{"gitId":"JiaXinEu"},"content":"//// int count \u003d 1;","lastModifiedDate":"2024-01-29"},{"lineNumber":118,"author":{"gitId":"JiaXinEu"},"content":"//// for (Task t : list) {","lastModifiedDate":"2024-01-29"},{"lineNumber":119,"author":{"gitId":"JiaXinEu"},"content":"//// System.out.println(\"\\t\\t \" + count + \".\" + t.printTask());","lastModifiedDate":"2024-01-29"},{"lineNumber":120,"author":{"gitId":"JiaXinEu"},"content":"//// count++;","lastModifiedDate":"2024-01-29"},{"lineNumber":121,"author":{"gitId":"JiaXinEu"},"content":"//// }","lastModifiedDate":"2024-01-29"},{"lineNumber":122,"author":{"gitId":"JiaXinEu"},"content":"//// }","lastModifiedDate":"2024-01-29"},{"lineNumber":123,"author":{"gitId":"JiaXinEu"},"content":"//// }","lastModifiedDate":"2024-01-29"},{"lineNumber":124,"author":{"gitId":"JiaXinEu"},"content":"//","lastModifiedDate":"2024-01-29"},{"lineNumber":125,"author":{"gitId":"JiaXinEu"},"content":"//// private static void add(Task t, ArrayList\u003cTask\u003e list) {","lastModifiedDate":"2024-01-29"},{"lineNumber":126,"author":{"gitId":"JiaXinEu"},"content":"//// list.add(t);","lastModifiedDate":"2024-01-29"},{"lineNumber":127,"author":{"gitId":"JiaXinEu"},"content":"//// int size \u003d list.size();","lastModifiedDate":"2024-01-29"},{"lineNumber":128,"author":{"gitId":"JiaXinEu"},"content":"//// System.out.println(\"\\t ᨐฅ Got it! I\u0027ve added this task:\\n\\t\\t \" + t.printTask());","lastModifiedDate":"2024-01-29"},{"lineNumber":129,"author":{"gitId":"JiaXinEu"},"content":"//// System.out.println(\"\\t Now you have \" + size + (size \u003e 1 ? \" tasks\" : \" task\") + \" in the list.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":130,"author":{"gitId":"JiaXinEu"},"content":"//// }","lastModifiedDate":"2024-01-29"},{"lineNumber":131,"author":{"gitId":"JiaXinEu"},"content":"//","lastModifiedDate":"2024-01-29"},{"lineNumber":132,"author":{"gitId":"JiaXinEu"},"content":"//// private static void delete(String input, ArrayList\u003cTask\u003e list) {","lastModifiedDate":"2024-01-29"},{"lineNumber":133,"author":{"gitId":"JiaXinEu"},"content":"//// String[] s \u003d input.split(\"\\\\s\");","lastModifiedDate":"2024-01-29"},{"lineNumber":134,"author":{"gitId":"JiaXinEu"},"content":"//// int num \u003d Integer.parseInt(s[1]);","lastModifiedDate":"2024-01-29"},{"lineNumber":135,"author":{"gitId":"JiaXinEu"},"content":"//// if (num \u003c\u003d list.size() \u0026\u0026 num \u003e\u003d 1) {","lastModifiedDate":"2024-01-29"},{"lineNumber":136,"author":{"gitId":"JiaXinEu"},"content":"//// Task t \u003d list.remove(num - 1);","lastModifiedDate":"2024-01-29"},{"lineNumber":137,"author":{"gitId":"JiaXinEu"},"content":"//// System.out.println(\"\\t Noted ૮ ˶ᵔ ᵕ ᵔ˶ ა I\u0027ve removed this task:\");","lastModifiedDate":"2024-01-29"},{"lineNumber":138,"author":{"gitId":"JiaXinEu"},"content":"//// System.out.println(\"\\t\\t \" + t.printTask());","lastModifiedDate":"2024-01-29"},{"lineNumber":139,"author":{"gitId":"JiaXinEu"},"content":"//// System.out.println(\"\\t Now you have \" + list.size() + (list.size() \u003e 1 ? \" tasks\" : \" task\") + \" in the list.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":140,"author":{"gitId":"JiaXinEu"},"content":"//// } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":141,"author":{"gitId":"JiaXinEu"},"content":"//// System.out.println(\"\\t OOPS!!! Task (\" + num + \") not found ૮₍ ˶0_0˶ ₎ა\");","lastModifiedDate":"2024-01-29"},{"lineNumber":142,"author":{"gitId":"JiaXinEu"},"content":"//// print(list);","lastModifiedDate":"2024-01-29"},{"lineNumber":143,"author":{"gitId":"JiaXinEu"},"content":"//// }","lastModifiedDate":"2024-01-29"},{"lineNumber":144,"author":{"gitId":"JiaXinEu"},"content":"//// }","lastModifiedDate":"2024-01-29"},{"lineNumber":145,"author":{"gitId":"JiaXinEu"},"content":"//// private static void mark(String input, boolean done, TaskList list) {","lastModifiedDate":"2024-01-29"},{"lineNumber":146,"author":{"gitId":"JiaXinEu"},"content":"//// String[] s \u003d input.split(\"\\\\s\");","lastModifiedDate":"2024-01-29"},{"lineNumber":147,"author":{"gitId":"JiaXinEu"},"content":"//// int num \u003d Integer.parseInt(s[1]);","lastModifiedDate":"2024-01-29"},{"lineNumber":148,"author":{"gitId":"JiaXinEu"},"content":"//// if (num \u003c\u003d list.getList().size() \u0026\u0026 num \u003e\u003d 1) {","lastModifiedDate":"2024-01-29"},{"lineNumber":149,"author":{"gitId":"JiaXinEu"},"content":"//// Task t \u003d list.getList().get(num - 1);","lastModifiedDate":"2024-01-29"},{"lineNumber":150,"author":{"gitId":"JiaXinEu"},"content":"//// if (!done) {","lastModifiedDate":"2024-01-29"},{"lineNumber":151,"author":{"gitId":"JiaXinEu"},"content":"//// t.undo();","lastModifiedDate":"2024-01-29"},{"lineNumber":152,"author":{"gitId":"JiaXinEu"},"content":"//// System.out.println(\"\\t Ok, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2024-01-29"},{"lineNumber":153,"author":{"gitId":"JiaXinEu"},"content":"//// } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":154,"author":{"gitId":"JiaXinEu"},"content":"//// t.done();","lastModifiedDate":"2024-01-29"},{"lineNumber":155,"author":{"gitId":"JiaXinEu"},"content":"//// System.out.println(\"\\t Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2024-01-29"},{"lineNumber":156,"author":{"gitId":"JiaXinEu"},"content":"//// }","lastModifiedDate":"2024-01-29"},{"lineNumber":157,"author":{"gitId":"JiaXinEu"},"content":"//// System.out.println(\"\\t\\t \" + t.printTask());","lastModifiedDate":"2024-01-29"},{"lineNumber":158,"author":{"gitId":"JiaXinEu"},"content":"//// } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":159,"author":{"gitId":"JiaXinEu"},"content":"//// System.out.println(\"\\t OOPS!!! Task (\" + num + \") not found.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":160,"author":{"gitId":"JiaXinEu"},"content":"//// list.print();","lastModifiedDate":"2024-01-29"},{"lineNumber":161,"author":{"gitId":"JiaXinEu"},"content":"//// }","lastModifiedDate":"2024-01-29"},{"lineNumber":162,"author":{"gitId":"JiaXinEu"},"content":"//// }","lastModifiedDate":"2024-01-29"},{"lineNumber":163,"author":{"gitId":"JiaXinEu"},"content":"//","lastModifiedDate":"2024-01-29"},{"lineNumber":164,"author":{"gitId":"JiaXinEu"},"content":"//// private static void writeToFile(ArrayList\u003cTask\u003e list) throws IOException {","lastModifiedDate":"2024-01-29"},{"lineNumber":165,"author":{"gitId":"JiaXinEu"},"content":"//// File f \u003d new File(\"./data/Duke.txt\");","lastModifiedDate":"2024-01-29"},{"lineNumber":166,"author":{"gitId":"JiaXinEu"},"content":"//// File parent \u003d new File(\"./data\");","lastModifiedDate":"2024-01-29"},{"lineNumber":167,"author":{"gitId":"JiaXinEu"},"content":"//// if (!parent.exists()) {","lastModifiedDate":"2024-01-29"},{"lineNumber":168,"author":{"gitId":"JiaXinEu"},"content":"//// parent.mkdirs();","lastModifiedDate":"2024-01-29"},{"lineNumber":169,"author":{"gitId":"JiaXinEu"},"content":"//// }","lastModifiedDate":"2024-01-29"},{"lineNumber":170,"author":{"gitId":"JiaXinEu"},"content":"//// FileWriter fw \u003d new FileWriter(f);","lastModifiedDate":"2024-01-29"},{"lineNumber":171,"author":{"gitId":"JiaXinEu"},"content":"//// String data \u003d write(list);","lastModifiedDate":"2024-01-29"},{"lineNumber":172,"author":{"gitId":"JiaXinEu"},"content":"//// fw.write(data);","lastModifiedDate":"2024-01-29"},{"lineNumber":173,"author":{"gitId":"JiaXinEu"},"content":"//// fw.close();","lastModifiedDate":"2024-01-29"},{"lineNumber":174,"author":{"gitId":"JiaXinEu"},"content":"//// }","lastModifiedDate":"2024-01-29"},{"lineNumber":175,"author":{"gitId":"JiaXinEu"},"content":"////","lastModifiedDate":"2024-01-29"},{"lineNumber":176,"author":{"gitId":"JiaXinEu"},"content":"//// private static String write(ArrayList\u003cTask\u003e list) {","lastModifiedDate":"2024-01-29"},{"lineNumber":177,"author":{"gitId":"JiaXinEu"},"content":"//// StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2024-01-29"},{"lineNumber":178,"author":{"gitId":"JiaXinEu"},"content":"//// for (int i \u003d 0; i \u003c list.size(); i++) {","lastModifiedDate":"2024-01-29"},{"lineNumber":179,"author":{"gitId":"JiaXinEu"},"content":"//// sb.append(list.get(i).toString());","lastModifiedDate":"2024-01-29"},{"lineNumber":180,"author":{"gitId":"JiaXinEu"},"content":"//// if (i \u003c list.size() - 1) {","lastModifiedDate":"2024-01-29"},{"lineNumber":181,"author":{"gitId":"JiaXinEu"},"content":"//// sb.append(\"\\n\");","lastModifiedDate":"2024-01-29"},{"lineNumber":182,"author":{"gitId":"JiaXinEu"},"content":"//// }","lastModifiedDate":"2024-01-29"},{"lineNumber":183,"author":{"gitId":"JiaXinEu"},"content":"//// }","lastModifiedDate":"2024-01-29"},{"lineNumber":184,"author":{"gitId":"JiaXinEu"},"content":"//// return sb.toString();","lastModifiedDate":"2024-01-29"},{"lineNumber":185,"author":{"gitId":"JiaXinEu"},"content":"//// }","lastModifiedDate":"2024-01-29"},{"lineNumber":186,"author":{"gitId":"JiaXinEu"},"content":"////","lastModifiedDate":"2024-01-29"},{"lineNumber":187,"author":{"gitId":"JiaXinEu"},"content":"//// private static ArrayList\u003cTask\u003e readFromFile() throws FileNotFoundException {","lastModifiedDate":"2024-01-29"},{"lineNumber":188,"author":{"gitId":"JiaXinEu"},"content":"//// ArrayList\u003cTask\u003e list \u003d new ArrayList\u003cTask\u003e();","lastModifiedDate":"2024-01-29"},{"lineNumber":189,"author":{"gitId":"JiaXinEu"},"content":"//// File f \u003d new File(\"./data/Duke.txt\");","lastModifiedDate":"2024-01-29"},{"lineNumber":190,"author":{"gitId":"JiaXinEu"},"content":"//// Scanner s \u003d new Scanner(f);","lastModifiedDate":"2024-01-29"},{"lineNumber":191,"author":{"gitId":"JiaXinEu"},"content":"//// while (s.hasNext()) {","lastModifiedDate":"2024-01-29"},{"lineNumber":192,"author":{"gitId":"JiaXinEu"},"content":"//// list.add(read(s.nextLine()));","lastModifiedDate":"2024-01-29"},{"lineNumber":193,"author":{"gitId":"JiaXinEu"},"content":"//// }","lastModifiedDate":"2024-01-29"},{"lineNumber":194,"author":{"gitId":"JiaXinEu"},"content":"//// return list;","lastModifiedDate":"2024-01-29"},{"lineNumber":195,"author":{"gitId":"JiaXinEu"},"content":"//// }","lastModifiedDate":"2024-01-29"},{"lineNumber":196,"author":{"gitId":"JiaXinEu"},"content":"////","lastModifiedDate":"2024-01-29"},{"lineNumber":197,"author":{"gitId":"JiaXinEu"},"content":"//// private static Task read(String s) {","lastModifiedDate":"2024-01-29"},{"lineNumber":198,"author":{"gitId":"JiaXinEu"},"content":"//// String[] cols \u003d s.split(\" \\\\| \");","lastModifiedDate":"2024-01-29"},{"lineNumber":199,"author":{"gitId":"JiaXinEu"},"content":"//// Task t \u003d null;","lastModifiedDate":"2024-01-29"},{"lineNumber":200,"author":{"gitId":"JiaXinEu"},"content":"//// if (cols.length \u003d\u003d 3) {","lastModifiedDate":"2024-01-29"},{"lineNumber":201,"author":{"gitId":"JiaXinEu"},"content":"//// t \u003d new Todo(cols[2]);","lastModifiedDate":"2024-01-29"},{"lineNumber":202,"author":{"gitId":"JiaXinEu"},"content":"////","lastModifiedDate":"2024-01-29"},{"lineNumber":203,"author":{"gitId":"JiaXinEu"},"content":"//// } else if (cols.length \u003d\u003d 4) {","lastModifiedDate":"2024-01-29"},{"lineNumber":204,"author":{"gitId":"JiaXinEu"},"content":"//// t \u003d new Deadline(cols[2], cols[3]);","lastModifiedDate":"2024-01-29"},{"lineNumber":205,"author":{"gitId":"JiaXinEu"},"content":"//// } else if (cols.length \u003d\u003d 5) {","lastModifiedDate":"2024-01-29"},{"lineNumber":206,"author":{"gitId":"JiaXinEu"},"content":"//// t \u003d new Event(cols[2], cols[3], cols[4]);","lastModifiedDate":"2024-01-29"},{"lineNumber":207,"author":{"gitId":"JiaXinEu"},"content":"//// }","lastModifiedDate":"2024-01-29"},{"lineNumber":208,"author":{"gitId":"JiaXinEu"},"content":"//// if (cols[1].equals(\"1\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":209,"author":{"gitId":"JiaXinEu"},"content":"//// t.done();","lastModifiedDate":"2024-01-29"},{"lineNumber":210,"author":{"gitId":"JiaXinEu"},"content":"//// } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":211,"author":{"gitId":"JiaXinEu"},"content":"//// t.undo();","lastModifiedDate":"2024-01-29"},{"lineNumber":212,"author":{"gitId":"JiaXinEu"},"content":"//// }","lastModifiedDate":"2024-01-29"},{"lineNumber":213,"author":{"gitId":"JiaXinEu"},"content":"////","lastModifiedDate":"2024-01-29"},{"lineNumber":214,"author":{"gitId":"JiaXinEu"},"content":"//// return t;","lastModifiedDate":"2024-01-29"},{"lineNumber":215,"author":{"gitId":"JiaXinEu"},"content":"//// }","lastModifiedDate":"2024-01-29"},{"lineNumber":216,"author":{"gitId":"JiaXinEu"},"content":"//}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"JiaXinEu":212,"-":4}},{"path":"src/main/java/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"JiaXinEu"},"content":"public class DukeException extends Exception {","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"JiaXinEu"},"content":" public DukeException(String message) {","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"JiaXinEu"},"content":" super(message);","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"JiaXinEu"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"JiaXinEu":5}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"JiaXinEu"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"JiaXinEu"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"JiaXinEu"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"JiaXinEu"},"content":"public class Event extends Task{","lastModifiedDate":"2024-01-21"},{"lineNumber":6,"author":{"gitId":"JiaXinEu"},"content":" private LocalDateTime start;","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"JiaXinEu"},"content":" private LocalDateTime end;","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":9,"author":{"gitId":"JiaXinEu"},"content":" public Event(String task, String start, String end) {","lastModifiedDate":"2024-01-21"},{"lineNumber":10,"author":{"gitId":"JiaXinEu"},"content":" super(task);","lastModifiedDate":"2024-01-21"},{"lineNumber":11,"author":{"gitId":"JiaXinEu"},"content":" this.start \u003d setDate(start);","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"JiaXinEu"},"content":" this.end \u003d setDate(end);","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":14,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":15,"author":{"gitId":"JiaXinEu"},"content":" public LocalDateTime setDate(String s) throws DateTimeParseException {","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"JiaXinEu"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"dd-MM-yyyy HH:mm\");","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"JiaXinEu"},"content":" LocalDateTime date \u003d null;","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"JiaXinEu"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"JiaXinEu"},"content":" date \u003d LocalDateTime.parse(s, formatter);","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"JiaXinEu"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"JiaXinEu"},"content":" throw new DateTimeParseException(\"Invalid start/end date. Specify date in format \u0027dd-MM-yyyy HH:mm\u0027.\", e.getParsedString(), e.getErrorIndex());","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"JiaXinEu"},"content":" return date;","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"JiaXinEu"},"content":" @Override","lastModifiedDate":"2024-01-21"},{"lineNumber":26,"author":{"gitId":"JiaXinEu"},"content":" public String printTask() {","lastModifiedDate":"2024-01-21"},{"lineNumber":27,"author":{"gitId":"JiaXinEu"},"content":" return \"[E]\" + super.printTask() + \" (from: \" + printDate(this.start) + \" to: \" + printDate(this.end) + \")\";","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":29,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":30,"author":{"gitId":"JiaXinEu"},"content":" @Override","lastModifiedDate":"2024-01-26"},{"lineNumber":31,"author":{"gitId":"JiaXinEu"},"content":" public String toString() {","lastModifiedDate":"2024-01-26"},{"lineNumber":32,"author":{"gitId":"JiaXinEu"},"content":" return String.format(\"E | %s | %s | %s\", super.toString(), this.start.format(DateTimeFormatter.ofPattern(\"dd-MM-yyyy HH:mm\")), this.end.format(DateTimeFormatter.ofPattern(\"dd-MM-yyyy HH:mm\")));","lastModifiedDate":"2024-01-28"},{"lineNumber":33,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":34,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":35,"author":{"gitId":"JiaXinEu"},"content":" public String printDate(LocalDateTime date) {","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"JiaXinEu"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"MMM dd yyyy, HH:mm\");","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"JiaXinEu"},"content":" return date.format(formatter);","lastModifiedDate":"2024-01-28"},{"lineNumber":38,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":39,"author":{"gitId":"JiaXinEu"},"content":"}","lastModifiedDate":"2024-01-21"}],"authorContributionMap":{"JiaXinEu":39}},{"path":"src/main/java/EventCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"JiaXinEu"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"JiaXinEu"},"content":"public class EventCommand implements Command {","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"JiaXinEu"},"content":" private String input;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"JiaXinEu"},"content":" public EventCommand(String input) {","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"JiaXinEu"},"content":" this.input \u003d input;","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"JiaXinEu"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"JiaXinEu"},"content":" public void execute(TaskList list, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"JiaXinEu"},"content":" String[] task \u003d input.split(\"/from\");","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"JiaXinEu"},"content":" String[] time \u003d task[1].split(\"/to\");","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"JiaXinEu"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"JiaXinEu"},"content":" Task t \u003d new Event(task[0].substring(6).trim(), time[0].trim(), time[1].trim());","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"JiaXinEu"},"content":" list.add(t);","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"JiaXinEu"},"content":" ui.showAdded(t, list);","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"JiaXinEu"},"content":" storage.writeToFile(list);","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"JiaXinEu"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"JiaXinEu"},"content":" throw new DukeException(e.getMessage());","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"JiaXinEu"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"JiaXinEu"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"JiaXinEu"},"content":" return false;","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"JiaXinEu"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"JiaXinEu":30}},{"path":"src/main/java/ExitCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"JiaXinEu"},"content":"public class ExitCommand implements Command {","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"JiaXinEu"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"JiaXinEu"},"content":" public void execute(TaskList list, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"JiaXinEu"},"content":" ui.showGoodbye();","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"JiaXinEu"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"JiaXinEu"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"JiaXinEu"},"content":" return true;","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"JiaXinEu"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"JiaXinEu":11}},{"path":"src/main/java/ListCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"JiaXinEu"},"content":"public class ListCommand implements Command {","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"JiaXinEu"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"JiaXinEu"},"content":" public void execute(TaskList list, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"JiaXinEu"},"content":" if (list.isEmpty()) {","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"JiaXinEu"},"content":" throw new DukeException(\"No task in list.\\n\" +","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"JiaXinEu"},"content":" \"\\t You may add task with keywords: todo, deadline, event.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"JiaXinEu"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"JiaXinEu"},"content":" ui.showTasks(list);","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"JiaXinEu"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"JiaXinEu"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"JiaXinEu"},"content":" return false;","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"JiaXinEu"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"JiaXinEu":16}},{"path":"src/main/java/MarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"JiaXinEu"},"content":"public class MarkCommand implements Command {","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"JiaXinEu"},"content":" private String input;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"JiaXinEu"},"content":" private boolean toMark;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"JiaXinEu"},"content":" public MarkCommand(String input, boolean toMark) {","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"JiaXinEu"},"content":" this.input \u003d input;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"JiaXinEu"},"content":" this.toMark \u003d toMark;","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"JiaXinEu"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"JiaXinEu"},"content":" public void execute(TaskList list, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"JiaXinEu"},"content":" String[] s \u003d input.split(\"\\\\s\");","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"JiaXinEu"},"content":" int num \u003d Integer.parseInt(s[1]);","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"JiaXinEu"},"content":" if (num \u003c\u003d list.getSize() \u0026\u0026 num \u003e\u003d 1) {","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"JiaXinEu"},"content":" Task t \u003d list.getTask(num - 1);","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"JiaXinEu"},"content":" if (this.toMark) {","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"JiaXinEu"},"content":" t.done();","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"JiaXinEu"},"content":" ui.showMarked(t);","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"JiaXinEu"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"JiaXinEu"},"content":" t.undo();","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"JiaXinEu"},"content":" ui.showUnmarked(t);","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"JiaXinEu"},"content":" storage.writeToFile(list);","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"JiaXinEu"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"JiaXinEu"},"content":" throw new DukeException(\"Task (\" + num + \") not found.\\n\" + list.print());","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"JiaXinEu"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"JiaXinEu"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"JiaXinEu"},"content":" return false;","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"JiaXinEu"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"JiaXinEu":34}},{"path":"src/main/java/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"JiaXinEu"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"JiaXinEu"},"content":"public class Parser {","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"JiaXinEu"},"content":" public enum InputType {","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"JiaXinEu"},"content":" LIST,","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"JiaXinEu"},"content":" MARK,","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"JiaXinEu"},"content":" UNMARK,","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"JiaXinEu"},"content":" DELETE,","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"JiaXinEu"},"content":" BYE,","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"JiaXinEu"},"content":" TODO,","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"JiaXinEu"},"content":" DEADLINE,","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"JiaXinEu"},"content":" EVENT,","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"JiaXinEu"},"content":" UNKNOWN","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"JiaXinEu"},"content":" public static InputType getCommandType(String input) {","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"JiaXinEu"},"content":" if (input.equals(\"list\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"JiaXinEu"},"content":" return InputType.LIST;","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"JiaXinEu"},"content":" } else if (input.startsWith(\"mark\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"JiaXinEu"},"content":" return InputType.MARK;","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"JiaXinEu"},"content":" } else if (input.startsWith(\"unmark\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"JiaXinEu"},"content":" return InputType.UNMARK;","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"JiaXinEu"},"content":" } else if (input.startsWith(\"delete\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"JiaXinEu"},"content":" return InputType.DELETE;","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"JiaXinEu"},"content":" } else if (input.equals(\"bye\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"JiaXinEu"},"content":" return InputType.BYE;","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"JiaXinEu"},"content":" } else if (input.startsWith(\"todo\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"JiaXinEu"},"content":" return InputType.TODO;","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"JiaXinEu"},"content":" } else if (input.startsWith(\"deadline\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"JiaXinEu"},"content":" return InputType.DEADLINE;","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"JiaXinEu"},"content":" } else if (input.startsWith(\"event\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"JiaXinEu"},"content":" return InputType.EVENT;","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"JiaXinEu"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"JiaXinEu"},"content":" return InputType.UNKNOWN;","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"JiaXinEu"},"content":" public static boolean matchPattern(String input, String pattern) {","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"JiaXinEu"},"content":" Pattern regexPattern \u003d Pattern.compile(pattern);","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"JiaXinEu"},"content":" return regexPattern.matcher(input).matches();","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"JiaXinEu"},"content":" public static Command parseCommand(String input) throws DukeException{","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"JiaXinEu"},"content":" String lowerInput \u003d input.trim().toLowerCase();","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"JiaXinEu"},"content":" InputType commandType \u003d getCommandType(lowerInput);","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"JiaXinEu"},"content":" switch (commandType) {","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"JiaXinEu"},"content":" case LIST:","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"JiaXinEu"},"content":" return new ListCommand();","lastModifiedDate":"2024-01-29"},{"lineNumber":50,"author":{"gitId":"JiaXinEu"},"content":" case MARK:","lastModifiedDate":"2024-01-29"},{"lineNumber":51,"author":{"gitId":"JiaXinEu"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"JiaXinEu"},"content":" return parseMarkCommand(input, true);","lastModifiedDate":"2024-01-29"},{"lineNumber":53,"author":{"gitId":"JiaXinEu"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":54,"author":{"gitId":"JiaXinEu"},"content":" throw e;","lastModifiedDate":"2024-01-29"},{"lineNumber":55,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":56,"author":{"gitId":"JiaXinEu"},"content":" case UNMARK:","lastModifiedDate":"2024-01-29"},{"lineNumber":57,"author":{"gitId":"JiaXinEu"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":58,"author":{"gitId":"JiaXinEu"},"content":" return parseMarkCommand(input, false);","lastModifiedDate":"2024-01-29"},{"lineNumber":59,"author":{"gitId":"JiaXinEu"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":60,"author":{"gitId":"JiaXinEu"},"content":" throw e;","lastModifiedDate":"2024-01-29"},{"lineNumber":61,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":62,"author":{"gitId":"JiaXinEu"},"content":" case DELETE:","lastModifiedDate":"2024-01-29"},{"lineNumber":63,"author":{"gitId":"JiaXinEu"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":64,"author":{"gitId":"JiaXinEu"},"content":" return parseDeleteCommand(input);","lastModifiedDate":"2024-01-29"},{"lineNumber":65,"author":{"gitId":"JiaXinEu"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":66,"author":{"gitId":"JiaXinEu"},"content":" throw e;","lastModifiedDate":"2024-01-29"},{"lineNumber":67,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":68,"author":{"gitId":"JiaXinEu"},"content":" case TODO:","lastModifiedDate":"2024-01-29"},{"lineNumber":69,"author":{"gitId":"JiaXinEu"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":70,"author":{"gitId":"JiaXinEu"},"content":" return parseTodoCommand(input);","lastModifiedDate":"2024-01-29"},{"lineNumber":71,"author":{"gitId":"JiaXinEu"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":72,"author":{"gitId":"JiaXinEu"},"content":" throw e;","lastModifiedDate":"2024-01-29"},{"lineNumber":73,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":74,"author":{"gitId":"JiaXinEu"},"content":" case DEADLINE:","lastModifiedDate":"2024-01-29"},{"lineNumber":75,"author":{"gitId":"JiaXinEu"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":76,"author":{"gitId":"JiaXinEu"},"content":" return parseDeadlineCommand(input);","lastModifiedDate":"2024-01-29"},{"lineNumber":77,"author":{"gitId":"JiaXinEu"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":78,"author":{"gitId":"JiaXinEu"},"content":" throw e;","lastModifiedDate":"2024-01-29"},{"lineNumber":79,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":80,"author":{"gitId":"JiaXinEu"},"content":" case EVENT:","lastModifiedDate":"2024-01-29"},{"lineNumber":81,"author":{"gitId":"JiaXinEu"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":82,"author":{"gitId":"JiaXinEu"},"content":" return parseEventCommand(input);","lastModifiedDate":"2024-01-29"},{"lineNumber":83,"author":{"gitId":"JiaXinEu"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":84,"author":{"gitId":"JiaXinEu"},"content":" throw e;","lastModifiedDate":"2024-01-29"},{"lineNumber":85,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":86,"author":{"gitId":"JiaXinEu"},"content":" case BYE:","lastModifiedDate":"2024-01-29"},{"lineNumber":87,"author":{"gitId":"JiaXinEu"},"content":" return new ExitCommand();","lastModifiedDate":"2024-01-29"},{"lineNumber":88,"author":{"gitId":"JiaXinEu"},"content":" case UNKNOWN:","lastModifiedDate":"2024-01-29"},{"lineNumber":89,"author":{"gitId":"JiaXinEu"},"content":" return new UnknownCommand();","lastModifiedDate":"2024-01-29"},{"lineNumber":90,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":91,"author":{"gitId":"JiaXinEu"},"content":" return null;","lastModifiedDate":"2024-01-29"},{"lineNumber":92,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":93,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":94,"author":{"gitId":"JiaXinEu"},"content":" private static Command parseMarkCommand(String input, boolean toMark) throws DukeException {","lastModifiedDate":"2024-01-29"},{"lineNumber":95,"author":{"gitId":"JiaXinEu"},"content":" String lowerInput \u003d input.trim().toLowerCase();","lastModifiedDate":"2024-01-29"},{"lineNumber":96,"author":{"gitId":"JiaXinEu"},"content":" if (matchPattern(lowerInput, \"mark\\\\s\\\\d+|unmark\\\\s\\\\d+\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":97,"author":{"gitId":"JiaXinEu"},"content":" return new MarkCommand(input, toMark);","lastModifiedDate":"2024-01-29"},{"lineNumber":98,"author":{"gitId":"JiaXinEu"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":99,"author":{"gitId":"JiaXinEu"},"content":" if (toMark) {","lastModifiedDate":"2024-01-29"},{"lineNumber":100,"author":{"gitId":"JiaXinEu"},"content":" throw new DukeException(\"Your mark instruction is unclear.\\n\" +","lastModifiedDate":"2024-01-29"},{"lineNumber":101,"author":{"gitId":"JiaXinEu"},"content":" \"\\t Try \u0027mark [task number to mark as done]\u0027.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":102,"author":{"gitId":"JiaXinEu"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":103,"author":{"gitId":"JiaXinEu"},"content":" throw new DukeException(\"Your unmark instruction is unclear.\\n\" +","lastModifiedDate":"2024-01-29"},{"lineNumber":104,"author":{"gitId":"JiaXinEu"},"content":" \"\\t Try \u0027unmark [task number to mark as not done]\u0027.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":105,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":106,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":107,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":108,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":109,"author":{"gitId":"JiaXinEu"},"content":" private static Command parseDeleteCommand(String input) throws DukeException {","lastModifiedDate":"2024-01-29"},{"lineNumber":110,"author":{"gitId":"JiaXinEu"},"content":" String lowerInput \u003d input.trim().toLowerCase();","lastModifiedDate":"2024-01-29"},{"lineNumber":111,"author":{"gitId":"JiaXinEu"},"content":" if (Parser.matchPattern(lowerInput, \"delete\\\\s\\\\d+\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":112,"author":{"gitId":"JiaXinEu"},"content":" return new DeleteCommand(input);","lastModifiedDate":"2024-01-29"},{"lineNumber":113,"author":{"gitId":"JiaXinEu"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":114,"author":{"gitId":"JiaXinEu"},"content":" throw new DukeException(\"Your delete instruction is unclear.\\n\" +","lastModifiedDate":"2024-01-29"},{"lineNumber":115,"author":{"gitId":"JiaXinEu"},"content":" \"\\t Try \u0027delete [task number to be deleted]\u0027.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":116,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":117,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":118,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":119,"author":{"gitId":"JiaXinEu"},"content":" private static Command parseTodoCommand(String input) throws DukeException {","lastModifiedDate":"2024-01-29"},{"lineNumber":120,"author":{"gitId":"JiaXinEu"},"content":" String lowerInput \u003d input.trim().toLowerCase();","lastModifiedDate":"2024-01-29"},{"lineNumber":121,"author":{"gitId":"JiaXinEu"},"content":" if (Parser.matchPattern(lowerInput, \"todo\\\\s.+\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":122,"author":{"gitId":"JiaXinEu"},"content":" return new TodoCommand(input);","lastModifiedDate":"2024-01-29"},{"lineNumber":123,"author":{"gitId":"JiaXinEu"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":124,"author":{"gitId":"JiaXinEu"},"content":" throw new DukeException(\"The description of a todo cannot be empty.\\n\" +","lastModifiedDate":"2024-01-29"},{"lineNumber":125,"author":{"gitId":"JiaXinEu"},"content":" \"\\t Try \u0027todo [task description]\u0027.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":126,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":127,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":128,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":129,"author":{"gitId":"JiaXinEu"},"content":" private static Command parseDeadlineCommand(String input) throws DukeException {","lastModifiedDate":"2024-01-29"},{"lineNumber":130,"author":{"gitId":"JiaXinEu"},"content":" String lowerInput \u003d input.trim().toLowerCase();","lastModifiedDate":"2024-01-29"},{"lineNumber":131,"author":{"gitId":"JiaXinEu"},"content":" if (Parser.matchPattern(lowerInput, \"deadline\\\\s.+\\\\s/by\\\\s.+\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":132,"author":{"gitId":"JiaXinEu"},"content":" return new DeadlineCommand(input);","lastModifiedDate":"2024-01-29"},{"lineNumber":133,"author":{"gitId":"JiaXinEu"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":134,"author":{"gitId":"JiaXinEu"},"content":" throw new DukeException(\"The description and due of a deadline cannot be empty.\\n\" +","lastModifiedDate":"2024-01-29"},{"lineNumber":135,"author":{"gitId":"JiaXinEu"},"content":" \"\\t Try \u0027deadline [task description] /by [dd-MM-yyyy HH:mm]\u0027.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":136,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":137,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":138,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":139,"author":{"gitId":"JiaXinEu"},"content":" private static Command parseEventCommand(String input) throws DukeException {","lastModifiedDate":"2024-01-29"},{"lineNumber":140,"author":{"gitId":"JiaXinEu"},"content":" String lowerInput \u003d input.trim().toLowerCase();","lastModifiedDate":"2024-01-29"},{"lineNumber":141,"author":{"gitId":"JiaXinEu"},"content":" if (Parser.matchPattern(lowerInput, \"event\\\\s.+\\\\s/from\\\\s.+\\\\s/to\\\\s.+\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":142,"author":{"gitId":"JiaXinEu"},"content":" return new EventCommand(input);","lastModifiedDate":"2024-01-29"},{"lineNumber":143,"author":{"gitId":"JiaXinEu"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":144,"author":{"gitId":"JiaXinEu"},"content":" throw new DukeException(\"The description, start and end time of an event cannot be empty.\\n\"","lastModifiedDate":"2024-01-29"},{"lineNumber":145,"author":{"gitId":"JiaXinEu"},"content":" + \"\\t Try \u0027event [task description] /from [dd-MM-yyyy HH:mm] /to [dd-MM-yyyy HH:mm]\u0027.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":146,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":147,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":148,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":149,"author":{"gitId":"JiaXinEu"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"JiaXinEu":149}},{"path":"src/main/java/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"JiaXinEu"},"content":"import java.io.File;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"JiaXinEu"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"JiaXinEu"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"JiaXinEu"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"JiaXinEu"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"JiaXinEu"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"JiaXinEu"},"content":"public class Storage {","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"JiaXinEu"},"content":" private File f;","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"JiaXinEu"},"content":" private FileWriter fw;","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"JiaXinEu"},"content":" private Scanner s;","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"JiaXinEu"},"content":" public Storage(String file, String parent) {","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"JiaXinEu"},"content":" this.f \u003d new File(parent +\"/\" + file);","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"JiaXinEu"},"content":" File parentDir \u003d new File(parent);","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"JiaXinEu"},"content":" if (!parentDir.exists()) {","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"JiaXinEu"},"content":" parentDir.mkdirs();","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"JiaXinEu"},"content":" public void writeToFile(TaskList list) {","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"JiaXinEu"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"JiaXinEu"},"content":" this.fw \u003d new FileWriter(f);","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"JiaXinEu"},"content":" String data \u003d write(list);","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"JiaXinEu"},"content":" this.fw.write(data);","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"JiaXinEu"},"content":" this.fw.close();","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"JiaXinEu"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"JiaXinEu"},"content":" e.printStackTrace();","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"JiaXinEu"},"content":" private String write(TaskList taskList) {","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"JiaXinEu"},"content":" ArrayList\u003cTask\u003e list \u003d taskList.getList();","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"JiaXinEu"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"JiaXinEu"},"content":" for (int i \u003d 0; i \u003c list.size(); i++) {","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"JiaXinEu"},"content":" sb.append(list.get(i).toString());","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"JiaXinEu"},"content":" if (i \u003c list.size() - 1) {","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"JiaXinEu"},"content":" sb.append(\"\\n\");","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"JiaXinEu"},"content":" return sb.toString();","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"JiaXinEu"},"content":" public ArrayList\u003cTask\u003e readFromFile() throws DukeException{","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"JiaXinEu"},"content":" ArrayList\u003cTask\u003e list \u003d new ArrayList\u003cTask\u003e();","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"JiaXinEu"},"content":" if (f.exists()) {","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"JiaXinEu"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"JiaXinEu"},"content":" this.s \u003d new Scanner(this.f);","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"JiaXinEu"},"content":" while (this.s.hasNext()) {","lastModifiedDate":"2024-01-29"},{"lineNumber":50,"author":{"gitId":"JiaXinEu"},"content":" list.add(read(this.s.nextLine()));","lastModifiedDate":"2024-01-29"},{"lineNumber":51,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"JiaXinEu"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":53,"author":{"gitId":"JiaXinEu"},"content":" throw new DukeException(e.getMessage());","lastModifiedDate":"2024-01-29"},{"lineNumber":54,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":55,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":56,"author":{"gitId":"JiaXinEu"},"content":" return list;","lastModifiedDate":"2024-01-29"},{"lineNumber":57,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":58,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":59,"author":{"gitId":"JiaXinEu"},"content":" private Task read(String s) {","lastModifiedDate":"2024-01-29"},{"lineNumber":60,"author":{"gitId":"JiaXinEu"},"content":" String[] cols \u003d s.split(\" \\\\| \");","lastModifiedDate":"2024-01-29"},{"lineNumber":61,"author":{"gitId":"JiaXinEu"},"content":" Task t \u003d null;","lastModifiedDate":"2024-01-29"},{"lineNumber":62,"author":{"gitId":"JiaXinEu"},"content":" if (cols.length \u003d\u003d 3) {","lastModifiedDate":"2024-01-29"},{"lineNumber":63,"author":{"gitId":"JiaXinEu"},"content":" t \u003d new Todo(cols[2]);","lastModifiedDate":"2024-01-29"},{"lineNumber":64,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":65,"author":{"gitId":"JiaXinEu"},"content":" } else if (cols.length \u003d\u003d 4) {","lastModifiedDate":"2024-01-29"},{"lineNumber":66,"author":{"gitId":"JiaXinEu"},"content":" t \u003d new Deadline(cols[2], cols[3]);","lastModifiedDate":"2024-01-29"},{"lineNumber":67,"author":{"gitId":"JiaXinEu"},"content":" } else if (cols.length \u003d\u003d 5) {","lastModifiedDate":"2024-01-29"},{"lineNumber":68,"author":{"gitId":"JiaXinEu"},"content":" t \u003d new Event(cols[2], cols[3], cols[4]);","lastModifiedDate":"2024-01-29"},{"lineNumber":69,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":70,"author":{"gitId":"JiaXinEu"},"content":" if (cols[1].equals(\"1\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":71,"author":{"gitId":"JiaXinEu"},"content":" t.done();","lastModifiedDate":"2024-01-29"},{"lineNumber":72,"author":{"gitId":"JiaXinEu"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":73,"author":{"gitId":"JiaXinEu"},"content":" t.undo();","lastModifiedDate":"2024-01-29"},{"lineNumber":74,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":75,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":76,"author":{"gitId":"JiaXinEu"},"content":" return t;","lastModifiedDate":"2024-01-29"},{"lineNumber":77,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":78,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":79,"author":{"gitId":"JiaXinEu"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"JiaXinEu":79}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"JiaXinEu"},"content":"public abstract class Task {","lastModifiedDate":"2024-01-21"},{"lineNumber":2,"author":{"gitId":"JiaXinEu"},"content":" private String task;","lastModifiedDate":"2024-01-21"},{"lineNumber":3,"author":{"gitId":"JiaXinEu"},"content":" private boolean isDone;","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":5,"author":{"gitId":"JiaXinEu"},"content":" public Task(String task) {","lastModifiedDate":"2024-01-21"},{"lineNumber":6,"author":{"gitId":"JiaXinEu"},"content":" this.task \u003d task;","lastModifiedDate":"2024-01-21"},{"lineNumber":7,"author":{"gitId":"JiaXinEu"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":9,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":10,"author":{"gitId":"JiaXinEu"},"content":" public String printTask() {","lastModifiedDate":"2024-01-21"},{"lineNumber":11,"author":{"gitId":"JiaXinEu"},"content":" return String.format(\"[\" + (this.isDone ? \"X\" : \" \") + \"] \" + this.task);","lastModifiedDate":"2024-01-26"},{"lineNumber":12,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":13,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":14,"author":{"gitId":"JiaXinEu"},"content":" public void done() {","lastModifiedDate":"2024-01-21"},{"lineNumber":15,"author":{"gitId":"JiaXinEu"},"content":" this.isDone \u003d true;","lastModifiedDate":"2024-01-26"},{"lineNumber":16,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":17,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":18,"author":{"gitId":"JiaXinEu"},"content":" public void undo() {","lastModifiedDate":"2024-01-21"},{"lineNumber":19,"author":{"gitId":"JiaXinEu"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-26"},{"lineNumber":20,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":21,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":22,"author":{"gitId":"JiaXinEu"},"content":" @Override","lastModifiedDate":"2024-01-26"},{"lineNumber":23,"author":{"gitId":"JiaXinEu"},"content":" public String toString() {","lastModifiedDate":"2024-01-26"},{"lineNumber":24,"author":{"gitId":"JiaXinEu"},"content":" return String.format(\"%d | %s\", (this.isDone ? 1 : 0), this.task);","lastModifiedDate":"2024-01-26"},{"lineNumber":25,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":26,"author":{"gitId":"JiaXinEu"},"content":"}","lastModifiedDate":"2024-01-21"}],"authorContributionMap":{"JiaXinEu":26}},{"path":"src/main/java/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"JiaXinEu"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"JiaXinEu"},"content":"public class TaskList {","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"JiaXinEu"},"content":" private ArrayList\u003cTask\u003e list;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"JiaXinEu"},"content":" public TaskList(ArrayList\u003cTask\u003e list) {","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"JiaXinEu"},"content":" this.list \u003d list;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"JiaXinEu"},"content":" public TaskList() {","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"JiaXinEu"},"content":" this.list \u003d new ArrayList\u003cTask\u003e();","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"JiaXinEu"},"content":" public void add(Task t) {","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"JiaXinEu"},"content":" this.list.add(t);","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"JiaXinEu"},"content":" public int getSize() {","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"JiaXinEu"},"content":" return this.list.size();","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"JiaXinEu"},"content":" public boolean isEmpty() {","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"JiaXinEu"},"content":" return this.list.isEmpty();","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"JiaXinEu"},"content":" public Task delete(int num) {","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"JiaXinEu"},"content":" return this.list.remove(num);","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"JiaXinEu"},"content":" public String print() {","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"JiaXinEu"},"content":" int count \u003d 1;","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"JiaXinEu"},"content":" StringBuilder sb \u003d new StringBuilder(\"\\t Here are the tasks in your list:\\n\");","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"JiaXinEu"},"content":" for (int i \u003d 0; i \u003c list.size(); i++) {","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"JiaXinEu"},"content":" sb.append(\"\\t\\t \" + count + \".\" + list.get(i).printTask() + (i \u003d\u003d list.size() - 1 ? \"\" : \"\\n\"));","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"JiaXinEu"},"content":" count++;","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"JiaXinEu"},"content":" return sb.toString();","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"JiaXinEu"},"content":" public void setList(ArrayList\u003cTask\u003e list) {","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"JiaXinEu"},"content":" this.list \u003d list;","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"JiaXinEu"},"content":" public Task getTask(int index) {","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"JiaXinEu"},"content":" return this.list.get(index);","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"JiaXinEu"},"content":" public ArrayList\u003cTask\u003e getList() {","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"JiaXinEu"},"content":" return this.list;","lastModifiedDate":"2024-01-29"},{"lineNumber":50,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":51,"author":{"gitId":"JiaXinEu"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"JiaXinEu":51}},{"path":"src/main/java/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"JiaXinEu"},"content":"public class Todo extends Task{","lastModifiedDate":"2024-01-21"},{"lineNumber":2,"author":{"gitId":"JiaXinEu"},"content":" public Todo(String task) {","lastModifiedDate":"2024-01-21"},{"lineNumber":3,"author":{"gitId":"JiaXinEu"},"content":" super(task);","lastModifiedDate":"2024-01-21"},{"lineNumber":4,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":5,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":6,"author":{"gitId":"JiaXinEu"},"content":" @Override","lastModifiedDate":"2024-01-21"},{"lineNumber":7,"author":{"gitId":"JiaXinEu"},"content":" public String printTask() {","lastModifiedDate":"2024-01-21"},{"lineNumber":8,"author":{"gitId":"JiaXinEu"},"content":" return \"[T]\" + super.printTask();","lastModifiedDate":"2024-01-21"},{"lineNumber":9,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":10,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"JiaXinEu"},"content":" @Override","lastModifiedDate":"2024-01-26"},{"lineNumber":12,"author":{"gitId":"JiaXinEu"},"content":" public String toString() {","lastModifiedDate":"2024-01-26"},{"lineNumber":13,"author":{"gitId":"JiaXinEu"},"content":" return String.format(\"T | %s\", super.toString());","lastModifiedDate":"2024-01-26"},{"lineNumber":14,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":15,"author":{"gitId":"JiaXinEu"},"content":"}","lastModifiedDate":"2024-01-21"}],"authorContributionMap":{"JiaXinEu":15}},{"path":"src/main/java/TodoCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"JiaXinEu"},"content":"public class TodoCommand implements Command {","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"JiaXinEu"},"content":" private String input;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"JiaXinEu"},"content":" public TodoCommand(String input) {","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"JiaXinEu"},"content":" this.input \u003d input;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"JiaXinEu"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"JiaXinEu"},"content":" public void execute(TaskList list, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"JiaXinEu"},"content":" Task t \u003d new Todo(input.substring(5));","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"JiaXinEu"},"content":" list.add(t);","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"JiaXinEu"},"content":" ui.showAdded(t, list);","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"JiaXinEu"},"content":" storage.writeToFile(list);","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"JiaXinEu"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"JiaXinEu"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"JiaXinEu"},"content":" return false;","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"JiaXinEu"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"JiaXinEu":21}},{"path":"src/main/java/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"JiaXinEu"},"content":"import java.io.InputStream;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"JiaXinEu"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"JiaXinEu"},"content":"public class Ui {","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"JiaXinEu"},"content":" private static final String LINE \u003d \"\\t________________________________________________________________\";","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"JiaXinEu"},"content":" private String name;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"JiaXinEu"},"content":" private String logo;","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"JiaXinEu"},"content":" private Scanner scanner;","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"JiaXinEu"},"content":" public Ui(String name, String logo, InputStream inputStream) {","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"JiaXinEu"},"content":" this.name \u003d name;","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"JiaXinEu"},"content":" this.logo \u003d logo;","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"JiaXinEu"},"content":" this.scanner \u003d new Scanner(inputStream);","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"JiaXinEu"},"content":" public void showWelcome() {","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"JiaXinEu"},"content":" System.out.println(LINE);","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"JiaXinEu"},"content":" System.out.println(logo);","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"JiaXinEu"},"content":" System.out.println(\"\\t Hello! I\u0027m \" + this.name + \".\");","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"JiaXinEu"},"content":" System.out.println(\"\\t What can I do for you?\\n\" + LINE);","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"JiaXinEu"},"content":" public String readCommand() {","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"JiaXinEu"},"content":" System.out.println();","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"JiaXinEu"},"content":" return scanner.nextLine();","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"JiaXinEu"},"content":" public void showLine() {","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"JiaXinEu"},"content":" System.out.println(LINE);","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"JiaXinEu"},"content":" public void showError(String errorMessage) {","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"JiaXinEu"},"content":" System.out.println(\"\\t OOPS!!! \" + errorMessage);","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"JiaXinEu"},"content":" public void showLoadingError() {","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"JiaXinEu"},"content":" System.out.println(\"\\t OOPS!!! Error loading tasks from file.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"JiaXinEu"},"content":" public void showMarked(Task task) {","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"JiaXinEu"},"content":" System.out.println(\"\\t Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"JiaXinEu"},"content":" System.out.println(\"\\t\\t \" + task.printTask());","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"JiaXinEu"},"content":" public void showUnmarked(Task task) {","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"JiaXinEu"},"content":" System.out.println(\"\\t Ok, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"JiaXinEu"},"content":" System.out.println(\"\\t\\t \" + task.printTask());","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":50,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":51,"author":{"gitId":"JiaXinEu"},"content":" public void showAdded(Task t, TaskList list) {","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"JiaXinEu"},"content":" int size \u003d list.getSize();","lastModifiedDate":"2024-01-29"},{"lineNumber":53,"author":{"gitId":"JiaXinEu"},"content":" System.out.println(\"\\t Got it! I\u0027ve added this task:\\n\\t\\t \" + t.printTask());","lastModifiedDate":"2024-01-29"},{"lineNumber":54,"author":{"gitId":"JiaXinEu"},"content":" System.out.println(\"\\t Now you have \" + size + (size \u003e 1 ? \" tasks\" : \" task\") + \" in the list.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":55,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":56,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":57,"author":{"gitId":"JiaXinEu"},"content":" public void showTasks(TaskList list) {","lastModifiedDate":"2024-01-29"},{"lineNumber":58,"author":{"gitId":"JiaXinEu"},"content":" if (list.getSize() \u003d\u003d 0) {","lastModifiedDate":"2024-01-29"},{"lineNumber":59,"author":{"gitId":"JiaXinEu"},"content":" System.out.println(\"\\t OOPS!!! No task in list.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":60,"author":{"gitId":"JiaXinEu"},"content":" System.out.println(\"\\t You may add task with keywords: todo, deadline, event.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":61,"author":{"gitId":"JiaXinEu"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":62,"author":{"gitId":"JiaXinEu"},"content":" System.out.println(list.print());","lastModifiedDate":"2024-01-29"},{"lineNumber":63,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":64,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":65,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":66,"author":{"gitId":"JiaXinEu"},"content":" public void showDeleted(Task t, TaskList list) {","lastModifiedDate":"2024-01-29"},{"lineNumber":67,"author":{"gitId":"JiaXinEu"},"content":" System.out.println(\"\\t Noted I\u0027ve removed this task:\");","lastModifiedDate":"2024-01-29"},{"lineNumber":68,"author":{"gitId":"JiaXinEu"},"content":" System.out.println(\"\\t\\t \" + t.printTask());","lastModifiedDate":"2024-01-29"},{"lineNumber":69,"author":{"gitId":"JiaXinEu"},"content":" System.out.println(\"\\t Now you have \" + list.getSize() + (list.getSize() \u003e 1 ? \" tasks\" : \" task\") + \" in the list.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":70,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":71,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":72,"author":{"gitId":"JiaXinEu"},"content":" public void showGoodbye() {","lastModifiedDate":"2024-01-29"},{"lineNumber":73,"author":{"gitId":"JiaXinEu"},"content":" System.out.println(\"\\t Bye. Hope to see you again soon!\");","lastModifiedDate":"2024-01-29"},{"lineNumber":74,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":75,"author":{"gitId":"JiaXinEu"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"JiaXinEu":75}},{"path":"src/main/java/UnknownCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"JiaXinEu"},"content":"public class UnknownCommand implements Command {","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"JiaXinEu"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"JiaXinEu"},"content":" public void execute(TaskList list, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"JiaXinEu"},"content":" throw new DukeException(\"Sorry I don\u0027t know what that means.\\n\"","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"JiaXinEu"},"content":" + \"\\t Try keywords: todo, deadline, event, list, mark, unmark, delete.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"JiaXinEu"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"JiaXinEu"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"JiaXinEu"},"content":" return false;","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"JiaXinEu"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"JiaXinEu":12}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"JiaXinEu"},"content":"list","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"JiaXinEu"},"content":"todo read book","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"JiaXinEu"},"content":"mark 1","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"JiaXinEu"},"content":"deadline return book","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"JiaXinEu"},"content":"deadline return book /by 06-06-2023 12:00","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"JiaXinEu"},"content":"deadline submit /by 01/1/2023","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"JiaXinEu"},"content":"event project meeting /from 12-03-2024 14:00 /to 12-03-2024 15:00","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"JiaXinEu"},"content":"todo join sports club","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"JiaXinEu"},"content":"mark 4","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"JiaXinEu"},"content":"list","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"JiaXinEu"},"content":"unmark 4","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"JiaXinEu"},"content":"list","lastModifiedDate":"2024-01-22"},{"lineNumber":13,"author":{"gitId":"JiaXinEu"},"content":"mark 5","lastModifiedDate":"2024-01-22"},{"lineNumber":14,"author":{"gitId":"JiaXinEu"},"content":"delete 1","lastModifiedDate":"2024-01-22"},{"lineNumber":15,"author":{"gitId":"JiaXinEu"},"content":"hi","lastModifiedDate":"2024-01-22"},{"lineNumber":16,"author":{"gitId":"JiaXinEu"},"content":"bye","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"JiaXinEu":16}},{"path":"text-ui-test/runtest.bat","fileType":"bat","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@ECHO OFF","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"REM create bin directory if it doesn\u0027t exist","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"if not exist ..\\bin mkdir ..\\bin","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"REM delete output from previous run","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"if exist ACTUAL.TXT del ACTUAL.TXT","lastModifiedDate":"2020-08-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"JiaXinEu"},"content":"REM delete saved file from previous run","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"JiaXinEu"},"content":"rmdir /s /q .\\data","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":12,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":13,"author":{"gitId":"-"},"content":"REM compile the code into the bin folder","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"javac -cp ..\\src\\main\\java -Xlint:none -d ..\\bin ..\\src\\main\\java\\*.java","lastModifiedDate":"2020-08-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"IF ERRORLEVEL 1 (","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":" echo ********** BUILD FAILURE **********","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":" exit /b 1","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":")","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":"REM no error here, errorlevel \u003d\u003d 0","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"REM run the program, feed commands from input.txt file and redirect the output to the ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":"java -classpath ..\\bin Duke \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":"REM compare the output to the expected output","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":"FC ACTUAL.TXT EXPECTED.TXT","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"JiaXinEu":4,"-":21}}] +[{"path":"README.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"# Duke project template","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"This is a project template for a greenfield Java project. It\u0027s named after the Java mascot _Duke_. Given below are instructions on how to use it.","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"## Setting up in Intellij","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"Prerequisites: JDK 11, update Intellij to the most recent version.","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"1. Open Intellij (if you are not in the welcome screen, click `File` \u003e `Close Project` to close the existing project first)","lastModifiedDate":"2021-01-17"},{"lineNumber":10,"author":{"gitId":"-"},"content":"1. Open the project into Intellij as follows:","lastModifiedDate":"2021-01-17"},{"lineNumber":11,"author":{"gitId":"-"},"content":" 1. Click `Open`.","lastModifiedDate":"2021-01-17"},{"lineNumber":12,"author":{"gitId":"-"},"content":" 1. Select the project directory, and click `OK`.","lastModifiedDate":"2021-01-17"},{"lineNumber":13,"author":{"gitId":"-"},"content":" 1. If there are any further prompts, accept the defaults.","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"1. Configure the project to use **JDK 11** (not other versions) as explained in [here](https://www.jetbrains.com/help/idea/sdk.html#set-up-jdk).\u003cbr\u003e","lastModifiedDate":"2021-07-29"},{"lineNumber":15,"author":{"gitId":"-"},"content":" In the same dialog, set the **Project language level** field to the `SDK default` option.","lastModifiedDate":"2021-07-29"},{"lineNumber":16,"author":{"gitId":"JiaXinEu"},"content":"3. After that, locate the `src/main/java/duke.Duke.java` file, right-click it, and choose `Run Duke.main()` (if the code editor is showing compile errors, try restarting the IDE). If the setup is correct, you should see something like the below as the output:","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" Hello from","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" ____ _ ","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" | _ \\ _ _| | _____ ","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" | | | | | | | |/ / _ \\","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" | |_| | |_| | \u003c __/","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" |____/ \\__,_|_|\\_\\___|","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"JiaXinEu":1,"-":23}},{"path":"build.gradle","fileType":"gradle","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"plugins {","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":" id \u0027java\u0027","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":" id \u0027application\u0027","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":" id \u0027com.github.johnrengelman.shadow\u0027 version \u00277.1.2\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"repositories {","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":" mavenCentral()","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"dependencies {","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":" testImplementation group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-api\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":" testRuntimeOnly group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-engine\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"JiaXinEu"},"content":" mainClass.set(\"duke.Duke\")","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":" archiveBaseName \u003d \"duke\"","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"JiaXinEu"},"content":" archiveFileName \u003d \u0027duke.jar\u0027","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2020-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":39,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":"run{","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"JiaXinEu":2,"-":41}},{"path":"src/main/java/duke/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"JiaXinEu"},"content":"package duke;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"JiaXinEu"},"content":"import duke.command.Command;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"JiaXinEu"},"content":"import duke.exception.DukeException;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"JiaXinEu"},"content":"import duke.util.Parser;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"JiaXinEu"},"content":"import duke.util.Storage;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"JiaXinEu"},"content":"import duke.util.TaskList;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"JiaXinEu"},"content":"import duke.util.Ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"JiaXinEu"},"content":"public class Duke {","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"JiaXinEu"},"content":" private Storage storage;","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"JiaXinEu"},"content":" private TaskList tasks;","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"JiaXinEu"},"content":" private Ui ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"JiaXinEu"},"content":" public Duke(String file, String fileParent, String name, String logo) {","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"JiaXinEu"},"content":" ui \u003d new Ui(name, logo, System.in);","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"JiaXinEu"},"content":" storage \u003d new Storage(file, fileParent);","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"JiaXinEu"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"JiaXinEu"},"content":" tasks \u003d new TaskList(storage.readFromFile());","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"JiaXinEu"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"JiaXinEu"},"content":" ui.showLoadingError();","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"JiaXinEu"},"content":" tasks \u003d new TaskList();","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"JiaXinEu"},"content":" public void run() {","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"JiaXinEu"},"content":" ui.showWelcome();","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"JiaXinEu"},"content":" boolean isExit \u003d false;","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"JiaXinEu"},"content":" while (!isExit) {","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"JiaXinEu"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"JiaXinEu"},"content":" String fullCommand \u003d ui.readCommand();","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"JiaXinEu"},"content":" ui.showLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"JiaXinEu"},"content":" Command c \u003d Parser.parseCommand(fullCommand);","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"JiaXinEu"},"content":" c.execute(tasks, ui, storage);","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"JiaXinEu"},"content":" isExit \u003d c.isExit();","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"JiaXinEu"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"JiaXinEu"},"content":" ui.showError(e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"JiaXinEu"},"content":" } finally {","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"JiaXinEu"},"content":" ui.showLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"JiaXinEu"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"JiaXinEu"},"content":" String logo \u003d \"\\t ____ __ _ _ __ ___ ___ ____ ___ ____\\n\\t\"","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"JiaXinEu"},"content":" + \" (_ _) /__\\\\( \\\\/ )/__\\\\ / __)/ __)(_ _)/ __)(_ _)\\n\\t\"","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"JiaXinEu"},"content":" + \" .-_)( /(__)\\\\\\\\ //(__)\\\\ \\\\__ \\\\\\\\__ \\\\ _)(_ \\\\__ \\\\ )(\\n\\t\"","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"JiaXinEu"},"content":" + \"\\\\____)(__)(__)\\\\/(__)(__)(___/(___/(____)(___/ (__)\\n\";","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"JiaXinEu"},"content":" new Duke(\"Duke.txt\", \"./data\", \"JavAssist\", logo).run();","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"JiaXinEu"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"JiaXinEu":54}},{"path":"src/main/java/duke/command/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"JiaXinEu"},"content":"package duke.command;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"JiaXinEu"},"content":"import duke.exception.DukeException;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"JiaXinEu"},"content":"import duke.util.Storage;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"JiaXinEu"},"content":"import duke.util.TaskList;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"JiaXinEu"},"content":"import duke.util.Ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"JiaXinEu"},"content":"public interface Command {","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"JiaXinEu"},"content":" public void execute(TaskList list, Ui ui, Storage storage) throws DukeException;","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"JiaXinEu"},"content":" public boolean isExit();","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"JiaXinEu"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"JiaXinEu":12}},{"path":"src/main/java/duke/command/DeadlineCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"JiaXinEu"},"content":"package duke.command;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"JiaXinEu"},"content":"import duke.exception.DukeException;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"JiaXinEu"},"content":"import duke.task.Deadline;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"JiaXinEu"},"content":"import duke.task.Task;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"JiaXinEu"},"content":"import duke.util.Storage;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"JiaXinEu"},"content":"import duke.util.TaskList;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"JiaXinEu"},"content":"import duke.util.Ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"JiaXinEu"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"JiaXinEu"},"content":"public class DeadlineCommand implements Command {","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"JiaXinEu"},"content":" private String input;","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"JiaXinEu"},"content":" public DeadlineCommand(String input) {","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"JiaXinEu"},"content":" this.input \u003d input;","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"JiaXinEu"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"JiaXinEu"},"content":" public void execute(TaskList list, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"JiaXinEu"},"content":" String[] task \u003d input.split(\"/by\");","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"JiaXinEu"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"JiaXinEu"},"content":" Task t \u003d new Deadline(task[0].substring(9).trim(), task[1].trim());","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"JiaXinEu"},"content":" list.add(t);","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"JiaXinEu"},"content":" ui.showAdded(t, list);","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"JiaXinEu"},"content":" storage.writeToFile(list);","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"JiaXinEu"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"JiaXinEu"},"content":" throw new DukeException(e.getMessage());","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"JiaXinEu"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"JiaXinEu"},"content":" public boolean equals(Object a) {","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"JiaXinEu"},"content":" DeadlineCommand dc \u003d (DeadlineCommand) a;","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"JiaXinEu"},"content":" return this.input.equals(dc.input);","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"JiaXinEu"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"JiaXinEu"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"JiaXinEu"},"content":" return false;","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"JiaXinEu"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"JiaXinEu":42}},{"path":"src/main/java/duke/command/DeleteCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"JiaXinEu"},"content":"package duke.command;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"JiaXinEu"},"content":"import duke.exception.DukeException;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"JiaXinEu"},"content":"import duke.task.Task;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"JiaXinEu"},"content":"import duke.util.Storage;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"JiaXinEu"},"content":"import duke.util.TaskList;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"JiaXinEu"},"content":"import duke.util.Ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"JiaXinEu"},"content":"public class DeleteCommand implements Command {","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"JiaXinEu"},"content":" private String input;","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"JiaXinEu"},"content":" public DeleteCommand(String input) {","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"JiaXinEu"},"content":" this.input \u003d input;","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"JiaXinEu"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"JiaXinEu"},"content":" public void execute(TaskList list, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"JiaXinEu"},"content":" String[] s \u003d input.split(\"\\\\s\");","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"JiaXinEu"},"content":" int num \u003d Integer.parseInt(s[1]);","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"JiaXinEu"},"content":" if (num \u003c\u003d list.getSize() \u0026\u0026 num \u003e\u003d 1) {","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"JiaXinEu"},"content":" Task t \u003d list.delete(num - 1);","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"JiaXinEu"},"content":" ui.showDeleted(t, list);","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"JiaXinEu"},"content":" storage.writeToFile(list);","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"JiaXinEu"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"JiaXinEu"},"content":" throw new DukeException(\"Task (\" + num + \") not found.\\n\" + list.print());","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"JiaXinEu"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"JiaXinEu"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"JiaXinEu"},"content":" return false;","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"JiaXinEu"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"JiaXinEu"},"content":" public boolean equals(Object a) {","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"JiaXinEu"},"content":" DeleteCommand dc \u003d (DeleteCommand) a;","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"JiaXinEu"},"content":" return this.input.equals(dc.input);","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"JiaXinEu"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"JiaXinEu":39}},{"path":"src/main/java/duke/command/EventCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"JiaXinEu"},"content":"package duke.command;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"JiaXinEu"},"content":"import duke.exception.DukeException;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"JiaXinEu"},"content":"import duke.task.Event;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"JiaXinEu"},"content":"import duke.task.Task;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"JiaXinEu"},"content":"import duke.util.Storage;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"JiaXinEu"},"content":"import duke.util.TaskList;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"JiaXinEu"},"content":"import duke.util.Ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"JiaXinEu"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"JiaXinEu"},"content":"public class EventCommand implements Command {","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"JiaXinEu"},"content":" private String input;","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"JiaXinEu"},"content":" public EventCommand(String input) {","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"JiaXinEu"},"content":" this.input \u003d input;","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"JiaXinEu"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"JiaXinEu"},"content":" public void execute(TaskList list, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"JiaXinEu"},"content":" String[] task \u003d input.split(\"/from\");","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"JiaXinEu"},"content":" String[] time \u003d task[1].split(\"/to\");","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"JiaXinEu"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"JiaXinEu"},"content":" Task t \u003d new Event(task[0].substring(6).trim(), time[0].trim(), time[1].trim());","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"JiaXinEu"},"content":" list.add(t);","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"JiaXinEu"},"content":" ui.showAdded(t, list);","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"JiaXinEu"},"content":" storage.writeToFile(list);","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"JiaXinEu"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"JiaXinEu"},"content":" throw new DukeException(e.getMessage());","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"JiaXinEu"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"JiaXinEu"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"JiaXinEu"},"content":" return false;","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"JiaXinEu"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"JiaXinEu"},"content":" public boolean equals(Object a) {","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"JiaXinEu"},"content":" EventCommand ec \u003d (EventCommand) a;","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"JiaXinEu"},"content":" return this.input.equals(ec.input);","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"JiaXinEu"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"JiaXinEu":45}},{"path":"src/main/java/duke/command/ExitCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"JiaXinEu"},"content":"package duke.command;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"JiaXinEu"},"content":"import duke.exception.DukeException;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"JiaXinEu"},"content":"import duke.util.Storage;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"JiaXinEu"},"content":"import duke.util.TaskList;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"JiaXinEu"},"content":"import duke.util.Ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"JiaXinEu"},"content":"public class ExitCommand implements Command {","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"JiaXinEu"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"JiaXinEu"},"content":" public void execute(TaskList list, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"JiaXinEu"},"content":" ui.showGoodbye();","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"JiaXinEu"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"JiaXinEu"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"JiaXinEu"},"content":" return true;","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"JiaXinEu"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"JiaXinEu":18}},{"path":"src/main/java/duke/command/ListCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"JiaXinEu"},"content":"package duke.command;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"JiaXinEu"},"content":"import duke.exception.DukeException;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"JiaXinEu"},"content":"import duke.util.Storage;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"JiaXinEu"},"content":"import duke.util.TaskList;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"JiaXinEu"},"content":"import duke.util.Ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"JiaXinEu"},"content":"public class ListCommand implements Command {","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"JiaXinEu"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"JiaXinEu"},"content":" public void execute(TaskList list, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"JiaXinEu"},"content":" if (list.isEmpty()) {","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"JiaXinEu"},"content":" throw new DukeException(\"No task in list.\\n\" +","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"JiaXinEu"},"content":" \"\\t You may add task with keywords: todo, deadline, event.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"JiaXinEu"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"JiaXinEu"},"content":" ui.showTasks(list);","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"JiaXinEu"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"JiaXinEu"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"JiaXinEu"},"content":" return false;","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"JiaXinEu"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"JiaXinEu":23}},{"path":"src/main/java/duke/command/MarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"JiaXinEu"},"content":"package duke.command;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"JiaXinEu"},"content":"import duke.exception.DukeException;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"JiaXinEu"},"content":"import duke.task.Task;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"JiaXinEu"},"content":"import duke.util.Storage;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"JiaXinEu"},"content":"import duke.util.TaskList;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"JiaXinEu"},"content":"import duke.util.Ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"JiaXinEu"},"content":"public class MarkCommand implements Command {","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"JiaXinEu"},"content":" private String input;","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"JiaXinEu"},"content":" private boolean toMark;","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"JiaXinEu"},"content":" public MarkCommand(String input, boolean toMark) {","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"JiaXinEu"},"content":" this.input \u003d input;","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"JiaXinEu"},"content":" this.toMark \u003d toMark;","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"JiaXinEu"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"JiaXinEu"},"content":" public void execute(TaskList list, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"JiaXinEu"},"content":" String[] s \u003d input.split(\"\\\\s\");","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"JiaXinEu"},"content":" int num \u003d Integer.parseInt(s[1]);","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"JiaXinEu"},"content":" if (num \u003c\u003d list.getSize() \u0026\u0026 num \u003e\u003d 1) {","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"JiaXinEu"},"content":" Task t \u003d list.getTask(num - 1);","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"JiaXinEu"},"content":" if (this.toMark) {","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"JiaXinEu"},"content":" t.done();","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"JiaXinEu"},"content":" ui.showMarked(t);","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"JiaXinEu"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"JiaXinEu"},"content":" t.undo();","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"JiaXinEu"},"content":" ui.showUnmarked(t);","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"JiaXinEu"},"content":" storage.writeToFile(list);","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"JiaXinEu"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"JiaXinEu"},"content":" throw new DukeException(\"Task (\" + num + \") not found.\\n\" + list.print());","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"JiaXinEu"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"JiaXinEu"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"JiaXinEu"},"content":" return false;","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"JiaXinEu"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"JiaXinEu"},"content":" public boolean equals(Object a) {","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"JiaXinEu"},"content":" MarkCommand mc \u003d (MarkCommand) a;","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"JiaXinEu"},"content":" return (this.toMark \u003d\u003d mc.toMark) \u0026\u0026 (this.input.equals(mc.input));","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"JiaXinEu"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"JiaXinEu":48}},{"path":"src/main/java/duke/command/TodoCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"JiaXinEu"},"content":"package duke.command;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"JiaXinEu"},"content":"import duke.exception.DukeException;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"JiaXinEu"},"content":"import duke.task.Task;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"JiaXinEu"},"content":"import duke.task.Todo;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"JiaXinEu"},"content":"import duke.util.Storage;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"JiaXinEu"},"content":"import duke.util.TaskList;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"JiaXinEu"},"content":"import duke.util.Ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"JiaXinEu"},"content":"public class TodoCommand implements Command {","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"JiaXinEu"},"content":" private String input;","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"JiaXinEu"},"content":" public TodoCommand(String input) {","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"JiaXinEu"},"content":" this.input \u003d input;","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"JiaXinEu"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"JiaXinEu"},"content":" public void execute(TaskList list, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"JiaXinEu"},"content":" Task t \u003d new Todo(input.substring(5));","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"JiaXinEu"},"content":" list.add(t);","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"JiaXinEu"},"content":" ui.showAdded(t, list);","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"JiaXinEu"},"content":" storage.writeToFile(list);","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"JiaXinEu"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"JiaXinEu"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"JiaXinEu"},"content":" return false;","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"JiaXinEu"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"JiaXinEu"},"content":" public boolean equals(Object a) {","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"JiaXinEu"},"content":" TodoCommand tc \u003d (TodoCommand) a;","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"JiaXinEu"},"content":" return this.input.equals(tc.input);","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"JiaXinEu"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"JiaXinEu":36}},{"path":"src/main/java/duke/command/UnknownCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"JiaXinEu"},"content":"package duke.command;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"JiaXinEu"},"content":"import duke.exception.DukeException;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"JiaXinEu"},"content":"import duke.util.Storage;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"JiaXinEu"},"content":"import duke.util.TaskList;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"JiaXinEu"},"content":"import duke.util.Ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"JiaXinEu"},"content":"public class UnknownCommand implements Command {","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"JiaXinEu"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"JiaXinEu"},"content":" public void execute(TaskList list, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"JiaXinEu"},"content":" throw new DukeException(\"Sorry I don\u0027t know what that means.\\n\"","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"JiaXinEu"},"content":" + \"\\t Try keywords: todo, deadline, event, list, mark, unmark, delete.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"JiaXinEu"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"JiaXinEu"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"JiaXinEu"},"content":" return false;","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"JiaXinEu"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"JiaXinEu":19}},{"path":"src/main/java/duke/exception/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"JiaXinEu"},"content":"package duke.exception;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"JiaXinEu"},"content":"public class DukeException extends Exception {","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"JiaXinEu"},"content":" public DukeException(String message) {","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"JiaXinEu"},"content":" super(message);","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"JiaXinEu"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"JiaXinEu":7}},{"path":"src/main/java/duke/task/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"JiaXinEu"},"content":"package duke.task;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"JiaXinEu"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"JiaXinEu"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"JiaXinEu"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"JiaXinEu"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-21"},{"lineNumber":8,"author":{"gitId":"JiaXinEu"},"content":" private LocalDateTime date;","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":10,"author":{"gitId":"JiaXinEu"},"content":" public Deadline(String task, String date) {","lastModifiedDate":"2024-01-21"},{"lineNumber":11,"author":{"gitId":"JiaXinEu"},"content":" super(task);","lastModifiedDate":"2024-01-21"},{"lineNumber":12,"author":{"gitId":"JiaXinEu"},"content":" this.date \u003d setDate(date);","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"JiaXinEu"},"content":" public LocalDateTime setDate(String s) throws DateTimeParseException {","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"JiaXinEu"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"dd-MM-yyyy HH:mm\");","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"JiaXinEu"},"content":" LocalDateTime date \u003d null;","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"JiaXinEu"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"JiaXinEu"},"content":" date \u003d LocalDateTime.parse(s, formatter);","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"JiaXinEu"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"JiaXinEu"},"content":" throw new DateTimeParseException(\"Invalid start/end date. Specify date in format \u0027dd-MM-yyyy HH:mm\u0027.\", e.getParsedString(), e.getErrorIndex());","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"JiaXinEu"},"content":" return date;","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":25,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":26,"author":{"gitId":"JiaXinEu"},"content":" @Override","lastModifiedDate":"2024-01-21"},{"lineNumber":27,"author":{"gitId":"JiaXinEu"},"content":" public String printTask() {","lastModifiedDate":"2024-01-21"},{"lineNumber":28,"author":{"gitId":"JiaXinEu"},"content":" return \"[D]\" + super.printTask() + \" (by: \" + printDate() + \")\";","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":30,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":31,"author":{"gitId":"JiaXinEu"},"content":" @Override","lastModifiedDate":"2024-01-26"},{"lineNumber":32,"author":{"gitId":"JiaXinEu"},"content":" public String toString() {","lastModifiedDate":"2024-01-26"},{"lineNumber":33,"author":{"gitId":"JiaXinEu"},"content":" return String.format(\"D | %s | %s\", super.toString(), this.date.format(DateTimeFormatter.ofPattern(\"dd-MM-yyyy HH:mm\")));","lastModifiedDate":"2024-01-28"},{"lineNumber":34,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":35,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"JiaXinEu"},"content":" public String printDate() {","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"JiaXinEu"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"MMM dd yyyy, HH:mm\");","lastModifiedDate":"2024-01-28"},{"lineNumber":38,"author":{"gitId":"JiaXinEu"},"content":" return this.date.format(formatter);","lastModifiedDate":"2024-01-28"},{"lineNumber":39,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":40,"author":{"gitId":"JiaXinEu"},"content":"}","lastModifiedDate":"2024-01-21"}],"authorContributionMap":{"JiaXinEu":40}},{"path":"src/main/java/duke/task/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"JiaXinEu"},"content":"package duke.task;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"JiaXinEu"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"JiaXinEu"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"JiaXinEu"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"JiaXinEu"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-21"},{"lineNumber":8,"author":{"gitId":"JiaXinEu"},"content":" private LocalDateTime start;","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"JiaXinEu"},"content":" private LocalDateTime end;","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":11,"author":{"gitId":"JiaXinEu"},"content":" public Event(String task, String start, String end) {","lastModifiedDate":"2024-01-21"},{"lineNumber":12,"author":{"gitId":"JiaXinEu"},"content":" super(task);","lastModifiedDate":"2024-01-21"},{"lineNumber":13,"author":{"gitId":"JiaXinEu"},"content":" this.start \u003d setDate(start);","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"JiaXinEu"},"content":" this.end \u003d setDate(end);","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":16,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":17,"author":{"gitId":"JiaXinEu"},"content":" public LocalDateTime setDate(String s) throws DateTimeParseException {","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"JiaXinEu"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"dd-MM-yyyy HH:mm\");","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"JiaXinEu"},"content":" LocalDateTime date \u003d null;","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"JiaXinEu"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"JiaXinEu"},"content":" date \u003d LocalDateTime.parse(s, formatter);","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"JiaXinEu"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"JiaXinEu"},"content":" throw new DateTimeParseException(\"Invalid start/end date. Specify date in format \u0027dd-MM-yyyy HH:mm\u0027.\", e.getParsedString(), e.getErrorIndex());","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"JiaXinEu"},"content":" return date;","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"JiaXinEu"},"content":" @Override","lastModifiedDate":"2024-01-21"},{"lineNumber":28,"author":{"gitId":"JiaXinEu"},"content":" public String printTask() {","lastModifiedDate":"2024-01-21"},{"lineNumber":29,"author":{"gitId":"JiaXinEu"},"content":" return \"[E]\" + super.printTask() + \" (from: \" + printDate(this.start) + \" to: \" + printDate(this.end) + \")\";","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":31,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":32,"author":{"gitId":"JiaXinEu"},"content":" @Override","lastModifiedDate":"2024-01-26"},{"lineNumber":33,"author":{"gitId":"JiaXinEu"},"content":" public String toString() {","lastModifiedDate":"2024-01-26"},{"lineNumber":34,"author":{"gitId":"JiaXinEu"},"content":" return String.format(\"E | %s | %s | %s\", super.toString(), this.start.format(DateTimeFormatter.ofPattern(\"dd-MM-yyyy HH:mm\")), this.end.format(DateTimeFormatter.ofPattern(\"dd-MM-yyyy HH:mm\")));","lastModifiedDate":"2024-01-28"},{"lineNumber":35,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"JiaXinEu"},"content":" public String printDate(LocalDateTime date) {","lastModifiedDate":"2024-01-28"},{"lineNumber":38,"author":{"gitId":"JiaXinEu"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"MMM dd yyyy, HH:mm\");","lastModifiedDate":"2024-01-28"},{"lineNumber":39,"author":{"gitId":"JiaXinEu"},"content":" return date.format(formatter);","lastModifiedDate":"2024-01-28"},{"lineNumber":40,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":41,"author":{"gitId":"JiaXinEu"},"content":"}","lastModifiedDate":"2024-01-21"}],"authorContributionMap":{"JiaXinEu":41}},{"path":"src/main/java/duke/task/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"JiaXinEu"},"content":"package duke.task;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"JiaXinEu"},"content":"public abstract class Task {","lastModifiedDate":"2024-01-21"},{"lineNumber":4,"author":{"gitId":"JiaXinEu"},"content":" private String task;","lastModifiedDate":"2024-01-21"},{"lineNumber":5,"author":{"gitId":"JiaXinEu"},"content":" private boolean isDone;","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":7,"author":{"gitId":"JiaXinEu"},"content":" public Task(String task) {","lastModifiedDate":"2024-01-21"},{"lineNumber":8,"author":{"gitId":"JiaXinEu"},"content":" this.task \u003d task;","lastModifiedDate":"2024-01-21"},{"lineNumber":9,"author":{"gitId":"JiaXinEu"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":11,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":12,"author":{"gitId":"JiaXinEu"},"content":" public String printTask() {","lastModifiedDate":"2024-01-21"},{"lineNumber":13,"author":{"gitId":"JiaXinEu"},"content":" return String.format(\"[\" + (this.isDone ? \"X\" : \" \") + \"] \" + this.task);","lastModifiedDate":"2024-01-26"},{"lineNumber":14,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":15,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":16,"author":{"gitId":"JiaXinEu"},"content":" public void done() {","lastModifiedDate":"2024-01-21"},{"lineNumber":17,"author":{"gitId":"JiaXinEu"},"content":" this.isDone \u003d true;","lastModifiedDate":"2024-01-26"},{"lineNumber":18,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":19,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":20,"author":{"gitId":"JiaXinEu"},"content":" public void undo() {","lastModifiedDate":"2024-01-21"},{"lineNumber":21,"author":{"gitId":"JiaXinEu"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-26"},{"lineNumber":22,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":23,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":24,"author":{"gitId":"JiaXinEu"},"content":" @Override","lastModifiedDate":"2024-01-26"},{"lineNumber":25,"author":{"gitId":"JiaXinEu"},"content":" public String toString() {","lastModifiedDate":"2024-01-26"},{"lineNumber":26,"author":{"gitId":"JiaXinEu"},"content":" return String.format(\"%d | %s\", (this.isDone ? 1 : 0), this.task);","lastModifiedDate":"2024-01-26"},{"lineNumber":27,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":28,"author":{"gitId":"JiaXinEu"},"content":"}","lastModifiedDate":"2024-01-21"}],"authorContributionMap":{"JiaXinEu":28}},{"path":"src/main/java/duke/task/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"JiaXinEu"},"content":"package duke.task;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"JiaXinEu"},"content":"public class Todo extends Task {","lastModifiedDate":"2024-01-21"},{"lineNumber":4,"author":{"gitId":"JiaXinEu"},"content":" public Todo(String task) {","lastModifiedDate":"2024-01-21"},{"lineNumber":5,"author":{"gitId":"JiaXinEu"},"content":" super(task);","lastModifiedDate":"2024-01-21"},{"lineNumber":6,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":7,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":8,"author":{"gitId":"JiaXinEu"},"content":" @Override","lastModifiedDate":"2024-01-21"},{"lineNumber":9,"author":{"gitId":"JiaXinEu"},"content":" public String printTask() {","lastModifiedDate":"2024-01-21"},{"lineNumber":10,"author":{"gitId":"JiaXinEu"},"content":" return \"[T]\" + super.printTask();","lastModifiedDate":"2024-01-21"},{"lineNumber":11,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":12,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":13,"author":{"gitId":"JiaXinEu"},"content":" @Override","lastModifiedDate":"2024-01-26"},{"lineNumber":14,"author":{"gitId":"JiaXinEu"},"content":" public String toString() {","lastModifiedDate":"2024-01-26"},{"lineNumber":15,"author":{"gitId":"JiaXinEu"},"content":" return String.format(\"T | %s\", super.toString());","lastModifiedDate":"2024-01-26"},{"lineNumber":16,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":17,"author":{"gitId":"JiaXinEu"},"content":"}","lastModifiedDate":"2024-01-21"}],"authorContributionMap":{"JiaXinEu":17}},{"path":"src/main/java/duke/util/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"JiaXinEu"},"content":"package duke.util;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"JiaXinEu"},"content":"import duke.command.Command;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"JiaXinEu"},"content":"import duke.command.DeadlineCommand;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"JiaXinEu"},"content":"import duke.command.DeleteCommand;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"JiaXinEu"},"content":"import duke.command.ExitCommand;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"JiaXinEu"},"content":"import duke.command.EventCommand;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"JiaXinEu"},"content":"import duke.command.ListCommand;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"JiaXinEu"},"content":"import duke.command.MarkCommand;","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"JiaXinEu"},"content":"import duke.command.TodoCommand;","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"JiaXinEu"},"content":"import duke.command.UnknownCommand;","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"JiaXinEu"},"content":"import duke.exception.DukeException;","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"JiaXinEu"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"JiaXinEu"},"content":"public class Parser {","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"JiaXinEu"},"content":" public enum InputType {","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"JiaXinEu"},"content":" LIST,","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"JiaXinEu"},"content":" MARK,","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"JiaXinEu"},"content":" UNMARK,","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"JiaXinEu"},"content":" DELETE,","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"JiaXinEu"},"content":" BYE,","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"JiaXinEu"},"content":" TODO,","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"JiaXinEu"},"content":" DEADLINE,","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"JiaXinEu"},"content":" EVENT,","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"JiaXinEu"},"content":" UNKNOWN","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"JiaXinEu"},"content":" public static InputType getCommandType(String input) {","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"JiaXinEu"},"content":" if (input.equals(\"list\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"JiaXinEu"},"content":" return InputType.LIST;","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"JiaXinEu"},"content":" } else if (input.startsWith(\"mark\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"JiaXinEu"},"content":" return InputType.MARK;","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"JiaXinEu"},"content":" } else if (input.startsWith(\"unmark\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"JiaXinEu"},"content":" return InputType.UNMARK;","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"JiaXinEu"},"content":" } else if (input.startsWith(\"delete\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"JiaXinEu"},"content":" return InputType.DELETE;","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"JiaXinEu"},"content":" } else if (input.equals(\"bye\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"JiaXinEu"},"content":" return InputType.BYE;","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"JiaXinEu"},"content":" } else if (input.startsWith(\"todo\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"JiaXinEu"},"content":" return InputType.TODO;","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"JiaXinEu"},"content":" } else if (input.startsWith(\"deadline\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"JiaXinEu"},"content":" return InputType.DEADLINE;","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"JiaXinEu"},"content":" } else if (input.startsWith(\"event\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"JiaXinEu"},"content":" return InputType.EVENT;","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"JiaXinEu"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"JiaXinEu"},"content":" return InputType.UNKNOWN;","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":50,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":51,"author":{"gitId":"JiaXinEu"},"content":" public static boolean matchPattern(String input, String pattern) {","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"JiaXinEu"},"content":" Pattern regexPattern \u003d Pattern.compile(pattern);","lastModifiedDate":"2024-01-29"},{"lineNumber":53,"author":{"gitId":"JiaXinEu"},"content":" return regexPattern.matcher(input).matches();","lastModifiedDate":"2024-01-29"},{"lineNumber":54,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":55,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":56,"author":{"gitId":"JiaXinEu"},"content":" public static Command parseCommand(String input) throws DukeException{","lastModifiedDate":"2024-01-29"},{"lineNumber":57,"author":{"gitId":"JiaXinEu"},"content":" String lowerInput \u003d input.trim().toLowerCase();","lastModifiedDate":"2024-01-29"},{"lineNumber":58,"author":{"gitId":"JiaXinEu"},"content":" InputType commandType \u003d getCommandType(lowerInput);","lastModifiedDate":"2024-01-29"},{"lineNumber":59,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":60,"author":{"gitId":"JiaXinEu"},"content":" switch (commandType) {","lastModifiedDate":"2024-01-29"},{"lineNumber":61,"author":{"gitId":"JiaXinEu"},"content":" case LIST:","lastModifiedDate":"2024-01-29"},{"lineNumber":62,"author":{"gitId":"JiaXinEu"},"content":" return new ListCommand();","lastModifiedDate":"2024-01-29"},{"lineNumber":63,"author":{"gitId":"JiaXinEu"},"content":" case MARK:","lastModifiedDate":"2024-01-29"},{"lineNumber":64,"author":{"gitId":"JiaXinEu"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":65,"author":{"gitId":"JiaXinEu"},"content":" return parseMarkCommand(input, true);","lastModifiedDate":"2024-01-29"},{"lineNumber":66,"author":{"gitId":"JiaXinEu"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":67,"author":{"gitId":"JiaXinEu"},"content":" throw e;","lastModifiedDate":"2024-01-29"},{"lineNumber":68,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":69,"author":{"gitId":"JiaXinEu"},"content":" case UNMARK:","lastModifiedDate":"2024-01-29"},{"lineNumber":70,"author":{"gitId":"JiaXinEu"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":71,"author":{"gitId":"JiaXinEu"},"content":" return parseMarkCommand(input, false);","lastModifiedDate":"2024-01-29"},{"lineNumber":72,"author":{"gitId":"JiaXinEu"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":73,"author":{"gitId":"JiaXinEu"},"content":" throw e;","lastModifiedDate":"2024-01-29"},{"lineNumber":74,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":75,"author":{"gitId":"JiaXinEu"},"content":" case DELETE:","lastModifiedDate":"2024-01-29"},{"lineNumber":76,"author":{"gitId":"JiaXinEu"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":77,"author":{"gitId":"JiaXinEu"},"content":" return parseDeleteCommand(input);","lastModifiedDate":"2024-01-29"},{"lineNumber":78,"author":{"gitId":"JiaXinEu"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":79,"author":{"gitId":"JiaXinEu"},"content":" throw e;","lastModifiedDate":"2024-01-29"},{"lineNumber":80,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":81,"author":{"gitId":"JiaXinEu"},"content":" case TODO:","lastModifiedDate":"2024-01-29"},{"lineNumber":82,"author":{"gitId":"JiaXinEu"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":83,"author":{"gitId":"JiaXinEu"},"content":" return parseTodoCommand(input);","lastModifiedDate":"2024-01-29"},{"lineNumber":84,"author":{"gitId":"JiaXinEu"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":85,"author":{"gitId":"JiaXinEu"},"content":" throw e;","lastModifiedDate":"2024-01-29"},{"lineNumber":86,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":87,"author":{"gitId":"JiaXinEu"},"content":" case DEADLINE:","lastModifiedDate":"2024-01-29"},{"lineNumber":88,"author":{"gitId":"JiaXinEu"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":89,"author":{"gitId":"JiaXinEu"},"content":" return parseDeadlineCommand(input);","lastModifiedDate":"2024-01-29"},{"lineNumber":90,"author":{"gitId":"JiaXinEu"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":91,"author":{"gitId":"JiaXinEu"},"content":" throw e;","lastModifiedDate":"2024-01-29"},{"lineNumber":92,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":93,"author":{"gitId":"JiaXinEu"},"content":" case EVENT:","lastModifiedDate":"2024-01-29"},{"lineNumber":94,"author":{"gitId":"JiaXinEu"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":95,"author":{"gitId":"JiaXinEu"},"content":" return parseEventCommand(input);","lastModifiedDate":"2024-01-29"},{"lineNumber":96,"author":{"gitId":"JiaXinEu"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":97,"author":{"gitId":"JiaXinEu"},"content":" throw e;","lastModifiedDate":"2024-01-29"},{"lineNumber":98,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":99,"author":{"gitId":"JiaXinEu"},"content":" case BYE:","lastModifiedDate":"2024-01-29"},{"lineNumber":100,"author":{"gitId":"JiaXinEu"},"content":" return new ExitCommand();","lastModifiedDate":"2024-01-29"},{"lineNumber":101,"author":{"gitId":"JiaXinEu"},"content":" case UNKNOWN:","lastModifiedDate":"2024-01-29"},{"lineNumber":102,"author":{"gitId":"JiaXinEu"},"content":" return new UnknownCommand();","lastModifiedDate":"2024-01-29"},{"lineNumber":103,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":104,"author":{"gitId":"JiaXinEu"},"content":" return null;","lastModifiedDate":"2024-01-29"},{"lineNumber":105,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":106,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":107,"author":{"gitId":"JiaXinEu"},"content":" private static Command parseMarkCommand(String input, boolean toMark) throws DukeException {","lastModifiedDate":"2024-01-29"},{"lineNumber":108,"author":{"gitId":"JiaXinEu"},"content":" String lowerInput \u003d input.trim().toLowerCase();","lastModifiedDate":"2024-01-29"},{"lineNumber":109,"author":{"gitId":"JiaXinEu"},"content":" if (matchPattern(lowerInput, \"mark\\\\s\\\\d+|unmark\\\\s\\\\d+\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":110,"author":{"gitId":"JiaXinEu"},"content":" return new MarkCommand(input, toMark);","lastModifiedDate":"2024-01-29"},{"lineNumber":111,"author":{"gitId":"JiaXinEu"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":112,"author":{"gitId":"JiaXinEu"},"content":" if (toMark) {","lastModifiedDate":"2024-01-29"},{"lineNumber":113,"author":{"gitId":"JiaXinEu"},"content":" throw new DukeException(\"Your mark instruction is unclear.\\n\" +","lastModifiedDate":"2024-01-29"},{"lineNumber":114,"author":{"gitId":"JiaXinEu"},"content":" \"\\t Try \u0027mark [task number to mark as done]\u0027.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":115,"author":{"gitId":"JiaXinEu"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":116,"author":{"gitId":"JiaXinEu"},"content":" throw new DukeException(\"Your unmark instruction is unclear.\\n\" +","lastModifiedDate":"2024-01-29"},{"lineNumber":117,"author":{"gitId":"JiaXinEu"},"content":" \"\\t Try \u0027unmark [task number to mark as not done]\u0027.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":118,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":119,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":120,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":121,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":122,"author":{"gitId":"JiaXinEu"},"content":" private static Command parseDeleteCommand(String input) throws DukeException {","lastModifiedDate":"2024-01-29"},{"lineNumber":123,"author":{"gitId":"JiaXinEu"},"content":" String lowerInput \u003d input.trim().toLowerCase();","lastModifiedDate":"2024-01-29"},{"lineNumber":124,"author":{"gitId":"JiaXinEu"},"content":" if (Parser.matchPattern(lowerInput, \"delete\\\\s\\\\d+\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":125,"author":{"gitId":"JiaXinEu"},"content":" return new DeleteCommand(input);","lastModifiedDate":"2024-01-29"},{"lineNumber":126,"author":{"gitId":"JiaXinEu"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":127,"author":{"gitId":"JiaXinEu"},"content":" throw new DukeException(\"Your delete instruction is unclear.\\n\" +","lastModifiedDate":"2024-01-29"},{"lineNumber":128,"author":{"gitId":"JiaXinEu"},"content":" \"\\t Try \u0027delete [task number to be deleted]\u0027.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":129,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":130,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":131,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":132,"author":{"gitId":"JiaXinEu"},"content":" private static Command parseTodoCommand(String input) throws DukeException {","lastModifiedDate":"2024-01-29"},{"lineNumber":133,"author":{"gitId":"JiaXinEu"},"content":" String lowerInput \u003d input.trim().toLowerCase();","lastModifiedDate":"2024-01-29"},{"lineNumber":134,"author":{"gitId":"JiaXinEu"},"content":" if (Parser.matchPattern(lowerInput, \"todo\\\\s.+\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":135,"author":{"gitId":"JiaXinEu"},"content":" return new TodoCommand(input);","lastModifiedDate":"2024-01-29"},{"lineNumber":136,"author":{"gitId":"JiaXinEu"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":137,"author":{"gitId":"JiaXinEu"},"content":" throw new DukeException(\"The description of a todo cannot be empty.\\n\" +","lastModifiedDate":"2024-01-29"},{"lineNumber":138,"author":{"gitId":"JiaXinEu"},"content":" \"\\t Try \u0027todo [task description]\u0027.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":139,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":140,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":141,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":142,"author":{"gitId":"JiaXinEu"},"content":" private static Command parseDeadlineCommand(String input) throws DukeException {","lastModifiedDate":"2024-01-29"},{"lineNumber":143,"author":{"gitId":"JiaXinEu"},"content":" String lowerInput \u003d input.trim().toLowerCase();","lastModifiedDate":"2024-01-29"},{"lineNumber":144,"author":{"gitId":"JiaXinEu"},"content":" if (Parser.matchPattern(lowerInput, \"deadline\\\\s.+\\\\s/by\\\\s.+\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":145,"author":{"gitId":"JiaXinEu"},"content":" return new DeadlineCommand(input);","lastModifiedDate":"2024-01-29"},{"lineNumber":146,"author":{"gitId":"JiaXinEu"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":147,"author":{"gitId":"JiaXinEu"},"content":" throw new DukeException(\"The description and due of a deadline cannot be empty.\\n\" +","lastModifiedDate":"2024-01-29"},{"lineNumber":148,"author":{"gitId":"JiaXinEu"},"content":" \"\\t Try \u0027deadline [task description] /by [dd-MM-yyyy HH:mm]\u0027.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":149,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":150,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":151,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":152,"author":{"gitId":"JiaXinEu"},"content":" private static Command parseEventCommand(String input) throws DukeException {","lastModifiedDate":"2024-01-29"},{"lineNumber":153,"author":{"gitId":"JiaXinEu"},"content":" String lowerInput \u003d input.trim().toLowerCase();","lastModifiedDate":"2024-01-29"},{"lineNumber":154,"author":{"gitId":"JiaXinEu"},"content":" if (Parser.matchPattern(lowerInput, \"event\\\\s.+\\\\s/from\\\\s.+\\\\s/to\\\\s.+\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":155,"author":{"gitId":"JiaXinEu"},"content":" return new EventCommand(input);","lastModifiedDate":"2024-01-29"},{"lineNumber":156,"author":{"gitId":"JiaXinEu"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":157,"author":{"gitId":"JiaXinEu"},"content":" throw new DukeException(\"The description, start and end time of an event cannot be empty.\\n\"","lastModifiedDate":"2024-01-29"},{"lineNumber":158,"author":{"gitId":"JiaXinEu"},"content":" + \"\\t Try \u0027event [task description] /from [dd-MM-yyyy HH:mm] /to [dd-MM-yyyy HH:mm]\u0027.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":159,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":160,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":161,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":162,"author":{"gitId":"JiaXinEu"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"JiaXinEu":162}},{"path":"src/main/java/duke/util/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"JiaXinEu"},"content":"package duke.util;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"JiaXinEu"},"content":"import duke.exception.DukeException;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"JiaXinEu"},"content":"import duke.task.Deadline;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"JiaXinEu"},"content":"import duke.task.Event;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"JiaXinEu"},"content":"import duke.task.Task;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"JiaXinEu"},"content":"import duke.task.Todo;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"JiaXinEu"},"content":"import java.io.File;","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"JiaXinEu"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"JiaXinEu"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"JiaXinEu"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"JiaXinEu"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"JiaXinEu"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"JiaXinEu"},"content":"public class Storage {","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"JiaXinEu"},"content":" private File f;","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"JiaXinEu"},"content":" private FileWriter fw;","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"JiaXinEu"},"content":" private Scanner s;","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"JiaXinEu"},"content":" public Storage(String file, String parent) {","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"JiaXinEu"},"content":" this.f \u003d new File(parent +\"/\" + file);","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"JiaXinEu"},"content":" File parentDir \u003d new File(parent);","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"JiaXinEu"},"content":" if (!parentDir.exists()) {","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"JiaXinEu"},"content":" parentDir.mkdirs();","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"JiaXinEu"},"content":" public void writeToFile(TaskList list) {","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"JiaXinEu"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"JiaXinEu"},"content":" this.fw \u003d new FileWriter(f);","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"JiaXinEu"},"content":" String data \u003d write(list);","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"JiaXinEu"},"content":" this.fw.write(data);","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"JiaXinEu"},"content":" this.fw.close();","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"JiaXinEu"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"JiaXinEu"},"content":" e.printStackTrace();","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"JiaXinEu"},"content":" private String write(TaskList taskList) {","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"JiaXinEu"},"content":" ArrayList\u003cTask\u003e list \u003d taskList.getList();","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"JiaXinEu"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"JiaXinEu"},"content":" for (int i \u003d 0; i \u003c list.size(); i++) {","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"JiaXinEu"},"content":" sb.append(list.get(i).toString());","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"JiaXinEu"},"content":" if (i \u003c list.size() - 1) {","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"JiaXinEu"},"content":" sb.append(\"\\n\");","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"JiaXinEu"},"content":" return sb.toString();","lastModifiedDate":"2024-01-29"},{"lineNumber":50,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":51,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"JiaXinEu"},"content":" public ArrayList\u003cTask\u003e readFromFile() throws DukeException{","lastModifiedDate":"2024-01-29"},{"lineNumber":53,"author":{"gitId":"JiaXinEu"},"content":" ArrayList\u003cTask\u003e list \u003d new ArrayList\u003cTask\u003e();","lastModifiedDate":"2024-01-29"},{"lineNumber":54,"author":{"gitId":"JiaXinEu"},"content":" if (f.exists()) {","lastModifiedDate":"2024-01-29"},{"lineNumber":55,"author":{"gitId":"JiaXinEu"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":56,"author":{"gitId":"JiaXinEu"},"content":" this.s \u003d new Scanner(this.f);","lastModifiedDate":"2024-01-29"},{"lineNumber":57,"author":{"gitId":"JiaXinEu"},"content":" while (this.s.hasNext()) {","lastModifiedDate":"2024-01-29"},{"lineNumber":58,"author":{"gitId":"JiaXinEu"},"content":" list.add(read(this.s.nextLine()));","lastModifiedDate":"2024-01-29"},{"lineNumber":59,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":60,"author":{"gitId":"JiaXinEu"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":61,"author":{"gitId":"JiaXinEu"},"content":" throw new DukeException(e.getMessage());","lastModifiedDate":"2024-01-29"},{"lineNumber":62,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":63,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":64,"author":{"gitId":"JiaXinEu"},"content":" return list;","lastModifiedDate":"2024-01-29"},{"lineNumber":65,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":66,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":67,"author":{"gitId":"JiaXinEu"},"content":" private Task read(String s) {","lastModifiedDate":"2024-01-29"},{"lineNumber":68,"author":{"gitId":"JiaXinEu"},"content":" String[] cols \u003d s.split(\" \\\\| \");","lastModifiedDate":"2024-01-29"},{"lineNumber":69,"author":{"gitId":"JiaXinEu"},"content":" Task t \u003d null;","lastModifiedDate":"2024-01-29"},{"lineNumber":70,"author":{"gitId":"JiaXinEu"},"content":" if (cols.length \u003d\u003d 3) {","lastModifiedDate":"2024-01-29"},{"lineNumber":71,"author":{"gitId":"JiaXinEu"},"content":" t \u003d new Todo(cols[2]);","lastModifiedDate":"2024-01-29"},{"lineNumber":72,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":73,"author":{"gitId":"JiaXinEu"},"content":" } else if (cols.length \u003d\u003d 4) {","lastModifiedDate":"2024-01-29"},{"lineNumber":74,"author":{"gitId":"JiaXinEu"},"content":" t \u003d new Deadline(cols[2], cols[3]);","lastModifiedDate":"2024-01-29"},{"lineNumber":75,"author":{"gitId":"JiaXinEu"},"content":" } else if (cols.length \u003d\u003d 5) {","lastModifiedDate":"2024-01-29"},{"lineNumber":76,"author":{"gitId":"JiaXinEu"},"content":" t \u003d new Event(cols[2], cols[3], cols[4]);","lastModifiedDate":"2024-01-29"},{"lineNumber":77,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":78,"author":{"gitId":"JiaXinEu"},"content":" if (cols[1].equals(\"1\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":79,"author":{"gitId":"JiaXinEu"},"content":" t.done();","lastModifiedDate":"2024-01-29"},{"lineNumber":80,"author":{"gitId":"JiaXinEu"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":81,"author":{"gitId":"JiaXinEu"},"content":" t.undo();","lastModifiedDate":"2024-01-29"},{"lineNumber":82,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":83,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":84,"author":{"gitId":"JiaXinEu"},"content":" return t;","lastModifiedDate":"2024-01-29"},{"lineNumber":85,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":86,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":87,"author":{"gitId":"JiaXinEu"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"JiaXinEu":87}},{"path":"src/main/java/duke/util/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"JiaXinEu"},"content":"package duke.util;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"JiaXinEu"},"content":"import duke.task.Task;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"JiaXinEu"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"JiaXinEu"},"content":"public class TaskList {","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"JiaXinEu"},"content":" private ArrayList\u003cTask\u003e list;","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"JiaXinEu"},"content":" public TaskList(ArrayList\u003cTask\u003e list) {","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"JiaXinEu"},"content":" this.list \u003d list;","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"JiaXinEu"},"content":" public TaskList() {","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"JiaXinEu"},"content":" this.list \u003d new ArrayList\u003cTask\u003e();","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"JiaXinEu"},"content":" public void add(Task t) {","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"JiaXinEu"},"content":" this.list.add(t);","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"JiaXinEu"},"content":" public int getSize() {","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"JiaXinEu"},"content":" return this.list.size();","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"JiaXinEu"},"content":" public boolean isEmpty() {","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"JiaXinEu"},"content":" return this.list.isEmpty();","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"JiaXinEu"},"content":" public Task delete(int num) {","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"JiaXinEu"},"content":" return this.list.remove(num);","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"JiaXinEu"},"content":" public String print() {","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"JiaXinEu"},"content":" int count \u003d 1;","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"JiaXinEu"},"content":" if (this.isEmpty()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"JiaXinEu"},"content":" return \"\\t No task in list.\";","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"JiaXinEu"},"content":" StringBuilder sb \u003d new StringBuilder(\"\\t Here are the tasks in your list:\\n\");","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"JiaXinEu"},"content":" for (int i \u003d 0; i \u003c list.size(); i++) {","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"JiaXinEu"},"content":" sb.append(\"\\t\\t \" + count + \".\" + list.get(i).printTask() + (i \u003d\u003d list.size() - 1 ? \"\" : \"\\n\"));","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"JiaXinEu"},"content":" count++;","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"JiaXinEu"},"content":" return sb.toString();","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"JiaXinEu"},"content":" public void setList(ArrayList\u003cTask\u003e list) {","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"JiaXinEu"},"content":" this.list \u003d list;","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":50,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":51,"author":{"gitId":"JiaXinEu"},"content":" public Task getTask(int index) {","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"JiaXinEu"},"content":" return this.list.get(index);","lastModifiedDate":"2024-01-29"},{"lineNumber":53,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":54,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":55,"author":{"gitId":"JiaXinEu"},"content":" public ArrayList\u003cTask\u003e getList() {","lastModifiedDate":"2024-01-29"},{"lineNumber":56,"author":{"gitId":"JiaXinEu"},"content":" return this.list;","lastModifiedDate":"2024-01-29"},{"lineNumber":57,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":58,"author":{"gitId":"JiaXinEu"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"JiaXinEu":58}},{"path":"src/main/java/duke/util/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"JiaXinEu"},"content":"package duke.util;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"JiaXinEu"},"content":"import duke.task.Task;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"JiaXinEu"},"content":"import java.io.InputStream;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"JiaXinEu"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"JiaXinEu"},"content":"public class Ui {","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"JiaXinEu"},"content":" private static final String LINE \u003d \"\\t________________________________________________________________\";","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"JiaXinEu"},"content":" private String name;","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"JiaXinEu"},"content":" private String logo;","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"JiaXinEu"},"content":" private Scanner scanner;","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"JiaXinEu"},"content":" public Ui(String name, String logo, InputStream inputStream) {","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"JiaXinEu"},"content":" this.name \u003d name;","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"JiaXinEu"},"content":" this.logo \u003d logo;","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"JiaXinEu"},"content":" this.scanner \u003d new Scanner(inputStream);","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"JiaXinEu"},"content":" public void showWelcome() {","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"JiaXinEu"},"content":" System.out.println(LINE);","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"JiaXinEu"},"content":" System.out.println(logo);","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"JiaXinEu"},"content":" System.out.println(\"\\t Hello! I\u0027m \" + this.name + \".\");","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"JiaXinEu"},"content":" System.out.println(\"\\t What can I do for you?\\n\" + LINE);","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"JiaXinEu"},"content":" public String readCommand() {","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"JiaXinEu"},"content":" System.out.println();","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"JiaXinEu"},"content":" return scanner.nextLine();","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"JiaXinEu"},"content":" public void showLine() {","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"JiaXinEu"},"content":" System.out.println(LINE);","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"JiaXinEu"},"content":" public void showError(String errorMessage) {","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"JiaXinEu"},"content":" System.out.println(\"\\t OOPS!!! \" + errorMessage);","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"JiaXinEu"},"content":" public void showLoadingError() {","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"JiaXinEu"},"content":" System.out.println(\"\\t OOPS!!! Error loading tasks from file.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"JiaXinEu"},"content":" public void showMarked(Task task) {","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"JiaXinEu"},"content":" System.out.println(\"\\t Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"JiaXinEu"},"content":" System.out.println(\"\\t\\t \" + task.printTask());","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":50,"author":{"gitId":"JiaXinEu"},"content":" public void showUnmarked(Task task) {","lastModifiedDate":"2024-01-29"},{"lineNumber":51,"author":{"gitId":"JiaXinEu"},"content":" System.out.println(\"\\t Ok, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"JiaXinEu"},"content":" System.out.println(\"\\t\\t \" + task.printTask());","lastModifiedDate":"2024-01-29"},{"lineNumber":53,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":54,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":55,"author":{"gitId":"JiaXinEu"},"content":" public void showAdded(Task t, TaskList list) {","lastModifiedDate":"2024-01-29"},{"lineNumber":56,"author":{"gitId":"JiaXinEu"},"content":" int size \u003d list.getSize();","lastModifiedDate":"2024-01-29"},{"lineNumber":57,"author":{"gitId":"JiaXinEu"},"content":" System.out.println(\"\\t Got it! I\u0027ve added this task:\\n\\t\\t \" + t.printTask());","lastModifiedDate":"2024-01-29"},{"lineNumber":58,"author":{"gitId":"JiaXinEu"},"content":" System.out.println(\"\\t Now you have \" + size + (size \u003e 1 ? \" tasks\" : \" task\") + \" in the list.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":59,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":60,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":61,"author":{"gitId":"JiaXinEu"},"content":" public void showTasks(TaskList list) {","lastModifiedDate":"2024-01-29"},{"lineNumber":62,"author":{"gitId":"JiaXinEu"},"content":" if (list.getSize() \u003d\u003d 0) {","lastModifiedDate":"2024-01-29"},{"lineNumber":63,"author":{"gitId":"JiaXinEu"},"content":" System.out.println(\"\\t OOPS!!! No task in list.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":64,"author":{"gitId":"JiaXinEu"},"content":" System.out.println(\"\\t You may add task with keywords: todo, deadline, event.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":65,"author":{"gitId":"JiaXinEu"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":66,"author":{"gitId":"JiaXinEu"},"content":" System.out.println(list.print());","lastModifiedDate":"2024-01-29"},{"lineNumber":67,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":68,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":69,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":70,"author":{"gitId":"JiaXinEu"},"content":" public void showDeleted(Task t, TaskList list) {","lastModifiedDate":"2024-01-29"},{"lineNumber":71,"author":{"gitId":"JiaXinEu"},"content":" System.out.println(\"\\t Noted I\u0027ve removed this task:\");","lastModifiedDate":"2024-01-29"},{"lineNumber":72,"author":{"gitId":"JiaXinEu"},"content":" System.out.println(\"\\t\\t \" + t.printTask());","lastModifiedDate":"2024-01-29"},{"lineNumber":73,"author":{"gitId":"JiaXinEu"},"content":" System.out.println(\"\\t Now you have \" + list.getSize() + (list.getSize() \u003e 1 ? \" tasks\" : \" task\") + \" in the list.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":74,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":75,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":76,"author":{"gitId":"JiaXinEu"},"content":" public void showGoodbye() {","lastModifiedDate":"2024-01-29"},{"lineNumber":77,"author":{"gitId":"JiaXinEu"},"content":" System.out.println(\"\\t Bye. Hope to see you again soon!\");","lastModifiedDate":"2024-01-29"},{"lineNumber":78,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":79,"author":{"gitId":"JiaXinEu"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"JiaXinEu":79}},{"path":"src/test/java/duke/command/DeadlineCommandTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"JiaXinEu"},"content":"package duke.command;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"JiaXinEu"},"content":"import duke.exception.DukeException;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"JiaXinEu"},"content":"import duke.task.Deadline;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"JiaXinEu"},"content":"import duke.util.StorageStub;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"JiaXinEu"},"content":"import duke.util.TaskList;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"JiaXinEu"},"content":"import duke.util.Ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"JiaXinEu"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"JiaXinEu"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"JiaXinEu"},"content":"import static org.junit.jupiter.api.Assertions.fail;","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"JiaXinEu"},"content":"public class DeadlineCommandTest {","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"JiaXinEu"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"JiaXinEu"},"content":" public void execute_deadlineFormat_Deadline() {","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"JiaXinEu"},"content":" DeadlineCommand dc \u003d new DeadlineCommand(\"deadline return book /by 20-12-2020 10:01\");","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"JiaXinEu"},"content":" Deadline dl \u003d new Deadline(\"return book\", \"20-12-2020 10:01\");","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"JiaXinEu"},"content":" TaskList list \u003d new TaskList();","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"JiaXinEu"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"JiaXinEu"},"content":" dc.execute(list, new Ui(\"JavAssist\", \"\", System.in), new StorageStub(\"\", \"\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"JiaXinEu"},"content":" assertEquals(\"D | 0 | return book | 20-12-2020 10:01\", list.getTask(0).toString());","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"JiaXinEu"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"JiaXinEu"},"content":" fail();","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"JiaXinEu"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"JiaXinEu"},"content":" public void execute_deadlineWrongDateFormat_DukeException() {","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"JiaXinEu"},"content":" DeadlineCommand dc \u003d new DeadlineCommand(\"deadline return book /by 20/12/2020 10:01\");","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"JiaXinEu"},"content":" TaskList list \u003d new TaskList();","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"JiaXinEu"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"JiaXinEu"},"content":" dc.execute(list, new Ui(\"JavAssist\", \"\", System.in), new StorageStub(\"\", \"\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"JiaXinEu"},"content":" fail();","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"JiaXinEu"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"JiaXinEu"},"content":" assertEquals(\"Invalid start/end date. Specify date in format \u0027dd-MM-yyyy HH:mm\u0027.\", e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"JiaXinEu"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"JiaXinEu":39}},{"path":"src/test/java/duke/command/DeleteCommandTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"JiaXinEu"},"content":"package duke.command;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"JiaXinEu"},"content":"import duke.exception.DukeException;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"JiaXinEu"},"content":"import duke.task.Deadline;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"JiaXinEu"},"content":"import duke.task.Task;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"JiaXinEu"},"content":"import duke.util.StorageStub;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"JiaXinEu"},"content":"import duke.util.TaskList;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"JiaXinEu"},"content":"import duke.util.Ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"JiaXinEu"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"JiaXinEu"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"JiaXinEu"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"JiaXinEu"},"content":"import static org.junit.jupiter.api.Assertions.fail;","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"JiaXinEu"},"content":"public class DeleteCommandTest {","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"JiaXinEu"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"JiaXinEu"},"content":" public void execute_deleteFormat_Deleted() {","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"JiaXinEu"},"content":" DeleteCommand dc \u003d new DeleteCommand(\"delete 1\");","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"JiaXinEu"},"content":" Deadline dl \u003d new Deadline(\"return book\", \"20-12-2020 10:01\");","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"JiaXinEu"},"content":" ArrayList\u003cTask\u003e arr \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"JiaXinEu"},"content":" arr.add(dl);","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"JiaXinEu"},"content":" TaskList list \u003d new TaskList(arr);","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"JiaXinEu"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"JiaXinEu"},"content":" dc.execute(list, new Ui(\"JavAssist\", \"\", System.in), new StorageStub(\"\", \"\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"JiaXinEu"},"content":" assertEquals(true, list.getList().isEmpty());","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"JiaXinEu"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"JiaXinEu"},"content":" fail();","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"JiaXinEu"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"JiaXinEu"},"content":" public void execute_deleteNegativeIndex_DukeException() {","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"JiaXinEu"},"content":" DeleteCommand dc \u003d new DeleteCommand(\"delete -1\");","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"JiaXinEu"},"content":" Deadline dl \u003d new Deadline(\"return book\", \"20-12-2020 10:01\");","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"JiaXinEu"},"content":" ArrayList\u003cTask\u003e arr \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"JiaXinEu"},"content":" arr.add(dl);","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"JiaXinEu"},"content":" TaskList list \u003d new TaskList(arr);","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"JiaXinEu"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"JiaXinEu"},"content":" dc.execute(list, new Ui(\"JavAssist\", \"\", System.in), new StorageStub(\"\", \"\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"JiaXinEu"},"content":" fail();","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"JiaXinEu"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"JiaXinEu"},"content":" assertEquals(\"Task (-1) not found.\\n\" + \"\\t Here are the tasks in your list:\\n\\t\\t 1.\" + dl.printTask(), e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"JiaXinEu"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"JiaXinEu"},"content":" public void execute_deleteFromEmptyList_DukeException() {","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"JiaXinEu"},"content":" DeleteCommand dc \u003d new DeleteCommand(\"delete 1\");","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"JiaXinEu"},"content":" TaskList list \u003d new TaskList();","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"JiaXinEu"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"JiaXinEu"},"content":" dc.execute(list, new Ui(\"JavAssist\", \"\", System.in), new StorageStub(\"\", \"\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"JiaXinEu"},"content":" fail();","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"JiaXinEu"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"JiaXinEu"},"content":" assertEquals(\"Task (1) not found.\\n\\t No task in list.\", e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":59,"author":{"gitId":"JiaXinEu"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"JiaXinEu":59}},{"path":"src/test/java/duke/command/MarkCommandTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"JiaXinEu"},"content":"package duke.command;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"JiaXinEu"},"content":"import duke.exception.DukeException;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"JiaXinEu"},"content":"import duke.task.Deadline;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"JiaXinEu"},"content":"import duke.task.Task;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"JiaXinEu"},"content":"import duke.task.Todo;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"JiaXinEu"},"content":"import duke.util.StorageStub;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"JiaXinEu"},"content":"import duke.util.TaskList;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"JiaXinEu"},"content":"import duke.util.Ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"JiaXinEu"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"JiaXinEu"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"JiaXinEu"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"JiaXinEu"},"content":"import static org.junit.jupiter.api.Assertions.fail;","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"JiaXinEu"},"content":"public class MarkCommandTest {","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"JiaXinEu"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"JiaXinEu"},"content":" public void execute_mark_success() {","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"JiaXinEu"},"content":" MarkCommand mc \u003d new MarkCommand(\"mark 2\", true);","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"JiaXinEu"},"content":" Deadline dl \u003d new Deadline(\"return book\", \"20-12-2020 10:01\");","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"JiaXinEu"},"content":" Todo t \u003d new Todo(\"read book\");","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"JiaXinEu"},"content":" ArrayList\u003cTask\u003e arr \u003d new ArrayList\u003cTask\u003e();","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"JiaXinEu"},"content":" arr.add(t);","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"JiaXinEu"},"content":" arr.add(dl);","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"JiaXinEu"},"content":" TaskList list \u003d new TaskList(arr);","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"JiaXinEu"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"JiaXinEu"},"content":" mc.execute(list, new Ui(\"JavAssist\", \"\", System.in), new StorageStub(\"\", \"\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"JiaXinEu"},"content":" assertEquals(\"D | 1 | return book | 20-12-2020 10:01\", list.getTask(1).toString());","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"JiaXinEu"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"JiaXinEu"},"content":" fail();","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"JiaXinEu"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"JiaXinEu"},"content":" public void execute_unmark_success() {","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"JiaXinEu"},"content":" MarkCommand mc \u003d new MarkCommand(\"mark 2\", false);","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"JiaXinEu"},"content":" Deadline dl \u003d new Deadline(\"return book\", \"20-12-2020 10:01\");","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"JiaXinEu"},"content":" dl.done();","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"JiaXinEu"},"content":" Todo t \u003d new Todo(\"read book\");","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"JiaXinEu"},"content":" ArrayList\u003cTask\u003e arr \u003d new ArrayList\u003cTask\u003e();","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"JiaXinEu"},"content":" arr.add(t);","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"JiaXinEu"},"content":" arr.add(dl);","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"JiaXinEu"},"content":" TaskList list \u003d new TaskList(arr);","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"JiaXinEu"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"JiaXinEu"},"content":" mc.execute(list, new Ui(\"JavAssist\", \"\", System.in), new StorageStub(\"\", \"\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"JiaXinEu"},"content":" assertEquals(\"D | 0 | return book | 20-12-2020 10:01\", list.getTask(1).toString());","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"JiaXinEu"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"JiaXinEu"},"content":" fail();","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"JiaXinEu"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"JiaXinEu"},"content":" public void execute_markNegative_DukeException() {","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"JiaXinEu"},"content":" MarkCommand mc \u003d new MarkCommand(\"mark -2\", true);","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"JiaXinEu"},"content":" Todo t \u003d new Todo(\"read book\");","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"JiaXinEu"},"content":" ArrayList\u003cTask\u003e arr \u003d new ArrayList\u003cTask\u003e();","lastModifiedDate":"2024-01-30"},{"lineNumber":59,"author":{"gitId":"JiaXinEu"},"content":" arr.add(t);","lastModifiedDate":"2024-01-30"},{"lineNumber":60,"author":{"gitId":"JiaXinEu"},"content":" TaskList list \u003d new TaskList(arr);","lastModifiedDate":"2024-01-30"},{"lineNumber":61,"author":{"gitId":"JiaXinEu"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":62,"author":{"gitId":"JiaXinEu"},"content":" mc.execute(list, new Ui(\"JavAssist\", \"\", System.in), new StorageStub(\"\", \"\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":63,"author":{"gitId":"JiaXinEu"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":64,"author":{"gitId":"JiaXinEu"},"content":" assertEquals(\"Task (-2) not found.\\n\\t Here are the tasks in your list:\\n\\t\\t 1.\" + t.printTask(), e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":65,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":66,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":67,"author":{"gitId":"JiaXinEu"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"JiaXinEu":67}},{"path":"src/test/java/duke/util/ParserTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"JiaXinEu"},"content":"package duke.util;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"JiaXinEu"},"content":"import duke.command.*;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"JiaXinEu"},"content":"import duke.exception.DukeException;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"JiaXinEu"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"JiaXinEu"},"content":"import static org.junit.jupiter.api.Assertions.*;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"JiaXinEu"},"content":"public class ParserTest {","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"JiaXinEu"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"JiaXinEu"},"content":" public void matchPattern_matching_true() {","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"JiaXinEu"},"content":" assertEquals(true, Parser.matchPattern(\"mark 1\", \"mark\\\\s\\\\d+\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"JiaXinEu"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"JiaXinEu"},"content":" public void matchPattern_nonMatching_false() {","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"JiaXinEu"},"content":" assertEquals(false, Parser.matchPattern(\"mark 1 1\", \"mark\\\\s\\\\d+\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"JiaXinEu"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"JiaXinEu"},"content":" public void getCommandType_list_inputTypeList() {","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"JiaXinEu"},"content":" assertEquals(Parser.InputType.LIST, Parser.getCommandType(\"list\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"JiaXinEu"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"JiaXinEu"},"content":" public void getCommandType_listWithSpace_inputTypeUnknown() {","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"JiaXinEu"},"content":" assertEquals(Parser.InputType.UNKNOWN, Parser.getCommandType(\"list \"));","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"JiaXinEu"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"JiaXinEu"},"content":" public void getCommandType_eventWithSpace_inputTypeEvent() {","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"JiaXinEu"},"content":" assertEquals(Parser.InputType.EVENT, Parser.getCommandType(\"event \"));","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"JiaXinEu"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"JiaXinEu"},"content":" public void getCommandType_bye_inputTypeUnknown() {","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"JiaXinEu"},"content":" assertEquals(Parser.InputType.BYE, Parser.getCommandType(\"bye\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"JiaXinEu"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"JiaXinEu"},"content":" public void getCommandType_byee_inputTypeUnknown() {","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"JiaXinEu"},"content":" assertEquals(Parser.InputType.UNKNOWN, Parser.getCommandType(\"byee\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"JiaXinEu"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"JiaXinEu"},"content":" public void parseCommand_mark_MarkCommand() {","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"JiaXinEu"},"content":" String input \u003d \"Mark 1\";","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"JiaXinEu"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"JiaXinEu"},"content":" assertEquals(new MarkCommand(input, true), Parser.parseCommand(input));","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"JiaXinEu"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"JiaXinEu"},"content":" fail();","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"JiaXinEu"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"JiaXinEu"},"content":" public void parseCommand_unmark_MarkCommand() {","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"JiaXinEu"},"content":" String input \u003d \"unmark 1\";","lastModifiedDate":"2024-01-30"},{"lineNumber":59,"author":{"gitId":"JiaXinEu"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":60,"author":{"gitId":"JiaXinEu"},"content":" assertEquals(new MarkCommand(input, false), Parser.parseCommand(input));","lastModifiedDate":"2024-01-30"},{"lineNumber":61,"author":{"gitId":"JiaXinEu"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":62,"author":{"gitId":"JiaXinEu"},"content":" fail();","lastModifiedDate":"2024-01-30"},{"lineNumber":63,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":64,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":65,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":66,"author":{"gitId":"JiaXinEu"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":67,"author":{"gitId":"JiaXinEu"},"content":" public void parseCommand_delete_DeleteCommand() {","lastModifiedDate":"2024-01-30"},{"lineNumber":68,"author":{"gitId":"JiaXinEu"},"content":" String input \u003d \"delete 1000\";","lastModifiedDate":"2024-01-30"},{"lineNumber":69,"author":{"gitId":"JiaXinEu"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":70,"author":{"gitId":"JiaXinEu"},"content":" assertEquals(new DeleteCommand(input), Parser.parseCommand(input));","lastModifiedDate":"2024-01-30"},{"lineNumber":71,"author":{"gitId":"JiaXinEu"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":72,"author":{"gitId":"JiaXinEu"},"content":" fail();","lastModifiedDate":"2024-01-30"},{"lineNumber":73,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":74,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":75,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":76,"author":{"gitId":"JiaXinEu"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":77,"author":{"gitId":"JiaXinEu"},"content":" public void parseCommand_deleted_DukeException() {","lastModifiedDate":"2024-01-30"},{"lineNumber":78,"author":{"gitId":"JiaXinEu"},"content":" String input \u003d \"deleted 1000\";","lastModifiedDate":"2024-01-30"},{"lineNumber":79,"author":{"gitId":"JiaXinEu"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":80,"author":{"gitId":"JiaXinEu"},"content":" Parser.parseCommand(input);","lastModifiedDate":"2024-01-30"},{"lineNumber":81,"author":{"gitId":"JiaXinEu"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":82,"author":{"gitId":"JiaXinEu"},"content":" assertEquals(\"Your delete instruction is unclear.\\n\\t Try \u0027delete [task number to be deleted]\u0027.\",","lastModifiedDate":"2024-01-30"},{"lineNumber":83,"author":{"gitId":"JiaXinEu"},"content":" e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":84,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":85,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":86,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":87,"author":{"gitId":"JiaXinEu"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":88,"author":{"gitId":"JiaXinEu"},"content":" public void parseCommand_todo_TodoCommand() {","lastModifiedDate":"2024-01-30"},{"lineNumber":89,"author":{"gitId":"JiaXinEu"},"content":" String input \u003d \"todo read book\";","lastModifiedDate":"2024-01-30"},{"lineNumber":90,"author":{"gitId":"JiaXinEu"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":91,"author":{"gitId":"JiaXinEu"},"content":" assertEquals(new TodoCommand(input), Parser.parseCommand(input));","lastModifiedDate":"2024-01-30"},{"lineNumber":92,"author":{"gitId":"JiaXinEu"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":93,"author":{"gitId":"JiaXinEu"},"content":" fail();","lastModifiedDate":"2024-01-30"},{"lineNumber":94,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":95,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":96,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":97,"author":{"gitId":"JiaXinEu"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":98,"author":{"gitId":"JiaXinEu"},"content":" public void parseCommand_todoNoDescription_DukeException() {","lastModifiedDate":"2024-01-30"},{"lineNumber":99,"author":{"gitId":"JiaXinEu"},"content":" String input \u003d \"todo \";","lastModifiedDate":"2024-01-30"},{"lineNumber":100,"author":{"gitId":"JiaXinEu"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":101,"author":{"gitId":"JiaXinEu"},"content":" Parser.parseCommand(input);","lastModifiedDate":"2024-01-30"},{"lineNumber":102,"author":{"gitId":"JiaXinEu"},"content":" fail();","lastModifiedDate":"2024-01-30"},{"lineNumber":103,"author":{"gitId":"JiaXinEu"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":104,"author":{"gitId":"JiaXinEu"},"content":" assertEquals(\"The description of a todo cannot be empty.\\n\\t Try \u0027todo [task description]\u0027.\",","lastModifiedDate":"2024-01-30"},{"lineNumber":105,"author":{"gitId":"JiaXinEu"},"content":" e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":106,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":107,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":108,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":109,"author":{"gitId":"JiaXinEu"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":110,"author":{"gitId":"JiaXinEu"},"content":" public void parseCommand_deadline_DeadlineCommand() {","lastModifiedDate":"2024-01-30"},{"lineNumber":111,"author":{"gitId":"JiaXinEu"},"content":" String input \u003d \"deadline return book /by 20-12-2023 17:10\";","lastModifiedDate":"2024-01-30"},{"lineNumber":112,"author":{"gitId":"JiaXinEu"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":113,"author":{"gitId":"JiaXinEu"},"content":" assertEquals(new DeadlineCommand(input), Parser.parseCommand(input));","lastModifiedDate":"2024-01-30"},{"lineNumber":114,"author":{"gitId":"JiaXinEu"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":115,"author":{"gitId":"JiaXinEu"},"content":" fail();","lastModifiedDate":"2024-01-30"},{"lineNumber":116,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":117,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":118,"author":{"gitId":"JiaXinEu"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":119,"author":{"gitId":"JiaXinEu"},"content":" public void parseCommand_deadlineMissingDate_DukeException() {","lastModifiedDate":"2024-01-30"},{"lineNumber":120,"author":{"gitId":"JiaXinEu"},"content":" String input \u003d \"deadline return book /by \";","lastModifiedDate":"2024-01-30"},{"lineNumber":121,"author":{"gitId":"JiaXinEu"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":122,"author":{"gitId":"JiaXinEu"},"content":" Parser.parseCommand(input);","lastModifiedDate":"2024-01-30"},{"lineNumber":123,"author":{"gitId":"JiaXinEu"},"content":" fail();","lastModifiedDate":"2024-01-30"},{"lineNumber":124,"author":{"gitId":"JiaXinEu"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":125,"author":{"gitId":"JiaXinEu"},"content":" assertEquals(\"The description and due of a deadline cannot be empty.\\n\\t Try \u0027deadline [task description] /by [dd-MM-yyyy HH:mm]\u0027.\",","lastModifiedDate":"2024-01-30"},{"lineNumber":126,"author":{"gitId":"JiaXinEu"},"content":" e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":127,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":128,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":129,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":130,"author":{"gitId":"JiaXinEu"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":131,"author":{"gitId":"JiaXinEu"},"content":" public void parseCommand_deadlineMissingDescription_DukeException() {","lastModifiedDate":"2024-01-30"},{"lineNumber":132,"author":{"gitId":"JiaXinEu"},"content":" String input \u003d \"deadline /by 20-12-2023 17:10\";","lastModifiedDate":"2024-01-30"},{"lineNumber":133,"author":{"gitId":"JiaXinEu"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":134,"author":{"gitId":"JiaXinEu"},"content":" Parser.parseCommand(input);","lastModifiedDate":"2024-01-30"},{"lineNumber":135,"author":{"gitId":"JiaXinEu"},"content":" fail();","lastModifiedDate":"2024-01-30"},{"lineNumber":136,"author":{"gitId":"JiaXinEu"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":137,"author":{"gitId":"JiaXinEu"},"content":" assertEquals(\"The description and due of a deadline cannot be empty.\\n\\t Try \u0027deadline [task description] /by [dd-MM-yyyy HH:mm]\u0027.\",","lastModifiedDate":"2024-01-30"},{"lineNumber":138,"author":{"gitId":"JiaXinEu"},"content":" e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":139,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":140,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":141,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":142,"author":{"gitId":"JiaXinEu"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":143,"author":{"gitId":"JiaXinEu"},"content":" public void parseCommand_event_EventCommand() {","lastModifiedDate":"2024-01-30"},{"lineNumber":144,"author":{"gitId":"JiaXinEu"},"content":" String input \u003d \"event meeting /from 20-12-2023 17:10 /to 20-12-2023 17:30\";","lastModifiedDate":"2024-01-30"},{"lineNumber":145,"author":{"gitId":"JiaXinEu"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":146,"author":{"gitId":"JiaXinEu"},"content":" assertEquals(new EventCommand(input), Parser.parseCommand(input));","lastModifiedDate":"2024-01-30"},{"lineNumber":147,"author":{"gitId":"JiaXinEu"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":148,"author":{"gitId":"JiaXinEu"},"content":" fail();","lastModifiedDate":"2024-01-30"},{"lineNumber":149,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":150,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":151,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":152,"author":{"gitId":"JiaXinEu"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":153,"author":{"gitId":"JiaXinEu"},"content":" public void parseCommand_eventMissingStart_DukeException() {","lastModifiedDate":"2024-01-30"},{"lineNumber":154,"author":{"gitId":"JiaXinEu"},"content":" String input \u003d \"event meeting /to 20-12-2023 17:10\";","lastModifiedDate":"2024-01-30"},{"lineNumber":155,"author":{"gitId":"JiaXinEu"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":156,"author":{"gitId":"JiaXinEu"},"content":" Parser.parseCommand(input);","lastModifiedDate":"2024-01-30"},{"lineNumber":157,"author":{"gitId":"JiaXinEu"},"content":" fail();","lastModifiedDate":"2024-01-30"},{"lineNumber":158,"author":{"gitId":"JiaXinEu"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":159,"author":{"gitId":"JiaXinEu"},"content":" assertEquals(\"The description, start and end time of an event cannot be empty.\\n\\t Try \u0027event [task description] /from [dd-MM-yyyy HH:mm] /to [dd-MM-yyyy HH:mm]\u0027.\",","lastModifiedDate":"2024-01-30"},{"lineNumber":160,"author":{"gitId":"JiaXinEu"},"content":" e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":161,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":162,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":163,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":164,"author":{"gitId":"JiaXinEu"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":165,"author":{"gitId":"JiaXinEu"},"content":" public void parseCommand_eventSwapStartEnd_DukeException() {","lastModifiedDate":"2024-01-30"},{"lineNumber":166,"author":{"gitId":"JiaXinEu"},"content":" String input \u003d \"event meeting /to 20-12-2023 17:10 /from 20-12-2023 10:00\";","lastModifiedDate":"2024-01-30"},{"lineNumber":167,"author":{"gitId":"JiaXinEu"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":168,"author":{"gitId":"JiaXinEu"},"content":" Parser.parseCommand(input);","lastModifiedDate":"2024-01-30"},{"lineNumber":169,"author":{"gitId":"JiaXinEu"},"content":" fail();","lastModifiedDate":"2024-01-30"},{"lineNumber":170,"author":{"gitId":"JiaXinEu"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":171,"author":{"gitId":"JiaXinEu"},"content":" assertEquals(\"The description, start and end time of an event cannot be empty.\\n\\t Try \u0027event [task description] /from [dd-MM-yyyy HH:mm] /to [dd-MM-yyyy HH:mm]\u0027.\",","lastModifiedDate":"2024-01-30"},{"lineNumber":172,"author":{"gitId":"JiaXinEu"},"content":" e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":173,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":174,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":175,"author":{"gitId":"JiaXinEu"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"JiaXinEu":175}},{"path":"src/test/java/duke/util/StorageStub.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"JiaXinEu"},"content":"package duke.util;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"JiaXinEu"},"content":"import duke.exception.DukeException;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"JiaXinEu"},"content":"import duke.task.Task;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"JiaXinEu"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"JiaXinEu"},"content":"public class StorageStub extends Storage {","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"JiaXinEu"},"content":" public StorageStub(String file, String parent) {","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"JiaXinEu"},"content":" super(file, parent);","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"JiaXinEu"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"JiaXinEu"},"content":" public void writeToFile(TaskList list) {","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"JiaXinEu"},"content":" return;","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"JiaXinEu"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"JiaXinEu"},"content":" public ArrayList\u003cTask\u003e readFromFile() throws DukeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"JiaXinEu"},"content":" return null;","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"JiaXinEu"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"JiaXinEu":22}},{"path":"src/test/java/duke/util/TaskListTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"JiaXinEu"},"content":"package duke.util;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"JiaXinEu"},"content":"import duke.task.Event;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"JiaXinEu"},"content":"import duke.task.Task;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"JiaXinEu"},"content":"import duke.task.Todo;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"JiaXinEu"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"JiaXinEu"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"JiaXinEu"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"JiaXinEu"},"content":"import static org.junit.jupiter.api.Assertions.fail;","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"JiaXinEu"},"content":"public class TaskListTest {","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"JiaXinEu"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"JiaXinEu"},"content":" public void add_todo_listWithTodo() {","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"JiaXinEu"},"content":" TaskList list \u003d new TaskList();","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"JiaXinEu"},"content":" Todo t \u003d new Todo(\"read\");","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"JiaXinEu"},"content":" ArrayList\u003cTask\u003e arr \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"JiaXinEu"},"content":" arr.add(t);","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"JiaXinEu"},"content":" list.add(t);","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"JiaXinEu"},"content":" assertEquals(arr, list.getList());","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"JiaXinEu"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"JiaXinEu"},"content":" public void add_todoAndEvent_listWithTasks() {","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"JiaXinEu"},"content":" ArrayList\u003cTask\u003e arr \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"JiaXinEu"},"content":" TaskList list \u003d new TaskList();","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"JiaXinEu"},"content":" Todo t \u003d new Todo(\"read\");","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"JiaXinEu"},"content":" Event e \u003d new Event(\"meeting\", \"20-12-2023 13:00\", \"20-12-2023 20:00\");","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"JiaXinEu"},"content":" arr.add(t);","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"JiaXinEu"},"content":" arr.add(e);","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"JiaXinEu"},"content":" list.add(t);","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"JiaXinEu"},"content":" list.add(e);","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"JiaXinEu"},"content":" assertEquals(arr, list.getList());","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"JiaXinEu"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"JiaXinEu"},"content":" public void getSize_emptyConstructor_zero() {","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"JiaXinEu"},"content":" TaskList list \u003d new TaskList();","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"JiaXinEu"},"content":" assertEquals(0, list.getSize());","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"JiaXinEu"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"JiaXinEu"},"content":" public void getSize_newArrayList_zero() {","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"JiaXinEu"},"content":" ArrayList\u003cTask\u003e arr \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"JiaXinEu"},"content":" TaskList list \u003d new TaskList(arr);","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"JiaXinEu"},"content":" assertEquals(0, list.getSize());","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"JiaXinEu"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"JiaXinEu"},"content":" public void delete_zeroIndexed_success() {","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"JiaXinEu"},"content":" Todo t \u003d new Todo(\"read\");","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"JiaXinEu"},"content":" ArrayList\u003cTask\u003e arr \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"JiaXinEu"},"content":" arr.add(t);","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"JiaXinEu"},"content":" TaskList list \u003d new TaskList(arr);","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"JiaXinEu"},"content":" assertEquals(t, list.delete(0));","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":59,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":60,"author":{"gitId":"JiaXinEu"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":61,"author":{"gitId":"JiaXinEu"},"content":" public void delete_oneIndexed_fail() {","lastModifiedDate":"2024-01-30"},{"lineNumber":62,"author":{"gitId":"JiaXinEu"},"content":" Todo t \u003d new Todo(\"read\");","lastModifiedDate":"2024-01-30"},{"lineNumber":63,"author":{"gitId":"JiaXinEu"},"content":" ArrayList\u003cTask\u003e arr \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-30"},{"lineNumber":64,"author":{"gitId":"JiaXinEu"},"content":" arr.add(t);","lastModifiedDate":"2024-01-30"},{"lineNumber":65,"author":{"gitId":"JiaXinEu"},"content":" TaskList list \u003d new TaskList(arr);","lastModifiedDate":"2024-01-30"},{"lineNumber":66,"author":{"gitId":"JiaXinEu"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":67,"author":{"gitId":"JiaXinEu"},"content":" list.delete(1);","lastModifiedDate":"2024-01-30"},{"lineNumber":68,"author":{"gitId":"JiaXinEu"},"content":" fail();","lastModifiedDate":"2024-01-30"},{"lineNumber":69,"author":{"gitId":"JiaXinEu"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":70,"author":{"gitId":"JiaXinEu"},"content":" assertEquals(\"Index 1 out of bounds for length 1\", e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":71,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":72,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":73,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":74,"author":{"gitId":"JiaXinEu"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":75,"author":{"gitId":"JiaXinEu"},"content":" public void getTask_zeroIndexed_success() {","lastModifiedDate":"2024-01-30"},{"lineNumber":76,"author":{"gitId":"JiaXinEu"},"content":" Todo t \u003d new Todo(\"read\");","lastModifiedDate":"2024-01-30"},{"lineNumber":77,"author":{"gitId":"JiaXinEu"},"content":" ArrayList\u003cTask\u003e arr \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-30"},{"lineNumber":78,"author":{"gitId":"JiaXinEu"},"content":" arr.add(t);","lastModifiedDate":"2024-01-30"},{"lineNumber":79,"author":{"gitId":"JiaXinEu"},"content":" TaskList list \u003d new TaskList(arr);","lastModifiedDate":"2024-01-30"},{"lineNumber":80,"author":{"gitId":"JiaXinEu"},"content":" assertEquals(t, list.getTask(0));","lastModifiedDate":"2024-01-30"},{"lineNumber":81,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":82,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":83,"author":{"gitId":"JiaXinEu"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":84,"author":{"gitId":"JiaXinEu"},"content":" public void getTask_oneIndexed_fail() {","lastModifiedDate":"2024-01-30"},{"lineNumber":85,"author":{"gitId":"JiaXinEu"},"content":" Todo t \u003d new Todo(\"read\");","lastModifiedDate":"2024-01-30"},{"lineNumber":86,"author":{"gitId":"JiaXinEu"},"content":" ArrayList\u003cTask\u003e arr \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-30"},{"lineNumber":87,"author":{"gitId":"JiaXinEu"},"content":" arr.add(t);","lastModifiedDate":"2024-01-30"},{"lineNumber":88,"author":{"gitId":"JiaXinEu"},"content":" TaskList list \u003d new TaskList(arr);","lastModifiedDate":"2024-01-30"},{"lineNumber":89,"author":{"gitId":"JiaXinEu"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":90,"author":{"gitId":"JiaXinEu"},"content":" list.getTask(1);","lastModifiedDate":"2024-01-30"},{"lineNumber":91,"author":{"gitId":"JiaXinEu"},"content":" fail();","lastModifiedDate":"2024-01-30"},{"lineNumber":92,"author":{"gitId":"JiaXinEu"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":93,"author":{"gitId":"JiaXinEu"},"content":" assertEquals(\"Index 1 out of bounds for length 1\", e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":94,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":95,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":96,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":97,"author":{"gitId":"JiaXinEu"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":98,"author":{"gitId":"JiaXinEu"},"content":" public void print_todoInList_printHeadingAndTodo() {","lastModifiedDate":"2024-01-30"},{"lineNumber":99,"author":{"gitId":"JiaXinEu"},"content":" ArrayList\u003cTask\u003e arr \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-30"},{"lineNumber":100,"author":{"gitId":"JiaXinEu"},"content":" Todo t \u003d new Todo(\"read\");","lastModifiedDate":"2024-01-30"},{"lineNumber":101,"author":{"gitId":"JiaXinEu"},"content":" arr.add(t);","lastModifiedDate":"2024-01-30"},{"lineNumber":102,"author":{"gitId":"JiaXinEu"},"content":" TaskList list \u003d new TaskList(arr);","lastModifiedDate":"2024-01-30"},{"lineNumber":103,"author":{"gitId":"JiaXinEu"},"content":" assertEquals(\"\\t Here are the tasks in your list:\\n\\t\\t 1.\" + t.printTask(), list.print());","lastModifiedDate":"2024-01-30"},{"lineNumber":104,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":105,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":106,"author":{"gitId":"JiaXinEu"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":107,"author":{"gitId":"JiaXinEu"},"content":" public void print_emptyList_printHeading() {","lastModifiedDate":"2024-01-30"},{"lineNumber":108,"author":{"gitId":"JiaXinEu"},"content":" TaskList list \u003d new TaskList();","lastModifiedDate":"2024-01-30"},{"lineNumber":109,"author":{"gitId":"JiaXinEu"},"content":" assertEquals(\"\\t No task in list.\", list.print());","lastModifiedDate":"2024-01-30"},{"lineNumber":110,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":111,"author":{"gitId":"JiaXinEu"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"JiaXinEu":111}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"JiaXinEu"},"content":"list","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"JiaXinEu"},"content":"todo read book","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"JiaXinEu"},"content":"mark 1","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"JiaXinEu"},"content":"deadline return book","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"JiaXinEu"},"content":"deadline return book /by 06-06-2023 12:00","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"JiaXinEu"},"content":"deadline submit /by 01/1/2023","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"JiaXinEu"},"content":"event project meeting /from 12-03-2024 14:00 /to 12-03-2024 15:00","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"JiaXinEu"},"content":"todo join sports club","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"JiaXinEu"},"content":"mark 4","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"JiaXinEu"},"content":"list","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"JiaXinEu"},"content":"unmark 4","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"JiaXinEu"},"content":"list","lastModifiedDate":"2024-01-22"},{"lineNumber":13,"author":{"gitId":"JiaXinEu"},"content":"mark 5","lastModifiedDate":"2024-01-22"},{"lineNumber":14,"author":{"gitId":"JiaXinEu"},"content":"delete 1","lastModifiedDate":"2024-01-22"},{"lineNumber":15,"author":{"gitId":"JiaXinEu"},"content":"hi","lastModifiedDate":"2024-01-22"},{"lineNumber":16,"author":{"gitId":"JiaXinEu"},"content":"bye","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"JiaXinEu":16}},{"path":"text-ui-test/runtest.bat","fileType":"bat","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@ECHO OFF","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"REM create bin directory if it doesn\u0027t exist","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"if not exist ..\\bin mkdir ..\\bin","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"REM delete output from previous run","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"if exist ACTUAL.TXT del ACTUAL.TXT","lastModifiedDate":"2020-08-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"JiaXinEu"},"content":"REM delete saved file from previous run","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"JiaXinEu"},"content":"rmdir /s /q .\\data","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":12,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":13,"author":{"gitId":"-"},"content":"REM compile the code into the bin folder","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"JiaXinEu"},"content":"javac -cp ..\\src\\main\\java -Xlint:none -d ..\\bin ..\\src\\main\\java\\duke\\*.java","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"-"},"content":"IF ERRORLEVEL 1 (","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":" echo ********** BUILD FAILURE **********","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":" exit /b 1","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":")","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":"REM no error here, errorlevel \u003d\u003d 0","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"REM run the program, feed commands from input.txt file and redirect the output to the ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"JiaXinEu"},"content":"java -classpath ..\\bin duke.Duke \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":"REM compare the output to the expected output","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":"FC ACTUAL.TXT EXPECTED.TXT","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"JiaXinEu":6,"-":19}}] diff --git a/JiaXinEu_ip_master/commits.json b/JiaXinEu_ip_master/commits.json index 05e3f85a..3645e0b4 100644 --- a/JiaXinEu_ip_master/commits.json +++ b/JiaXinEu_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"JiaXinEu":[{"date":"2024-01-21","commitResults":[{"hash":"21f384f9a0c2769ed31577c5612b4df221382a7d","isMergeCommit":false,"messageTitle":"Rename, greet, exit","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":9,"deletions":6}}},{"hash":"616148053b98df69c0eaaf464230a590bf8e3ed8","isMergeCommit":false,"messageTitle":"Add feature to echo command and exit when input bye","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":23,"deletions":7}}},{"hash":"04346c548e6e5a56bd8e2c38831a5dd85362e7ad","isMergeCommit":false,"messageTitle":"Add list to store and display text","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":17,"deletions":2}}},{"hash":"0424a8d75ded333a05043593022ce8586fee1a3f","isMergeCommit":false,"messageTitle":"Add class Task to support mark task as done or not done","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":49,"deletions":9}}},{"hash":"a5f4ef51fd195367fd9f775d5a3e9840fcaf4cb5","isMergeCommit":false,"messageTitle":"Add subclasses Todo, Deadline, Event to support 3 types of tasks","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":77,"deletions":20}}}]},{"date":"2024-01-22","commitResults":[{"hash":"a7b382bd3ef711e63486e5a434959d884c0acc11","isMergeCommit":false,"messageTitle":"Add input.txt and EXPECTED.txt for semi-automated testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":11,"deletions":0},"java":{"insertions":3,"deletions":3}}},{"hash":"97c37bd4a51235fcf64a145f40cd96707f9616e7","isMergeCommit":false,"messageTitle":"Add error handling mechanisms to Duke.java","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":0},"java":{"insertions":66,"deletions":28}}},{"hash":"3107a71934afb6aaa3611e6e946937cb4a482374","isMergeCommit":false,"messageTitle":"Add feature to delete task","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":0},"java":{"insertions":24,"deletions":4}}}]},{"date":"2024-01-23","commitResults":[{"hash":"6739ff73aa6d4af3799191726bdf57645473cd97","isMergeCommit":false,"messageTitle":"Add enum to handle input type","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":127,"deletions":61}}}]},{"date":"2024-01-26","commitResults":[{"hash":"641ba348e75631a9e2785f4f51ec5fc9a1ffb37f","isMergeCommit":false,"messageTitle":"Update Duke.java to save to hard disk","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":198,"deletions":86}}},{"hash":"48a1d64ddd4788504aa1238410595d57fb4b3522","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}},{"hash":"f701ce400f7ab0bd009fa3c410fe0871f2a8a962","isMergeCommit":false,"messageTitle":"Modify runtest.bat","messageBody":"","fileTypesAndContributionMap":{"bat":{"insertions":4,"deletions":0}}}]},{"date":"2024-01-28","commitResults":[{"hash":"b27fb1ab1512e49553890c3f8876a93fb05213ba","isMergeCommit":false,"messageTitle":"Modify type of datetime in Deadline.java and Event.java","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":2},"java":{"insertions":66,"deletions":16}}},{"hash":"debf6d1c3f2e1003c49c11dd099a55a76229b0a3","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}}]},{"date":"2024-01-29","commitResults":[{"hash":"6644835cf1aae1554e39ee2338baf2ef0c6b47fe","isMergeCommit":false,"messageTitle":"Add classes and DukeException.java","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{"java":{"insertions":743,"deletions":296}}}]}]},"authorFileTypeContributionMap":{"JiaXinEu":{"java":870,"md":0,"fxml":0,"sh":0,"bat":4,"gradle":0,"txt":16}},"authorContributionVariance":{"JiaXinEu":83920.43},"authorDisplayNameMap":{"JiaXinEu":"CS2103T-T09-1 EU J.. XIN"}} +{"authorDailyContributionsMap":{"JiaXinEu":[{"date":"2024-01-21","commitResults":[{"hash":"21f384f9a0c2769ed31577c5612b4df221382a7d","isMergeCommit":false,"messageTitle":"Rename, greet, exit","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":9,"deletions":6}}},{"hash":"616148053b98df69c0eaaf464230a590bf8e3ed8","isMergeCommit":false,"messageTitle":"Add feature to echo command and exit when input bye","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":23,"deletions":7}}},{"hash":"04346c548e6e5a56bd8e2c38831a5dd85362e7ad","isMergeCommit":false,"messageTitle":"Add list to store and display text","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":17,"deletions":2}}},{"hash":"0424a8d75ded333a05043593022ce8586fee1a3f","isMergeCommit":false,"messageTitle":"Add class Task to support mark task as done or not done","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":49,"deletions":9}}},{"hash":"a5f4ef51fd195367fd9f775d5a3e9840fcaf4cb5","isMergeCommit":false,"messageTitle":"Add subclasses Todo, Deadline, Event to support 3 types of tasks","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":77,"deletions":20}}}]},{"date":"2024-01-22","commitResults":[{"hash":"a7b382bd3ef711e63486e5a434959d884c0acc11","isMergeCommit":false,"messageTitle":"Add input.txt and EXPECTED.txt for semi-automated testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":11,"deletions":0},"java":{"insertions":3,"deletions":3}}},{"hash":"97c37bd4a51235fcf64a145f40cd96707f9616e7","isMergeCommit":false,"messageTitle":"Add error handling mechanisms to Duke.java","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":0},"java":{"insertions":66,"deletions":28}}},{"hash":"3107a71934afb6aaa3611e6e946937cb4a482374","isMergeCommit":false,"messageTitle":"Add feature to delete task","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":0},"java":{"insertions":24,"deletions":4}}}]},{"date":"2024-01-23","commitResults":[{"hash":"6739ff73aa6d4af3799191726bdf57645473cd97","isMergeCommit":false,"messageTitle":"Add enum to handle input type","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":127,"deletions":61}}}]},{"date":"2024-01-26","commitResults":[{"hash":"641ba348e75631a9e2785f4f51ec5fc9a1ffb37f","isMergeCommit":false,"messageTitle":"Update Duke.java to save to hard disk","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":198,"deletions":86}}},{"hash":"48a1d64ddd4788504aa1238410595d57fb4b3522","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}},{"hash":"f701ce400f7ab0bd009fa3c410fe0871f2a8a962","isMergeCommit":false,"messageTitle":"Modify runtest.bat","messageBody":"","fileTypesAndContributionMap":{"bat":{"insertions":4,"deletions":0}}}]},{"date":"2024-01-28","commitResults":[{"hash":"b27fb1ab1512e49553890c3f8876a93fb05213ba","isMergeCommit":false,"messageTitle":"Modify type of datetime in Deadline.java and Event.java","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":2},"java":{"insertions":66,"deletions":16}}},{"hash":"debf6d1c3f2e1003c49c11dd099a55a76229b0a3","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}}]},{"date":"2024-01-29","commitResults":[{"hash":"6644835cf1aae1554e39ee2338baf2ef0c6b47fe","isMergeCommit":false,"messageTitle":"Add classes and DukeException.java","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{"java":{"insertions":743,"deletions":296}}}]},{"date":"2024-01-30","commitResults":[{"hash":"eeb568a5b46ebbd64256e035e9b87d250d58a6a7","isMergeCommit":false,"messageTitle":"Move classes into packages","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":168,"deletions":220},"bat":{"insertions":2,"deletions":2},"md":{"insertions":2,"deletions":2}}},{"hash":"39a4d5518175c0adad469a546050eded83432dd3","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-Packages\u0027","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{}},{"hash":"b5a0891b1172db2115abed0d36d67ef103e88832","isMergeCommit":true,"messageTitle":"Merge branch \u0027add-gradle-support\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"33a887513f98f0630d1f258fd89e2f1677adb00f","isMergeCommit":false,"messageTitle":"Modify mainClass in build.gradle","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":1},"md":{"insertions":1,"deletions":1}}},{"hash":"6838f29f6da99f0db1b9e1486c7a820deb0e5610","isMergeCommit":false,"messageTitle":"Add test folder for JUnit testing","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":508,"deletions":2}}},{"hash":"db67256ec758262faafa5dfe753b44ad7e07608a","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-JUnit\u0027","messageBody":"","tags":["A-JUnit"],"fileTypesAndContributionMap":{}},{"hash":"96b3b70111ec08ff01fa63fbad07a7ada5b7aeca","isMergeCommit":false,"messageTitle":"Update details of shadowJar","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":0}}},{"hash":"8ca4b357290c14d7075cb5c16b032f90d6f23bd4","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-Jar\u0027","messageBody":"","tags":["v0.1","A-Jar"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"JiaXinEu":{"java":1328,"md":1,"fxml":0,"sh":0,"bat":6,"gradle":2,"txt":16}},"authorContributionVariance":{"JiaXinEu":117908.914},"authorDisplayNameMap":{"JiaXinEu":"CS2103T-T09-1 EU J.. XIN"}} diff --git a/LifHoshi_ip_master/authorship.json b/LifHoshi_ip_master/authorship.json index ab966073..0f5e1355 100644 --- a/LifHoshi_ip_master/authorship.json +++ b/LifHoshi_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"src/main/java/ChatBotTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"LifHoshi"},"content":"import java.sql.SQLOutput;","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"LifHoshi"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"LifHoshi"},"content":"public class ChatBotTest {","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"LifHoshi"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"LifHoshi"},"content":" Ping p \u003d new Ping();","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"LifHoshi"},"content":" String name \u003d p.name;","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"LifHoshi"},"content":" // The Welcome Part","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"LifHoshi"},"content":" System.out.println(\"Hello! I\u0027m \"+name+","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"LifHoshi"},"content":" \"\\nWhat can I do for you?\");","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"LifHoshi"},"content":" // The Scanner Part","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"LifHoshi"},"content":" Scanner sc \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"LifHoshi"},"content":" while (true) {","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"LifHoshi"},"content":" String commands \u003d sc.nextLine();","lastModifiedDate":"2024-01-23"},{"lineNumber":17,"author":{"gitId":"LifHoshi"},"content":" if (commands.equals(\"bye\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":18,"author":{"gitId":"LifHoshi"},"content":" p.goodBye();","lastModifiedDate":"2024-01-23"},{"lineNumber":19,"author":{"gitId":"LifHoshi"},"content":" break;","lastModifiedDate":"2024-01-23"},{"lineNumber":20,"author":{"gitId":"LifHoshi"},"content":" } else if (commands.equals(\"blah\")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"LifHoshi"},"content":" System.out.println(\"haha, that\u0027s humorous\");","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"LifHoshi"},"content":" else if (commands.equals(\"list\")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"LifHoshi"},"content":" p.listTasks();","lastModifiedDate":"2024-01-24"},{"lineNumber":25,"author":{"gitId":"LifHoshi"},"content":" } else if (commands.indexOf(\"delete\") \u003d\u003d 0) {","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"LifHoshi"},"content":" String[] delCommand \u003d commands.split(\" \");","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"LifHoshi"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":28,"author":{"gitId":"LifHoshi"},"content":" int i \u003d Integer.parseInt(delCommand[1]) - 1;","lastModifiedDate":"2024-01-25"},{"lineNumber":29,"author":{"gitId":"LifHoshi"},"content":" p.delete(i);","lastModifiedDate":"2024-01-25"},{"lineNumber":30,"author":{"gitId":"LifHoshi"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":31,"author":{"gitId":"LifHoshi"},"content":" System.out.println(\"Incorrect number or command\");","lastModifiedDate":"2024-01-25"},{"lineNumber":32,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":33,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":34,"author":{"gitId":"LifHoshi"},"content":" else if (commands.indexOf(\"mark\") \u003d\u003d 0) {","lastModifiedDate":"2024-01-25"},{"lineNumber":35,"author":{"gitId":"LifHoshi"},"content":" String[] markCommand \u003d commands.split(\" \");","lastModifiedDate":"2024-01-24"},{"lineNumber":36,"author":{"gitId":"LifHoshi"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":37,"author":{"gitId":"LifHoshi"},"content":" int i \u003d Integer.parseInt(markCommand[1]) - 1;","lastModifiedDate":"2024-01-24"},{"lineNumber":38,"author":{"gitId":"LifHoshi"},"content":" p.markJobs(p.tasks.get(i));","lastModifiedDate":"2024-01-24"},{"lineNumber":39,"author":{"gitId":"LifHoshi"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":40,"author":{"gitId":"LifHoshi"},"content":" System.out.println(\"Incorrect number or command\");","lastModifiedDate":"2024-01-24"},{"lineNumber":41,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":42,"author":{"gitId":"LifHoshi"},"content":" } else if (commands.indexOf(\"unmark\") \u003d\u003d 0) {","lastModifiedDate":"2024-01-24"},{"lineNumber":43,"author":{"gitId":"LifHoshi"},"content":" String[] unmarkCommand \u003d commands.split(\" \");","lastModifiedDate":"2024-01-24"},{"lineNumber":44,"author":{"gitId":"LifHoshi"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":45,"author":{"gitId":"LifHoshi"},"content":" int i \u003d Integer.parseInt(unmarkCommand[1]) - 1;","lastModifiedDate":"2024-01-24"},{"lineNumber":46,"author":{"gitId":"LifHoshi"},"content":" p.unMarkJobs(p.tasks.get(i));","lastModifiedDate":"2024-01-24"},{"lineNumber":47,"author":{"gitId":"LifHoshi"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":48,"author":{"gitId":"LifHoshi"},"content":" System.out.println(\"Incorrect number or command\");","lastModifiedDate":"2024-01-24"},{"lineNumber":49,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":50,"author":{"gitId":"LifHoshi"},"content":" } else if (commands.indexOf(\"todo\") \u003d\u003d 0) {","lastModifiedDate":"2024-01-24"},{"lineNumber":51,"author":{"gitId":"LifHoshi"},"content":" String[] todoCommand \u003d commands.split(\" \");","lastModifiedDate":"2024-01-24"},{"lineNumber":52,"author":{"gitId":"LifHoshi"},"content":" String rest \u003d \"\";","lastModifiedDate":"2024-01-24"},{"lineNumber":53,"author":{"gitId":"LifHoshi"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":54,"author":{"gitId":"LifHoshi"},"content":" for (int i \u003d 1; i \u003c todoCommand.length; i++) {","lastModifiedDate":"2024-01-24"},{"lineNumber":55,"author":{"gitId":"LifHoshi"},"content":" rest \u003d rest + todoCommand[i] + \" \";","lastModifiedDate":"2024-01-24"},{"lineNumber":56,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":57,"author":{"gitId":"LifHoshi"},"content":" Todo j \u003d new Todo(rest);","lastModifiedDate":"2024-01-24"},{"lineNumber":58,"author":{"gitId":"LifHoshi"},"content":" if (rest.length() \u003e 0) {","lastModifiedDate":"2024-01-24"},{"lineNumber":59,"author":{"gitId":"LifHoshi"},"content":" p.todoJobs(j);","lastModifiedDate":"2024-01-24"},{"lineNumber":60,"author":{"gitId":"LifHoshi"},"content":" } else {","lastModifiedDate":"2024-01-25"},{"lineNumber":61,"author":{"gitId":"LifHoshi"},"content":" System.out.println(\"Todo what? you can\u0027t to do nothing right?\");","lastModifiedDate":"2024-01-25"},{"lineNumber":62,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":63,"author":{"gitId":"LifHoshi"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":64,"author":{"gitId":"LifHoshi"},"content":" System.out.println(\"Incorrect number or command\");","lastModifiedDate":"2024-01-24"},{"lineNumber":65,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":66,"author":{"gitId":"LifHoshi"},"content":" } else if (commands.indexOf(\"deadline\") \u003d\u003d 0) {","lastModifiedDate":"2024-01-24"},{"lineNumber":67,"author":{"gitId":"LifHoshi"},"content":" String[] dlCommand \u003d commands.split(\" \");","lastModifiedDate":"2024-01-24"},{"lineNumber":68,"author":{"gitId":"LifHoshi"},"content":" String rest \u003d \"\";","lastModifiedDate":"2024-01-24"},{"lineNumber":69,"author":{"gitId":"LifHoshi"},"content":" String date \u003d \"\";","lastModifiedDate":"2024-01-24"},{"lineNumber":70,"author":{"gitId":"LifHoshi"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":71,"author":{"gitId":"LifHoshi"},"content":" int idx \u003d 0;","lastModifiedDate":"2024-01-24"},{"lineNumber":72,"author":{"gitId":"LifHoshi"},"content":" for (int i \u003d 1; i \u003c dlCommand.length; i++) {","lastModifiedDate":"2024-01-24"},{"lineNumber":73,"author":{"gitId":"LifHoshi"},"content":" if (dlCommand[i].equals(\"/by\")) {","lastModifiedDate":"2024-01-24"},{"lineNumber":74,"author":{"gitId":"LifHoshi"},"content":" idx \u003d i;","lastModifiedDate":"2024-01-24"},{"lineNumber":75,"author":{"gitId":"LifHoshi"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":76,"author":{"gitId":"LifHoshi"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":77,"author":{"gitId":"LifHoshi"},"content":" rest \u003d rest + dlCommand[i] + \" \";","lastModifiedDate":"2024-01-24"},{"lineNumber":78,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":79,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":80,"author":{"gitId":"LifHoshi"},"content":" // Check for weekdays or month","lastModifiedDate":"2024-01-24"},{"lineNumber":81,"author":{"gitId":"LifHoshi"},"content":" int check \u003d idx + 1;","lastModifiedDate":"2024-01-24"},{"lineNumber":82,"author":{"gitId":"LifHoshi"},"content":" for (int j \u003d idx + 1; j \u003c dlCommand.length; j++) {","lastModifiedDate":"2024-01-24"},{"lineNumber":83,"author":{"gitId":"LifHoshi"},"content":" if (check !\u003d dlCommand.length - 1) {","lastModifiedDate":"2024-01-24"},{"lineNumber":84,"author":{"gitId":"LifHoshi"},"content":" date \u003d date + dlCommand[j] + \" \";","lastModifiedDate":"2024-01-24"},{"lineNumber":85,"author":{"gitId":"LifHoshi"},"content":" check++;","lastModifiedDate":"2024-01-24"},{"lineNumber":86,"author":{"gitId":"LifHoshi"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":87,"author":{"gitId":"LifHoshi"},"content":" date \u003d date + dlCommand[j];","lastModifiedDate":"2024-01-24"},{"lineNumber":88,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":89,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":90,"author":{"gitId":"LifHoshi"},"content":" Deadline dl \u003d new Deadline(rest, date);","lastModifiedDate":"2024-01-24"},{"lineNumber":91,"author":{"gitId":"LifHoshi"},"content":" if (rest.length() \u003e 0) {","lastModifiedDate":"2024-01-24"},{"lineNumber":92,"author":{"gitId":"LifHoshi"},"content":" p.dlJobs(dl);","lastModifiedDate":"2024-01-24"},{"lineNumber":93,"author":{"gitId":"LifHoshi"},"content":" } else {","lastModifiedDate":"2024-01-25"},{"lineNumber":94,"author":{"gitId":"LifHoshi"},"content":" System.out.println(\"deadline? what thing make you so hurry that even dont tell me?\");","lastModifiedDate":"2024-01-25"},{"lineNumber":95,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":96,"author":{"gitId":"LifHoshi"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":97,"author":{"gitId":"LifHoshi"},"content":" System.out.println(\"Incorrect number or command\");","lastModifiedDate":"2024-01-24"},{"lineNumber":98,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":99,"author":{"gitId":"LifHoshi"},"content":" } else if (commands.indexOf(\"event\") \u003d\u003d 0) {","lastModifiedDate":"2024-01-24"},{"lineNumber":100,"author":{"gitId":"LifHoshi"},"content":" String[] evCommand \u003d commands.split(\" \");","lastModifiedDate":"2024-01-24"},{"lineNumber":101,"author":{"gitId":"LifHoshi"},"content":" String rest \u003d \"\";","lastModifiedDate":"2024-01-24"},{"lineNumber":102,"author":{"gitId":"LifHoshi"},"content":" String date1 \u003d \"\";","lastModifiedDate":"2024-01-24"},{"lineNumber":103,"author":{"gitId":"LifHoshi"},"content":" String date2 \u003d \"\";","lastModifiedDate":"2024-01-24"},{"lineNumber":104,"author":{"gitId":"LifHoshi"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":105,"author":{"gitId":"LifHoshi"},"content":" int idx \u003d 0;","lastModifiedDate":"2024-01-24"},{"lineNumber":106,"author":{"gitId":"LifHoshi"},"content":" for (int i \u003d 1; i \u003c evCommand.length; i++) {","lastModifiedDate":"2024-01-24"},{"lineNumber":107,"author":{"gitId":"LifHoshi"},"content":" if (evCommand[i].equals(\"/from\")) {","lastModifiedDate":"2024-01-24"},{"lineNumber":108,"author":{"gitId":"LifHoshi"},"content":" idx \u003d i;","lastModifiedDate":"2024-01-24"},{"lineNumber":109,"author":{"gitId":"LifHoshi"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":110,"author":{"gitId":"LifHoshi"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":111,"author":{"gitId":"LifHoshi"},"content":" rest \u003d rest + evCommand[i] + \" \";","lastModifiedDate":"2024-01-24"},{"lineNumber":112,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":113,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":114,"author":{"gitId":"LifHoshi"},"content":" int idx2 \u003d 0;","lastModifiedDate":"2024-01-24"},{"lineNumber":115,"author":{"gitId":"LifHoshi"},"content":" for (int j \u003d idx + 1; j \u003c evCommand.length; j++) {","lastModifiedDate":"2024-01-24"},{"lineNumber":116,"author":{"gitId":"LifHoshi"},"content":" if (evCommand[j].equals(\"/to\")) {","lastModifiedDate":"2024-01-24"},{"lineNumber":117,"author":{"gitId":"LifHoshi"},"content":" idx2 \u003d j;","lastModifiedDate":"2024-01-24"},{"lineNumber":118,"author":{"gitId":"LifHoshi"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":119,"author":{"gitId":"LifHoshi"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":120,"author":{"gitId":"LifHoshi"},"content":" date1 \u003d date1 + evCommand[j] + \" \";","lastModifiedDate":"2024-01-24"},{"lineNumber":121,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":122,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":123,"author":{"gitId":"LifHoshi"},"content":" int check \u003d idx2 + 1;","lastModifiedDate":"2024-01-24"},{"lineNumber":124,"author":{"gitId":"LifHoshi"},"content":" for (int k \u003d idx2 + 1; k \u003c evCommand.length; k++) {","lastModifiedDate":"2024-01-24"},{"lineNumber":125,"author":{"gitId":"LifHoshi"},"content":" if (check !\u003d evCommand.length - 1) {","lastModifiedDate":"2024-01-24"},{"lineNumber":126,"author":{"gitId":"LifHoshi"},"content":" date2 \u003d date2 + evCommand[k] + \" \";","lastModifiedDate":"2024-01-24"},{"lineNumber":127,"author":{"gitId":"LifHoshi"},"content":" check++;","lastModifiedDate":"2024-01-24"},{"lineNumber":128,"author":{"gitId":"LifHoshi"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":129,"author":{"gitId":"LifHoshi"},"content":" date2 \u003d date2 + evCommand[k];","lastModifiedDate":"2024-01-24"},{"lineNumber":130,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":131,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":132,"author":{"gitId":"LifHoshi"},"content":" Event e \u003d new Event(rest, date1, date2);","lastModifiedDate":"2024-01-24"},{"lineNumber":133,"author":{"gitId":"LifHoshi"},"content":" if (rest.length() \u003e 0) {","lastModifiedDate":"2024-01-24"},{"lineNumber":134,"author":{"gitId":"LifHoshi"},"content":" p.evJobs(e);","lastModifiedDate":"2024-01-24"},{"lineNumber":135,"author":{"gitId":"LifHoshi"},"content":" } else {","lastModifiedDate":"2024-01-25"},{"lineNumber":136,"author":{"gitId":"LifHoshi"},"content":" System.out.println(\"event what? I need a thing!\");","lastModifiedDate":"2024-01-25"},{"lineNumber":137,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":138,"author":{"gitId":"LifHoshi"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":139,"author":{"gitId":"LifHoshi"},"content":" System.out.println(\"Incorrect number or command\");","lastModifiedDate":"2024-01-24"},{"lineNumber":140,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":141,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":142,"author":{"gitId":"LifHoshi"},"content":" else {","lastModifiedDate":"2024-01-24"},{"lineNumber":143,"author":{"gitId":"LifHoshi"},"content":" Task t \u003d new Task(commands);","lastModifiedDate":"2024-01-24"},{"lineNumber":144,"author":{"gitId":"LifHoshi"},"content":" p.addTask(t);","lastModifiedDate":"2024-01-24"},{"lineNumber":145,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":146,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":147,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":148,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":149,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":150,"author":{"gitId":"LifHoshi"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"LifHoshi":150}},{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"LifHoshi"},"content":"//// Solution below adapted by week2 iP Level-3 Partial solution","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"LifHoshi"},"content":"public class Deadline extends Task{","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"LifHoshi"},"content":" protected String by;","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"LifHoshi"},"content":" public Deadline(String destription, String by){","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"LifHoshi"},"content":" super(destription);","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"LifHoshi"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"LifHoshi"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"LifHoshi"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"LifHoshi"},"content":" return \"[D]\" + super.toString() + \"(by: \" + this.by + \")\";","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"LifHoshi"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"LifHoshi":14}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"LifHoshi"},"content":"//// Solution below adapted by week2 iP Level-3 Partial solution","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"LifHoshi"},"content":"public class Event extends Task{","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"LifHoshi"},"content":" protected String from;","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"LifHoshi"},"content":" protected String to;","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"LifHoshi"},"content":" public Event(String destription, String from, String to) {","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"LifHoshi"},"content":" super(destription);","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"LifHoshi"},"content":" this.from \u003d from;","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"LifHoshi"},"content":" this.to \u003d to;","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"LifHoshi"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"LifHoshi"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"LifHoshi"},"content":" return \"[E]\" + super.toString() + \"(from: \" + this.from + \"to: \" + this.to + \")\";","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"LifHoshi"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"LifHoshi":16}},{"path":"src/main/java/Ping.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"LifHoshi"},"content":"import java.sql.SQLOutput;","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"LifHoshi"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"LifHoshi"},"content":"public class Ping {","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"LifHoshi"},"content":" final String name \u003d \"Ping\";","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"LifHoshi"},"content":" protected ArrayList\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"LifHoshi"},"content":" public void addTask(Task i) {","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"LifHoshi"},"content":" tasks.add(i);","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"LifHoshi"},"content":" System.out.println(\"added: \" + i.description);","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"LifHoshi"},"content":" public void listTasks() {","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"LifHoshi"},"content":" if (tasks.isEmpty()) {","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"LifHoshi"},"content":" System.out.println(\"No ability added yet\");","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"LifHoshi"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"LifHoshi"},"content":" for (int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"LifHoshi"},"content":" int idx \u003d i + 1;","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"LifHoshi"},"content":" //System.out.printf(\"%d. \" + tasks.get(i).description + \"%n\", idx);","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"LifHoshi"},"content":" if (tasks.get(i).isDone) {","lastModifiedDate":"2024-01-24"},{"lineNumber":23,"author":{"gitId":"LifHoshi"},"content":" System.out.printf(\"%d.\" + tasks.get((i)).toString() + \"%n\", idx);","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"LifHoshi"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":25,"author":{"gitId":"LifHoshi"},"content":" System.out.printf(\"%d.\" + tasks.get(i).toString() + \"%n\", idx);","lastModifiedDate":"2024-01-24"},{"lineNumber":26,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":27,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":28,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":29,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":30,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":31,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":32,"author":{"gitId":"LifHoshi"},"content":" public void markJobs(Task i) {","lastModifiedDate":"2024-01-24"},{"lineNumber":33,"author":{"gitId":"LifHoshi"},"content":" System.out.println(\"Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2024-01-24"},{"lineNumber":34,"author":{"gitId":"LifHoshi"},"content":" i.isDone \u003d true;","lastModifiedDate":"2024-01-24"},{"lineNumber":35,"author":{"gitId":"LifHoshi"},"content":" System.out.println(i.toString());","lastModifiedDate":"2024-01-24"},{"lineNumber":36,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":37,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":38,"author":{"gitId":"LifHoshi"},"content":" public void unMarkJobs(Task i) {","lastModifiedDate":"2024-01-24"},{"lineNumber":39,"author":{"gitId":"LifHoshi"},"content":" System.out.println(\"OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2024-01-24"},{"lineNumber":40,"author":{"gitId":"LifHoshi"},"content":" i.isDone \u003d false;","lastModifiedDate":"2024-01-24"},{"lineNumber":41,"author":{"gitId":"LifHoshi"},"content":" System.out.println(i.toString());","lastModifiedDate":"2024-01-24"},{"lineNumber":42,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":43,"author":{"gitId":"LifHoshi"},"content":" public void goodBye() {","lastModifiedDate":"2024-01-23"},{"lineNumber":44,"author":{"gitId":"LifHoshi"},"content":" System.out.println(\"Bye. Hope to see you again soon!\");","lastModifiedDate":"2024-01-23"},{"lineNumber":45,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":46,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":47,"author":{"gitId":"LifHoshi"},"content":" public void todoJobs(Todo i) {","lastModifiedDate":"2024-01-24"},{"lineNumber":48,"author":{"gitId":"LifHoshi"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2024-01-24"},{"lineNumber":49,"author":{"gitId":"LifHoshi"},"content":" tasks.add(i);","lastModifiedDate":"2024-01-24"},{"lineNumber":50,"author":{"gitId":"LifHoshi"},"content":" System.out.println(i.toString());","lastModifiedDate":"2024-01-24"},{"lineNumber":51,"author":{"gitId":"LifHoshi"},"content":" int numOfWork \u003d tasks.size();","lastModifiedDate":"2024-01-24"},{"lineNumber":52,"author":{"gitId":"LifHoshi"},"content":" System.out.printf(\"Now you have %d tasks in the list.\" + \"%n\", numOfWork);","lastModifiedDate":"2024-01-24"},{"lineNumber":53,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":54,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":55,"author":{"gitId":"LifHoshi"},"content":" public void dlJobs(Deadline i) {","lastModifiedDate":"2024-01-24"},{"lineNumber":56,"author":{"gitId":"LifHoshi"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2024-01-24"},{"lineNumber":57,"author":{"gitId":"LifHoshi"},"content":" tasks.add(i);","lastModifiedDate":"2024-01-24"},{"lineNumber":58,"author":{"gitId":"LifHoshi"},"content":" System.out.println(i.toString());","lastModifiedDate":"2024-01-24"},{"lineNumber":59,"author":{"gitId":"LifHoshi"},"content":" int numOfWork \u003d tasks.size();","lastModifiedDate":"2024-01-24"},{"lineNumber":60,"author":{"gitId":"LifHoshi"},"content":" System.out.printf(\"Now you have %d tasks in the list.\" + \"%n\", numOfWork);","lastModifiedDate":"2024-01-24"},{"lineNumber":61,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":62,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":63,"author":{"gitId":"LifHoshi"},"content":" public void evJobs(Event i) {","lastModifiedDate":"2024-01-24"},{"lineNumber":64,"author":{"gitId":"LifHoshi"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2024-01-24"},{"lineNumber":65,"author":{"gitId":"LifHoshi"},"content":" tasks.add(i);","lastModifiedDate":"2024-01-24"},{"lineNumber":66,"author":{"gitId":"LifHoshi"},"content":" System.out.println(i.toString());","lastModifiedDate":"2024-01-24"},{"lineNumber":67,"author":{"gitId":"LifHoshi"},"content":" int numOfWork \u003d tasks.size();","lastModifiedDate":"2024-01-24"},{"lineNumber":68,"author":{"gitId":"LifHoshi"},"content":" System.out.printf(\"Now you have %d tasks in the list.\" + \"%n\", numOfWork);","lastModifiedDate":"2024-01-24"},{"lineNumber":69,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":70,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":71,"author":{"gitId":"LifHoshi"},"content":" public void delete(int i) {","lastModifiedDate":"2024-01-25"},{"lineNumber":72,"author":{"gitId":"LifHoshi"},"content":" System.out.println(\"Noted. I\u0027ve removed this task:\");","lastModifiedDate":"2024-01-25"},{"lineNumber":73,"author":{"gitId":"LifHoshi"},"content":" System.out.println(tasks.get(i).toString());","lastModifiedDate":"2024-01-25"},{"lineNumber":74,"author":{"gitId":"LifHoshi"},"content":" tasks.remove(i);","lastModifiedDate":"2024-01-25"},{"lineNumber":75,"author":{"gitId":"LifHoshi"},"content":" int numOfWork \u003d tasks.size();","lastModifiedDate":"2024-01-25"},{"lineNumber":76,"author":{"gitId":"LifHoshi"},"content":" System.out.printf(\"Now you have %d tasks in the list.\" + \"%n\", numOfWork);","lastModifiedDate":"2024-01-25"},{"lineNumber":77,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":78,"author":{"gitId":"LifHoshi"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"LifHoshi":78}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"LifHoshi"},"content":"// Solution below adapted by week2 iP Level-3 Partial solution","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"LifHoshi"},"content":"public class Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"LifHoshi"},"content":" protected String description;","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"LifHoshi"},"content":" protected boolean isDone;","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"LifHoshi"},"content":" public Task(String description) {","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"LifHoshi"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"LifHoshi"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"LifHoshi"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"LifHoshi"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"LifHoshi"},"content":" if (isDone) {","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"LifHoshi"},"content":" return \"[X] \" + description;","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"LifHoshi"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"LifHoshi"},"content":" return \"[ ] \" + description;","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"LifHoshi"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"LifHoshi":19}},{"path":"src/main/java/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"LifHoshi"},"content":"//// Solution below adapted by week2 iP Level-3 Partial solution","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"LifHoshi"},"content":"public class Todo extends Task{","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"LifHoshi"},"content":" public Todo(String description) {","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"LifHoshi"},"content":" super(description);","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"LifHoshi"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"LifHoshi"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"LifHoshi"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"LifHoshi"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"LifHoshi":11}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"LifHoshi"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"LifHoshi"},"content":"blah","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"LifHoshi"},"content":"read book","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"LifHoshi"},"content":"return book","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"LifHoshi"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"LifHoshi"},"content":"mark 2","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"LifHoshi"},"content":"deadline return book /by Sunday","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"LifHoshi"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"LifHoshi"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"LifHoshi"},"content":"bye","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"LifHoshi":10}},{"path":"text-ui-test/runtest.bat","fileType":"bat","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@ECHO OFF","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"REM create bin directory if it doesn\u0027t exist","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"if not exist ..\\bin mkdir ..\\bin","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"REM delete output from previous run","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"if exist ACTUAL.TXT del ACTUAL.TXT","lastModifiedDate":"2020-08-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"REM compile the code into the bin folder","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"javac -cp ..\\src\\main\\java -Xlint:none -d ..\\bin ..\\src\\main\\java\\*.java","lastModifiedDate":"2020-08-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"IF ERRORLEVEL 1 (","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":" echo ********** BUILD FAILURE **********","lastModifiedDate":"2020-05-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":" exit /b 1","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":")","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"REM no error here, errorlevel \u003d\u003d 0","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"REM run the program, feed commands from input.txt file and redirect the output to the ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"LifHoshi"},"content":"java -classpath ..\\bin ChatBotTest \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"REM compare the output to the expected output","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"FC ACTUAL.TXT EXPECTED.TXT","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"-":20,"LifHoshi":1}}] +[{"path":"src/main/java/ChatBotTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"LifHoshi"},"content":"import java.sql.SQLOutput;","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"LifHoshi"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"LifHoshi"},"content":"public class ChatBotTest {","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"LifHoshi"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"LifHoshi"},"content":" Ping p \u003d new Ping();","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"LifHoshi"},"content":" String name \u003d p.name;","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"LifHoshi"},"content":" p.tasks \u003d FileManage.loadFiles();","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"LifHoshi"},"content":" // The Welcome Part","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"LifHoshi"},"content":" System.out.println(\"Hello! I\u0027m \"+name+","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"LifHoshi"},"content":" \"\\nWhat can I do for you?\");","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"LifHoshi"},"content":" // The Scanner Part","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"LifHoshi"},"content":" Scanner sc \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"LifHoshi"},"content":" while (true) {","lastModifiedDate":"2024-01-23"},{"lineNumber":17,"author":{"gitId":"LifHoshi"},"content":" String commands \u003d sc.nextLine();","lastModifiedDate":"2024-01-23"},{"lineNumber":18,"author":{"gitId":"LifHoshi"},"content":" if (commands.equals(\"bye\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":19,"author":{"gitId":"LifHoshi"},"content":" p.goodBye();","lastModifiedDate":"2024-01-23"},{"lineNumber":20,"author":{"gitId":"LifHoshi"},"content":" break;","lastModifiedDate":"2024-01-23"},{"lineNumber":21,"author":{"gitId":"LifHoshi"},"content":" } else if (commands.equals(\"blah\")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"LifHoshi"},"content":" System.out.println(\"haha, that\u0027s humorous\");","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"LifHoshi"},"content":" else if (commands.equals(\"list\")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"LifHoshi"},"content":" p.listTasks();","lastModifiedDate":"2024-01-24"},{"lineNumber":26,"author":{"gitId":"LifHoshi"},"content":" } else if (commands.indexOf(\"delete\") \u003d\u003d 0) {","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"LifHoshi"},"content":" String[] delCommand \u003d commands.split(\" \");","lastModifiedDate":"2024-01-25"},{"lineNumber":28,"author":{"gitId":"LifHoshi"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":29,"author":{"gitId":"LifHoshi"},"content":" int i \u003d Integer.parseInt(delCommand[1]) - 1;","lastModifiedDate":"2024-01-25"},{"lineNumber":30,"author":{"gitId":"LifHoshi"},"content":" p.delete(i);","lastModifiedDate":"2024-01-25"},{"lineNumber":31,"author":{"gitId":"LifHoshi"},"content":" FileManage.saveFiles(p.tasks);","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"LifHoshi"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":33,"author":{"gitId":"LifHoshi"},"content":" System.out.println(\"Incorrect number or command\");","lastModifiedDate":"2024-01-25"},{"lineNumber":34,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":35,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":36,"author":{"gitId":"LifHoshi"},"content":" else if (commands.indexOf(\"mark\") \u003d\u003d 0) {","lastModifiedDate":"2024-01-25"},{"lineNumber":37,"author":{"gitId":"LifHoshi"},"content":" String[] markCommand \u003d commands.split(\" \");","lastModifiedDate":"2024-01-24"},{"lineNumber":38,"author":{"gitId":"LifHoshi"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":39,"author":{"gitId":"LifHoshi"},"content":" int i \u003d Integer.parseInt(markCommand[1]) - 1;","lastModifiedDate":"2024-01-24"},{"lineNumber":40,"author":{"gitId":"LifHoshi"},"content":" p.markJobs(p.tasks.get(i));","lastModifiedDate":"2024-01-24"},{"lineNumber":41,"author":{"gitId":"LifHoshi"},"content":" FileManage.saveFiles(p.tasks);","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"LifHoshi"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":43,"author":{"gitId":"LifHoshi"},"content":" System.out.println(\"Incorrect number or command\");","lastModifiedDate":"2024-01-24"},{"lineNumber":44,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":45,"author":{"gitId":"LifHoshi"},"content":" } else if (commands.indexOf(\"unmark\") \u003d\u003d 0) {","lastModifiedDate":"2024-01-24"},{"lineNumber":46,"author":{"gitId":"LifHoshi"},"content":" String[] unmarkCommand \u003d commands.split(\" \");","lastModifiedDate":"2024-01-24"},{"lineNumber":47,"author":{"gitId":"LifHoshi"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":48,"author":{"gitId":"LifHoshi"},"content":" int i \u003d Integer.parseInt(unmarkCommand[1]) - 1;","lastModifiedDate":"2024-01-24"},{"lineNumber":49,"author":{"gitId":"LifHoshi"},"content":" p.unMarkJobs(p.tasks.get(i));","lastModifiedDate":"2024-01-24"},{"lineNumber":50,"author":{"gitId":"LifHoshi"},"content":" FileManage.saveFiles(p.tasks);","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"LifHoshi"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":52,"author":{"gitId":"LifHoshi"},"content":" System.out.println(\"Incorrect number or command\");","lastModifiedDate":"2024-01-24"},{"lineNumber":53,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":54,"author":{"gitId":"LifHoshi"},"content":" } else if (commands.indexOf(\"todo\") \u003d\u003d 0) {","lastModifiedDate":"2024-01-24"},{"lineNumber":55,"author":{"gitId":"LifHoshi"},"content":" String[] todoCommand \u003d commands.split(\" \");","lastModifiedDate":"2024-01-24"},{"lineNumber":56,"author":{"gitId":"LifHoshi"},"content":" String rest \u003d \"\";","lastModifiedDate":"2024-01-24"},{"lineNumber":57,"author":{"gitId":"LifHoshi"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":58,"author":{"gitId":"LifHoshi"},"content":" for (int i \u003d 1; i \u003c todoCommand.length; i++) {","lastModifiedDate":"2024-01-24"},{"lineNumber":59,"author":{"gitId":"LifHoshi"},"content":" rest \u003d rest + todoCommand[i] + \" \";","lastModifiedDate":"2024-01-24"},{"lineNumber":60,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":61,"author":{"gitId":"LifHoshi"},"content":" Todo j \u003d new Todo(rest);","lastModifiedDate":"2024-01-24"},{"lineNumber":62,"author":{"gitId":"LifHoshi"},"content":" if (rest.length() \u003e 0) {","lastModifiedDate":"2024-01-24"},{"lineNumber":63,"author":{"gitId":"LifHoshi"},"content":" p.todoJobs(j);","lastModifiedDate":"2024-01-24"},{"lineNumber":64,"author":{"gitId":"LifHoshi"},"content":" FileManage.saveFiles(p.tasks);","lastModifiedDate":"2024-01-30"},{"lineNumber":65,"author":{"gitId":"LifHoshi"},"content":" } else {","lastModifiedDate":"2024-01-25"},{"lineNumber":66,"author":{"gitId":"LifHoshi"},"content":" System.out.println(\"Todo what? you can\u0027t to do nothing right?\");","lastModifiedDate":"2024-01-25"},{"lineNumber":67,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":68,"author":{"gitId":"LifHoshi"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":69,"author":{"gitId":"LifHoshi"},"content":" System.out.println(\"Incorrect number or command\");","lastModifiedDate":"2024-01-24"},{"lineNumber":70,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":71,"author":{"gitId":"LifHoshi"},"content":" } else if (commands.indexOf(\"deadline\") \u003d\u003d 0) {","lastModifiedDate":"2024-01-24"},{"lineNumber":72,"author":{"gitId":"LifHoshi"},"content":" String[] dlCommand \u003d commands.split(\" \");","lastModifiedDate":"2024-01-24"},{"lineNumber":73,"author":{"gitId":"LifHoshi"},"content":" String rest \u003d \"\";","lastModifiedDate":"2024-01-24"},{"lineNumber":74,"author":{"gitId":"LifHoshi"},"content":" String date \u003d \"\";","lastModifiedDate":"2024-01-24"},{"lineNumber":75,"author":{"gitId":"LifHoshi"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":76,"author":{"gitId":"LifHoshi"},"content":" int idx \u003d 0;","lastModifiedDate":"2024-01-24"},{"lineNumber":77,"author":{"gitId":"LifHoshi"},"content":" for (int i \u003d 1; i \u003c dlCommand.length; i++) {","lastModifiedDate":"2024-01-24"},{"lineNumber":78,"author":{"gitId":"LifHoshi"},"content":" if (dlCommand[i].equals(\"/by\")) {","lastModifiedDate":"2024-01-24"},{"lineNumber":79,"author":{"gitId":"LifHoshi"},"content":" idx \u003d i;","lastModifiedDate":"2024-01-24"},{"lineNumber":80,"author":{"gitId":"LifHoshi"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":81,"author":{"gitId":"LifHoshi"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":82,"author":{"gitId":"LifHoshi"},"content":" rest \u003d rest + dlCommand[i] + \" \";","lastModifiedDate":"2024-01-24"},{"lineNumber":83,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":84,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":85,"author":{"gitId":"LifHoshi"},"content":" // Check for weekdays or month","lastModifiedDate":"2024-01-24"},{"lineNumber":86,"author":{"gitId":"LifHoshi"},"content":" int check \u003d idx + 1;","lastModifiedDate":"2024-01-24"},{"lineNumber":87,"author":{"gitId":"LifHoshi"},"content":" for (int j \u003d idx + 1; j \u003c dlCommand.length; j++) {","lastModifiedDate":"2024-01-24"},{"lineNumber":88,"author":{"gitId":"LifHoshi"},"content":" if (check !\u003d dlCommand.length - 1) {","lastModifiedDate":"2024-01-24"},{"lineNumber":89,"author":{"gitId":"LifHoshi"},"content":" date \u003d date + dlCommand[j] + \" \";","lastModifiedDate":"2024-01-24"},{"lineNumber":90,"author":{"gitId":"LifHoshi"},"content":" check++;","lastModifiedDate":"2024-01-24"},{"lineNumber":91,"author":{"gitId":"LifHoshi"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":92,"author":{"gitId":"LifHoshi"},"content":" date \u003d date + dlCommand[j];","lastModifiedDate":"2024-01-24"},{"lineNumber":93,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":94,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":95,"author":{"gitId":"LifHoshi"},"content":" Deadline dl \u003d new Deadline(rest, date);","lastModifiedDate":"2024-01-24"},{"lineNumber":96,"author":{"gitId":"LifHoshi"},"content":" if (rest.length() \u003e 0) {","lastModifiedDate":"2024-01-24"},{"lineNumber":97,"author":{"gitId":"LifHoshi"},"content":" p.dlJobs(dl);","lastModifiedDate":"2024-01-24"},{"lineNumber":98,"author":{"gitId":"LifHoshi"},"content":" FileManage.saveFiles(p.tasks);","lastModifiedDate":"2024-01-30"},{"lineNumber":99,"author":{"gitId":"LifHoshi"},"content":" } else {","lastModifiedDate":"2024-01-25"},{"lineNumber":100,"author":{"gitId":"LifHoshi"},"content":" System.out.println(\"deadline? what thing make you so hurry that even dont tell me?\");","lastModifiedDate":"2024-01-25"},{"lineNumber":101,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":102,"author":{"gitId":"LifHoshi"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":103,"author":{"gitId":"LifHoshi"},"content":" System.out.println(\"Incorrect number or command\");","lastModifiedDate":"2024-01-24"},{"lineNumber":104,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":105,"author":{"gitId":"LifHoshi"},"content":" } else if (commands.indexOf(\"event\") \u003d\u003d 0) {","lastModifiedDate":"2024-01-24"},{"lineNumber":106,"author":{"gitId":"LifHoshi"},"content":" String[] evCommand \u003d commands.split(\" \");","lastModifiedDate":"2024-01-24"},{"lineNumber":107,"author":{"gitId":"LifHoshi"},"content":" String rest \u003d \"\";","lastModifiedDate":"2024-01-24"},{"lineNumber":108,"author":{"gitId":"LifHoshi"},"content":" String date1 \u003d \"\";","lastModifiedDate":"2024-01-24"},{"lineNumber":109,"author":{"gitId":"LifHoshi"},"content":" String date2 \u003d \"\";","lastModifiedDate":"2024-01-24"},{"lineNumber":110,"author":{"gitId":"LifHoshi"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":111,"author":{"gitId":"LifHoshi"},"content":" int idx \u003d 0;","lastModifiedDate":"2024-01-24"},{"lineNumber":112,"author":{"gitId":"LifHoshi"},"content":" for (int i \u003d 1; i \u003c evCommand.length; i++) {","lastModifiedDate":"2024-01-24"},{"lineNumber":113,"author":{"gitId":"LifHoshi"},"content":" if (evCommand[i].equals(\"/from\")) {","lastModifiedDate":"2024-01-24"},{"lineNumber":114,"author":{"gitId":"LifHoshi"},"content":" idx \u003d i;","lastModifiedDate":"2024-01-24"},{"lineNumber":115,"author":{"gitId":"LifHoshi"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":116,"author":{"gitId":"LifHoshi"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":117,"author":{"gitId":"LifHoshi"},"content":" rest \u003d rest + evCommand[i] + \" \";","lastModifiedDate":"2024-01-24"},{"lineNumber":118,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":119,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":120,"author":{"gitId":"LifHoshi"},"content":" int idx2 \u003d 0;","lastModifiedDate":"2024-01-24"},{"lineNumber":121,"author":{"gitId":"LifHoshi"},"content":" for (int j \u003d idx + 1; j \u003c evCommand.length; j++) {","lastModifiedDate":"2024-01-24"},{"lineNumber":122,"author":{"gitId":"LifHoshi"},"content":" if (evCommand[j].equals(\"/to\")) {","lastModifiedDate":"2024-01-24"},{"lineNumber":123,"author":{"gitId":"LifHoshi"},"content":" idx2 \u003d j;","lastModifiedDate":"2024-01-24"},{"lineNumber":124,"author":{"gitId":"LifHoshi"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":125,"author":{"gitId":"LifHoshi"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":126,"author":{"gitId":"LifHoshi"},"content":" date1 \u003d date1 + evCommand[j] + \" \";","lastModifiedDate":"2024-01-24"},{"lineNumber":127,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":128,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":129,"author":{"gitId":"LifHoshi"},"content":" int check \u003d idx2 + 1;","lastModifiedDate":"2024-01-24"},{"lineNumber":130,"author":{"gitId":"LifHoshi"},"content":" for (int k \u003d idx2 + 1; k \u003c evCommand.length; k++) {","lastModifiedDate":"2024-01-24"},{"lineNumber":131,"author":{"gitId":"LifHoshi"},"content":" if (check !\u003d evCommand.length - 1) {","lastModifiedDate":"2024-01-24"},{"lineNumber":132,"author":{"gitId":"LifHoshi"},"content":" date2 \u003d date2 + evCommand[k] + \" \";","lastModifiedDate":"2024-01-24"},{"lineNumber":133,"author":{"gitId":"LifHoshi"},"content":" check++;","lastModifiedDate":"2024-01-24"},{"lineNumber":134,"author":{"gitId":"LifHoshi"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":135,"author":{"gitId":"LifHoshi"},"content":" date2 \u003d date2 + evCommand[k];","lastModifiedDate":"2024-01-24"},{"lineNumber":136,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":137,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":138,"author":{"gitId":"LifHoshi"},"content":" Event e \u003d new Event(rest, date1, date2);","lastModifiedDate":"2024-01-24"},{"lineNumber":139,"author":{"gitId":"LifHoshi"},"content":" if (rest.length() \u003e 0) {","lastModifiedDate":"2024-01-24"},{"lineNumber":140,"author":{"gitId":"LifHoshi"},"content":" p.evJobs(e);","lastModifiedDate":"2024-01-24"},{"lineNumber":141,"author":{"gitId":"LifHoshi"},"content":" FileManage.saveFiles(p.tasks);","lastModifiedDate":"2024-01-30"},{"lineNumber":142,"author":{"gitId":"LifHoshi"},"content":" } else {","lastModifiedDate":"2024-01-25"},{"lineNumber":143,"author":{"gitId":"LifHoshi"},"content":" System.out.println(\"event what? I need a thing!\");","lastModifiedDate":"2024-01-25"},{"lineNumber":144,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":145,"author":{"gitId":"LifHoshi"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":146,"author":{"gitId":"LifHoshi"},"content":" System.out.println(\"Incorrect number or command\");","lastModifiedDate":"2024-01-24"},{"lineNumber":147,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":148,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":149,"author":{"gitId":"LifHoshi"},"content":" else {","lastModifiedDate":"2024-01-24"},{"lineNumber":150,"author":{"gitId":"LifHoshi"},"content":" Task t \u003d new Task(commands);","lastModifiedDate":"2024-01-24"},{"lineNumber":151,"author":{"gitId":"LifHoshi"},"content":" p.addTask(t);","lastModifiedDate":"2024-01-24"},{"lineNumber":152,"author":{"gitId":"LifHoshi"},"content":" FileManage.saveFiles(p.tasks);","lastModifiedDate":"2024-01-30"},{"lineNumber":153,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":154,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":155,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":156,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":157,"author":{"gitId":"LifHoshi"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"LifHoshi":157}},{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"LifHoshi"},"content":"//// Solution below adapted by week2 iP Level-3 Partial solution","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"LifHoshi"},"content":"public class Deadline extends Task{","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"LifHoshi"},"content":" protected String by;","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"LifHoshi"},"content":" public Deadline(String destription, String by){","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"LifHoshi"},"content":" super(destription);","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"LifHoshi"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"LifHoshi"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"LifHoshi"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"LifHoshi"},"content":" return \"[D]\" + super.toString() + \"(by: \" + this.by + \")\";","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"LifHoshi"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"LifHoshi":14}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"LifHoshi"},"content":"//// Solution below adapted by week2 iP Level-3 Partial solution","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"LifHoshi"},"content":"public class Event extends Task{","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"LifHoshi"},"content":" protected String from;","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"LifHoshi"},"content":" protected String to;","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"LifHoshi"},"content":" public Event(String destription, String from, String to) {","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"LifHoshi"},"content":" super(destription);","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"LifHoshi"},"content":" this.from \u003d from;","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"LifHoshi"},"content":" this.to \u003d to;","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"LifHoshi"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"LifHoshi"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"LifHoshi"},"content":" return \"[E]\" + super.toString() + \"(from: \" + this.from + \"to: \" + this.to + \")\";","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"LifHoshi"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"LifHoshi":16}},{"path":"src/main/java/FileManage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"LifHoshi"},"content":"import java.io.*;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"LifHoshi"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"LifHoshi"},"content":"public class FileManage {","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"LifHoshi"},"content":" private static final String PATH \u003d \"./data/duke.txt\";","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"LifHoshi"},"content":" public static void saveFiles(ArrayList\u003cTask\u003e tasks) {","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"LifHoshi"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"LifHoshi"},"content":" File file \u003d new File(PATH);","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"LifHoshi"},"content":" File dir \u003d new File(\"./data\");","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"LifHoshi"},"content":" if (!dir.exists()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"LifHoshi"},"content":" dir.mkdirs();","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"LifHoshi"},"content":" if (!file.exists()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"LifHoshi"},"content":" file.createNewFile();","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"LifHoshi"},"content":" FileOutputStream fout \u003d new FileOutputStream(file);","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"LifHoshi"},"content":" ObjectOutputStream oot \u003d new ObjectOutputStream(fout);","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"LifHoshi"},"content":" oot.writeObject(tasks);","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"LifHoshi"},"content":" oot.close();","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"LifHoshi"},"content":" fout.close();","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"LifHoshi"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"LifHoshi"},"content":" System.out.println(\"Oops! Something goes wrong!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"LifHoshi"},"content":" public static ArrayList\u003cTask\u003e loadFiles() {","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"LifHoshi"},"content":" ArrayList\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"LifHoshi"},"content":" File file \u003d new File(PATH);","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"LifHoshi"},"content":" if (!file.exists()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"LifHoshi"},"content":" return tasks;","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"LifHoshi"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"LifHoshi"},"content":" FileInputStream inputStream \u003d new FileInputStream(file);","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"LifHoshi"},"content":" ObjectInputStream objInputStream \u003d new ObjectInputStream(inputStream);","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"LifHoshi"},"content":" tasks \u003d (ArrayList\u003cTask\u003e) objInputStream.readObject();","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"LifHoshi"},"content":" objInputStream.close();","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"LifHoshi"},"content":" inputStream.close();","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"LifHoshi"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"LifHoshi"},"content":" System.out.println(\"Oops! Something is missing\");","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"LifHoshi"},"content":" } catch (ClassNotFoundException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"LifHoshi"},"content":" System.out.println(\"Oops! class doesn\u0027t find\");","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"LifHoshi"},"content":" return tasks;","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"LifHoshi"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"LifHoshi":51}},{"path":"src/main/java/Ping.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"LifHoshi"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"LifHoshi"},"content":"public class Ping {","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"LifHoshi"},"content":" final String name \u003d \"Ping\";","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"LifHoshi"},"content":" protected ArrayList\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"LifHoshi"},"content":" public void addTask(Task i) {","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"LifHoshi"},"content":" tasks.add(i);","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"LifHoshi"},"content":" System.out.println(\"added: \" + i.description);","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"LifHoshi"},"content":" public void listTasks() {","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"LifHoshi"},"content":" if (tasks.isEmpty()) {","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"LifHoshi"},"content":" System.out.println(\"No ability added yet\");","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"LifHoshi"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"LifHoshi"},"content":" for (int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"LifHoshi"},"content":" int idx \u003d i + 1;","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"LifHoshi"},"content":" //System.out.printf(\"%d. \" + tasks.get(i).description + \"%n\", idx);","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"LifHoshi"},"content":" if (tasks.get(i).isDone) {","lastModifiedDate":"2024-01-24"},{"lineNumber":23,"author":{"gitId":"LifHoshi"},"content":" System.out.printf(\"%d.\" + tasks.get((i)).toString() + \"%n\", idx);","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"LifHoshi"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":25,"author":{"gitId":"LifHoshi"},"content":" System.out.printf(\"%d.\" + tasks.get(i).toString() + \"%n\", idx);","lastModifiedDate":"2024-01-24"},{"lineNumber":26,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":27,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":28,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":29,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":30,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":31,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":32,"author":{"gitId":"LifHoshi"},"content":" public void markJobs(Task i) {","lastModifiedDate":"2024-01-24"},{"lineNumber":33,"author":{"gitId":"LifHoshi"},"content":" System.out.println(\"Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2024-01-24"},{"lineNumber":34,"author":{"gitId":"LifHoshi"},"content":" i.isDone \u003d true;","lastModifiedDate":"2024-01-24"},{"lineNumber":35,"author":{"gitId":"LifHoshi"},"content":" System.out.println(i.toString());","lastModifiedDate":"2024-01-24"},{"lineNumber":36,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":37,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":38,"author":{"gitId":"LifHoshi"},"content":" public void unMarkJobs(Task i) {","lastModifiedDate":"2024-01-24"},{"lineNumber":39,"author":{"gitId":"LifHoshi"},"content":" System.out.println(\"OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2024-01-24"},{"lineNumber":40,"author":{"gitId":"LifHoshi"},"content":" i.isDone \u003d false;","lastModifiedDate":"2024-01-24"},{"lineNumber":41,"author":{"gitId":"LifHoshi"},"content":" System.out.println(i.toString());","lastModifiedDate":"2024-01-24"},{"lineNumber":42,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":43,"author":{"gitId":"LifHoshi"},"content":" public void goodBye() {","lastModifiedDate":"2024-01-23"},{"lineNumber":44,"author":{"gitId":"LifHoshi"},"content":" System.out.println(\"Bye. Hope to see you again soon!\");","lastModifiedDate":"2024-01-23"},{"lineNumber":45,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":46,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":47,"author":{"gitId":"LifHoshi"},"content":" public void todoJobs(Todo i) {","lastModifiedDate":"2024-01-24"},{"lineNumber":48,"author":{"gitId":"LifHoshi"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2024-01-24"},{"lineNumber":49,"author":{"gitId":"LifHoshi"},"content":" tasks.add(i);","lastModifiedDate":"2024-01-24"},{"lineNumber":50,"author":{"gitId":"LifHoshi"},"content":" System.out.println(i.toString());","lastModifiedDate":"2024-01-24"},{"lineNumber":51,"author":{"gitId":"LifHoshi"},"content":" int numOfWork \u003d tasks.size();","lastModifiedDate":"2024-01-24"},{"lineNumber":52,"author":{"gitId":"LifHoshi"},"content":" System.out.printf(\"Now you have %d tasks in the list.\" + \"%n\", numOfWork);","lastModifiedDate":"2024-01-24"},{"lineNumber":53,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":54,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":55,"author":{"gitId":"LifHoshi"},"content":" public void dlJobs(Deadline i) {","lastModifiedDate":"2024-01-24"},{"lineNumber":56,"author":{"gitId":"LifHoshi"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2024-01-24"},{"lineNumber":57,"author":{"gitId":"LifHoshi"},"content":" tasks.add(i);","lastModifiedDate":"2024-01-24"},{"lineNumber":58,"author":{"gitId":"LifHoshi"},"content":" System.out.println(i.toString());","lastModifiedDate":"2024-01-24"},{"lineNumber":59,"author":{"gitId":"LifHoshi"},"content":" int numOfWork \u003d tasks.size();","lastModifiedDate":"2024-01-24"},{"lineNumber":60,"author":{"gitId":"LifHoshi"},"content":" System.out.printf(\"Now you have %d tasks in the list.\" + \"%n\", numOfWork);","lastModifiedDate":"2024-01-24"},{"lineNumber":61,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":62,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":63,"author":{"gitId":"LifHoshi"},"content":" public void evJobs(Event i) {","lastModifiedDate":"2024-01-24"},{"lineNumber":64,"author":{"gitId":"LifHoshi"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2024-01-24"},{"lineNumber":65,"author":{"gitId":"LifHoshi"},"content":" tasks.add(i);","lastModifiedDate":"2024-01-24"},{"lineNumber":66,"author":{"gitId":"LifHoshi"},"content":" System.out.println(i.toString());","lastModifiedDate":"2024-01-24"},{"lineNumber":67,"author":{"gitId":"LifHoshi"},"content":" int numOfWork \u003d tasks.size();","lastModifiedDate":"2024-01-24"},{"lineNumber":68,"author":{"gitId":"LifHoshi"},"content":" System.out.printf(\"Now you have %d tasks in the list.\" + \"%n\", numOfWork);","lastModifiedDate":"2024-01-24"},{"lineNumber":69,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":70,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":71,"author":{"gitId":"LifHoshi"},"content":" public void delete(int i) {","lastModifiedDate":"2024-01-25"},{"lineNumber":72,"author":{"gitId":"LifHoshi"},"content":" System.out.println(\"Noted. I\u0027ve removed this task:\");","lastModifiedDate":"2024-01-25"},{"lineNumber":73,"author":{"gitId":"LifHoshi"},"content":" System.out.println(tasks.get(i).toString());","lastModifiedDate":"2024-01-25"},{"lineNumber":74,"author":{"gitId":"LifHoshi"},"content":" tasks.remove(i);","lastModifiedDate":"2024-01-25"},{"lineNumber":75,"author":{"gitId":"LifHoshi"},"content":" int numOfWork \u003d tasks.size();","lastModifiedDate":"2024-01-25"},{"lineNumber":76,"author":{"gitId":"LifHoshi"},"content":" System.out.printf(\"Now you have %d tasks in the list.\" + \"%n\", numOfWork);","lastModifiedDate":"2024-01-25"},{"lineNumber":77,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":78,"author":{"gitId":"LifHoshi"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"LifHoshi":78}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"LifHoshi"},"content":"import java.io.Serializable;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"LifHoshi"},"content":"// Solution below adapted by week2 iP Level-3 Partial solution","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"LifHoshi"},"content":"public class Task implements Serializable {","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"LifHoshi"},"content":" protected String description;","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"LifHoshi"},"content":" protected boolean isDone;","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"LifHoshi"},"content":" public Task(String description) {","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"LifHoshi"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"LifHoshi"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"LifHoshi"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"LifHoshi"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"LifHoshi"},"content":" if (isDone) {","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"LifHoshi"},"content":" return \"[X] \" + description;","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"LifHoshi"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"LifHoshi"},"content":" return \"[ ] \" + description;","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"LifHoshi"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"LifHoshi":19}},{"path":"src/main/java/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"LifHoshi"},"content":"//// Solution below adapted by week2 iP Level-3 Partial solution","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"LifHoshi"},"content":"public class Todo extends Task{","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"LifHoshi"},"content":" public Todo(String description) {","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"LifHoshi"},"content":" super(description);","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"LifHoshi"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"LifHoshi"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"LifHoshi"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"LifHoshi"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"LifHoshi":11}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"LifHoshi"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"LifHoshi"},"content":"blah","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"LifHoshi"},"content":"read book","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"LifHoshi"},"content":"return book","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"LifHoshi"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"LifHoshi"},"content":"mark 2","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"LifHoshi"},"content":"deadline return book /by Sunday","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"LifHoshi"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"LifHoshi"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"LifHoshi"},"content":"bye","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"LifHoshi":10}},{"path":"text-ui-test/runtest.bat","fileType":"bat","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@ECHO OFF","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"REM create bin directory if it doesn\u0027t exist","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"if not exist ..\\bin mkdir ..\\bin","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"REM delete output from previous run","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"if exist ACTUAL.TXT del ACTUAL.TXT","lastModifiedDate":"2020-08-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"REM compile the code into the bin folder","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"javac -cp ..\\src\\main\\java -Xlint:none -d ..\\bin ..\\src\\main\\java\\*.java","lastModifiedDate":"2020-08-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"IF ERRORLEVEL 1 (","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":" echo ********** BUILD FAILURE **********","lastModifiedDate":"2020-05-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":" exit /b 1","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":")","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"REM no error here, errorlevel \u003d\u003d 0","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"REM run the program, feed commands from input.txt file and redirect the output to the ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"LifHoshi"},"content":"java -classpath ..\\bin ChatBotTest \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"REM compare the output to the expected output","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"FC ACTUAL.TXT EXPECTED.TXT","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"-":20,"LifHoshi":1}},{"path":"data/duke.txt","fileType":"txt","isBinary":true,"lines":[],"authorContributionMap":{"LifHoshi":0}}] diff --git a/LifHoshi_ip_master/commits.json b/LifHoshi_ip_master/commits.json index faa623bc..8a3cef57 100644 --- a/LifHoshi_ip_master/commits.json +++ b/LifHoshi_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"LifHoshi":[{"date":"2024-01-23","commitResults":[{"hash":"a19c0b42e06a037e72a138e1ece955a5067f0fde","isMergeCommit":false,"messageTitle":"Rename,Greet, Exit","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":0}}},{"hash":"e0aa626817376ce3d02d1e1d3947c25e1934276c","isMergeCommit":false,"messageTitle":"Updated Rename, Greet, Exit","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":14}}},{"hash":"5fedca0d8045fac35641ce1171a117a8356d5023","isMergeCommit":false,"messageTitle":"Echo","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":18,"deletions":1}}}]},{"date":"2024-01-24","commitResults":[{"hash":"db3417e60c72b380d58a4b4761709c5bdf05de33","isMergeCommit":false,"messageTitle":"Add, List","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":23,"deletions":1}}},{"hash":"7c7faffb915040a53c9bafa816550c3e11b3d314","isMergeCommit":false,"messageTitle":"Mark as Done","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":54,"deletions":7}}},{"hash":"df06327bbbb99753b4031728bc64e028eb4b79d4","isMergeCommit":false,"messageTitle":"ToDos, Events, Deadlines","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":168,"deletions":6}}},{"hash":"7f8b3a65ac9383c2779956cfaa3228fcb3a4f844","isMergeCommit":false,"messageTitle":"A-TextUiTesting","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":10,"deletions":0},"bat":{"insertions":1,"deletions":1}}}]},{"date":"2024-01-25","commitResults":[{"hash":"bdbdbba1406c4406c972cb9601f35e69db569d65","isMergeCommit":false,"messageTitle":"Handle Errors","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":1}}},{"hash":"3cb382ad2eda127ddf08b77a399b6b9d4780bdcd","isMergeCommit":false,"messageTitle":"Delete","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":19,"deletions":2}}}]}]},"authorFileTypeContributionMap":{"LifHoshi":{"java":288,"md":0,"fxml":0,"sh":0,"bat":1,"gradle":0,"txt":10}},"authorContributionVariance":{"LifHoshi":8451.959},"authorDisplayNameMap":{"LifHoshi":"CS2103T-W11-2 WANG..LIFU"}} +{"authorDailyContributionsMap":{"LifHoshi":[{"date":"2024-01-23","commitResults":[{"hash":"a19c0b42e06a037e72a138e1ece955a5067f0fde","isMergeCommit":false,"messageTitle":"Rename,Greet, Exit","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":0}}},{"hash":"e0aa626817376ce3d02d1e1d3947c25e1934276c","isMergeCommit":false,"messageTitle":"Updated Rename, Greet, Exit","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":14}}},{"hash":"5fedca0d8045fac35641ce1171a117a8356d5023","isMergeCommit":false,"messageTitle":"Echo","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":18,"deletions":1}}}]},{"date":"2024-01-24","commitResults":[{"hash":"db3417e60c72b380d58a4b4761709c5bdf05de33","isMergeCommit":false,"messageTitle":"Add, List","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":23,"deletions":1}}},{"hash":"7c7faffb915040a53c9bafa816550c3e11b3d314","isMergeCommit":false,"messageTitle":"Mark as Done","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":54,"deletions":7}}},{"hash":"df06327bbbb99753b4031728bc64e028eb4b79d4","isMergeCommit":false,"messageTitle":"ToDos, Events, Deadlines","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":168,"deletions":6}}},{"hash":"7f8b3a65ac9383c2779956cfaa3228fcb3a4f844","isMergeCommit":false,"messageTitle":"A-TextUiTesting","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":10,"deletions":0},"bat":{"insertions":1,"deletions":1}}}]},{"date":"2024-01-25","commitResults":[{"hash":"bdbdbba1406c4406c972cb9601f35e69db569d65","isMergeCommit":false,"messageTitle":"Handle Errors","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":1}}},{"hash":"3cb382ad2eda127ddf08b77a399b6b9d4780bdcd","isMergeCommit":false,"messageTitle":"Delete","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":19,"deletions":2}}}]},{"date":"2024-01-30","commitResults":[{"hash":"dfea069cece212af0ccb408352378567be965692","isMergeCommit":false,"messageTitle":"Level-7 Add TaskStorage","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"java":{"insertions":62,"deletions":4}}}]}]},"authorFileTypeContributionMap":{"LifHoshi":{"java":346,"md":0,"fxml":0,"sh":0,"bat":1,"gradle":0,"txt":10}},"authorContributionVariance":{"LifHoshi":5560.1665},"authorDisplayNameMap":{"LifHoshi":"CS2103T-W11-2 WANG..LIFU"}} diff --git a/Lin-Shuang-Shuang_ip_master/authorship.json b/Lin-Shuang-Shuang_ip_master/authorship.json index fff55543..ea1e508c 100644 --- a/Lin-Shuang-Shuang_ip_master/authorship.json +++ b/Lin-Shuang-Shuang_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"data/duke.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"T | 1 | read book","lastModifiedDate":"2024-01-27"},{"lineNumber":2,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"D | 0 | return book | 2019-10-15","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"E | 0 | project meeting | Aug 6th 2pm-4pm","lastModifiedDate":"2024-01-27"},{"lineNumber":4,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"T | 1 | join sports club","lastModifiedDate":"2024-01-27"},{"lineNumber":5,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"T | 0 | run","lastModifiedDate":"2024-01-27"},{"lineNumber":6,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"E | 0 | project meeting | Mon 2pm-4pm","lastModifiedDate":"2024-01-27"},{"lineNumber":7,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"D | 0 | return book | 2019-10-15","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"T | 0 | borrow book","lastModifiedDate":"2024-01-27"},{"lineNumber":9,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"E | 0 | project meeting | Mon 2pm -4pm","lastModifiedDate":"2024-01-27"},{"lineNumber":10,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"D | 0 | read | 2020-12-22","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"D | 0 | read | 2020-12-22","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"Lin-Shuang-Shuang":11}},{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"import java.time.temporal.ChronoUnit;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" private final String TYPE \u003d \"D\";","lastModifiedDate":"2024-01-27"},{"lineNumber":7,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" private final DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd\");","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" private LocalDate deadline;","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public Deadline(String description) {","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" super(description.split(\"/\")[0]);","lastModifiedDate":"2024-01-22"},{"lineNumber":13,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" this.deadline \u003d LocalDate.parse(description.split(\"/by \")[1], formatter);","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":15,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":16,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public Deadline(String event, String extraInfo) {","lastModifiedDate":"2024-01-27"},{"lineNumber":17,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" super(event);","lastModifiedDate":"2024-01-27"},{"lineNumber":18,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" this.deadline \u003d LocalDate.parse(extraInfo.replace(\u0027/\u0027,\u0027-\u0027), formatter);;","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":21,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":22,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public String getType() {","lastModifiedDate":"2024-01-22"},{"lineNumber":23,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" return this.TYPE;","lastModifiedDate":"2024-01-27"},{"lineNumber":24,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":25,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public String getExtraInfoShortened() {","lastModifiedDate":"2024-01-27"},{"lineNumber":26,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" return this.deadline.format(DateTimeFormatter.ofPattern(\"yyyy-MM-dd\"));","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":28,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":29,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":30,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public String getExtraInfo() {","lastModifiedDate":"2024-01-22"},{"lineNumber":31,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" return \"(by: \" + this.deadline.format(DateTimeFormatter.ofPattern(\"MMM d yyyy\")) + \")\";","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":33,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":34,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"}","lastModifiedDate":"2024-01-22"},{"lineNumber":35,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":36,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":37,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":38,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"Lin-Shuang-Shuang":38}},{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-27"},{"lineNumber":2,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-01-27"},{"lineNumber":3,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-21"},{"lineNumber":4,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-21"},{"lineNumber":5,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"import java.io.File;","lastModifiedDate":"2024-01-27"},{"lineNumber":6,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-01-27"},{"lineNumber":7,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"import java.time.temporal.ChronoUnit;","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"/**","lastModifiedDate":"2024-01-27"},{"lineNumber":12,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" * Duke is a chatbot program that is used to save tasks","lastModifiedDate":"2024-01-27"},{"lineNumber":13,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" *","lastModifiedDate":"2024-01-27"},{"lineNumber":14,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" * @author Lin Shuang Shuang","lastModifiedDate":"2024-01-27"},{"lineNumber":15,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" * @version 1.0","lastModifiedDate":"2024-01-27"},{"lineNumber":16,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" * @since 2023-01-25","lastModifiedDate":"2024-01-27"},{"lineNumber":17,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":18,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":20,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":21,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" private final String NAME;","lastModifiedDate":"2024-01-27"},{"lineNumber":22,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" private ArrayList\u003cTask\u003e taskList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-22"},{"lineNumber":23,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" private final String LINE \u003d \"____________________________________________________________\\n\";","lastModifiedDate":"2024-01-27"},{"lineNumber":24,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" private final String FILENAME \u003d \"./data/duke.txt\";","lastModifiedDate":"2024-01-27"},{"lineNumber":25,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" private final DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd\");","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public Duke(String NAME) {","lastModifiedDate":"2024-01-27"},{"lineNumber":28,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" this.NAME \u003d NAME;","lastModifiedDate":"2024-01-27"},{"lineNumber":29,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":31,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":32,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public void checkDateFormat(String date) throws DukeException {","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" LocalDate d \u003d LocalDate.parse(date, this.formatter);","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" } catch (Exception ex) {","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"// do something for invalid dateformat","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" throw new DukeException(\"Erm... Date not keyed in correct format! Correct format is yyyy-MM-dd\"+ex);","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":43,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public void loadTasks() throws DukeException {","lastModifiedDate":"2024-01-27"},{"lineNumber":44,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" try {","lastModifiedDate":"2024-01-27"},{"lineNumber":45,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" File tasksFile \u003d new File(FILENAME);","lastModifiedDate":"2024-01-27"},{"lineNumber":46,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" if (!tasksFile.exists()) {","lastModifiedDate":"2024-01-27"},{"lineNumber":47,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" tasksFile.createNewFile();","lastModifiedDate":"2024-01-27"},{"lineNumber":48,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" } else {","lastModifiedDate":"2024-01-27"},{"lineNumber":49,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" Scanner s \u003d new Scanner(tasksFile);","lastModifiedDate":"2024-01-27"},{"lineNumber":50,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" while (s.hasNext()) {","lastModifiedDate":"2024-01-27"},{"lineNumber":51,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" String line \u003d s.nextLine();","lastModifiedDate":"2024-01-27"},{"lineNumber":52,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" String[] splitLine \u003d line.split(\" \\\\| \");","lastModifiedDate":"2024-01-27"},{"lineNumber":53,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" String event \u003d splitLine[2];","lastModifiedDate":"2024-01-27"},{"lineNumber":54,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" String type \u003d splitLine[0];","lastModifiedDate":"2024-01-27"},{"lineNumber":55,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" Task newTask;","lastModifiedDate":"2024-01-27"},{"lineNumber":56,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" if (splitLine.length \u003c 3 || splitLine.length \u003e4) {","lastModifiedDate":"2024-01-27"},{"lineNumber":57,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" throw new DukeException(\"Erm... Textfile not in correct format!\" + splitLine.length);","lastModifiedDate":"2024-01-27"},{"lineNumber":58,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":59,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" if (type.equalsIgnoreCase(\"T\")) {","lastModifiedDate":"2024-01-27"},{"lineNumber":60,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" newTask \u003d new Todo(event);","lastModifiedDate":"2024-01-27"},{"lineNumber":61,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" } else if (type.equalsIgnoreCase(\"D\")) {","lastModifiedDate":"2024-01-27"},{"lineNumber":62,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" String extraInfo \u003d splitLine[3];","lastModifiedDate":"2024-01-27"},{"lineNumber":63,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" checkDateFormat(extraInfo);","lastModifiedDate":"2024-01-29"},{"lineNumber":64,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":65,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" newTask \u003d new Deadline(event, extraInfo);","lastModifiedDate":"2024-01-27"},{"lineNumber":66,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" } else if (type.equalsIgnoreCase(\"E\")) {","lastModifiedDate":"2024-01-27"},{"lineNumber":67,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" String extraInfo \u003d splitLine[3];","lastModifiedDate":"2024-01-27"},{"lineNumber":68,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" newTask \u003d new Event(event, extraInfo);","lastModifiedDate":"2024-01-27"},{"lineNumber":69,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" } else {","lastModifiedDate":"2024-01-27"},{"lineNumber":70,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" throw new DukeException(\"Erm... Invalid type!\" + type);","lastModifiedDate":"2024-01-27"},{"lineNumber":71,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":72,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" taskList.add(newTask);","lastModifiedDate":"2024-01-27"},{"lineNumber":73,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":74,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":75,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":76,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-27"},{"lineNumber":77,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" throw new DukeException(\"Erm... Error loading tasks from file\");","lastModifiedDate":"2024-01-27"},{"lineNumber":78,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":79,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":80,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":81,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public void saveTasks(Task newTask) throws DukeException {","lastModifiedDate":"2024-01-27"},{"lineNumber":82,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" String msg \u003d \" | 0 | \";","lastModifiedDate":"2024-01-27"},{"lineNumber":83,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" msg \u003d \"\\n\" + newTask.getType() + msg + newTask.getDescription();","lastModifiedDate":"2024-01-27"},{"lineNumber":84,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" if (newTask instanceof Event || newTask instanceof Deadline) {","lastModifiedDate":"2024-01-27"},{"lineNumber":85,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" msg +\u003d \"| \" + newTask.getExtraInfoShortened();","lastModifiedDate":"2024-01-27"},{"lineNumber":86,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":87,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" try {","lastModifiedDate":"2024-01-27"},{"lineNumber":88,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" FileWriter fw \u003d new FileWriter(FILENAME, true);","lastModifiedDate":"2024-01-27"},{"lineNumber":89,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" fw.write(msg);","lastModifiedDate":"2024-01-27"},{"lineNumber":90,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" fw.close();","lastModifiedDate":"2024-01-27"},{"lineNumber":91,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":92,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-27"},{"lineNumber":93,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" throw new DukeException(\"Erm... Error saving tasks from file\");","lastModifiedDate":"2024-01-27"},{"lineNumber":94,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":95,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":96,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public String greet() {","lastModifiedDate":"2024-01-21"},{"lineNumber":97,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" return this.LINE + \"Hello! I\u0027m \" + this.NAME + \"\\n\" + \"What can I do for you?\\n\" + this.LINE;","lastModifiedDate":"2024-01-27"},{"lineNumber":98,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":99,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public String exit() {","lastModifiedDate":"2024-01-21"},{"lineNumber":100,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" return this.LINE + \"Bye. Hope to see you again soon!\\n\" + this.LINE ;","lastModifiedDate":"2024-01-27"},{"lineNumber":101,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":102,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":103,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public String printList(){","lastModifiedDate":"2024-01-21"},{"lineNumber":104,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" String list \u003d this.LINE + \"Here are the tasks in your list:\\n\";","lastModifiedDate":"2024-01-27"},{"lineNumber":105,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" for (int i \u003d 0; i\u003cthis.taskList.size(); i++) {","lastModifiedDate":"2024-01-21"},{"lineNumber":106,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" Task task \u003d this.taskList.get(i);","lastModifiedDate":"2024-01-22"},{"lineNumber":107,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" String message \u003d Integer.toString(i+1) + \".\" +\"[\" +task.getType()+\"]\"+\"[\" + task.getStatusIcon() +\"] \" + task.getDescription() + task.getExtraInfo() + \"\\n\";","lastModifiedDate":"2024-01-27"},{"lineNumber":108,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" list +\u003d message;","lastModifiedDate":"2024-01-22"},{"lineNumber":109,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":110,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":111,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" return list + this.LINE;","lastModifiedDate":"2024-01-27"},{"lineNumber":112,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":113,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":114,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public String addTask(String command) throws DukeException {","lastModifiedDate":"2024-01-23"},{"lineNumber":115,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" String msg \u003d this.LINE + \"Got it. I\u0027ve added this task:\\n\";","lastModifiedDate":"2024-01-27"},{"lineNumber":116,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" Task newTask \u003d new Task(command);","lastModifiedDate":"2024-01-22"},{"lineNumber":117,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" if (command.startsWith(\"todo\")) {","lastModifiedDate":"2024-01-22"},{"lineNumber":118,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" try {","lastModifiedDate":"2024-01-23"},{"lineNumber":119,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" newTask \u003d new Todo(command.substring(5));","lastModifiedDate":"2024-01-22"},{"lineNumber":120,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" } catch (NumberFormatException | IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-23"},{"lineNumber":121,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" throw new DukeException(\"Erm... Please provide event name.\");","lastModifiedDate":"2024-01-23"},{"lineNumber":122,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":123,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" } else if (command.startsWith(\"deadline\")){","lastModifiedDate":"2024-01-22"},{"lineNumber":124,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" try {","lastModifiedDate":"2024-01-23"},{"lineNumber":125,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" String[] taskDesc \u003d command.substring(9).split(\"/by \");","lastModifiedDate":"2024-01-29"},{"lineNumber":126,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" checkDateFormat(taskDesc[1]);","lastModifiedDate":"2024-01-29"},{"lineNumber":127,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" newTask \u003d new Deadline(taskDesc[0], taskDesc[1]);","lastModifiedDate":"2024-01-29"},{"lineNumber":128,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":129,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":130,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" } catch (NumberFormatException | IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-23"},{"lineNumber":131,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" throw new DukeException(\"Erm... Please provide event details.\" + e);","lastModifiedDate":"2024-01-29"},{"lineNumber":132,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":133,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" } else if (command.startsWith(\"event\")) {","lastModifiedDate":"2024-01-22"},{"lineNumber":134,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" try {","lastModifiedDate":"2024-01-23"},{"lineNumber":135,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" newTask \u003d new Event(command.substring(6));","lastModifiedDate":"2024-01-22"},{"lineNumber":136,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" } catch (NumberFormatException | IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-23"},{"lineNumber":137,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" throw new DukeException(\"Erm... Please provide event details.\");","lastModifiedDate":"2024-01-23"},{"lineNumber":138,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":139,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" } else {","lastModifiedDate":"2024-01-23"},{"lineNumber":140,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" throw new DukeException(\"Erm... Please provide a valid command.\");","lastModifiedDate":"2024-01-23"},{"lineNumber":141,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":142,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" taskList.add(newTask);","lastModifiedDate":"2024-01-22"},{"lineNumber":143,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" saveTasks(newTask);","lastModifiedDate":"2024-01-27"},{"lineNumber":144,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" msg \u003d msg+\"[\"+ newTask.getType() +\"]\"+ \"[\"+newTask.getStatusIcon() +\"]\" + \" \" +","lastModifiedDate":"2024-01-27"},{"lineNumber":145,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" newTask.getDescription() + newTask.getExtraInfo() +\"\\nNow you have \" +","lastModifiedDate":"2024-01-22"},{"lineNumber":146,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" Integer.toString(taskList.size()) +\" tasks in the list.\\n\";","lastModifiedDate":"2024-01-22"},{"lineNumber":147,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" return msg+this.LINE;","lastModifiedDate":"2024-01-27"},{"lineNumber":148,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":149,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":150,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":151,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":152,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public String deleteTask(Task task) {","lastModifiedDate":"2024-01-23"},{"lineNumber":153,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" this.taskList.remove(task);","lastModifiedDate":"2024-01-23"},{"lineNumber":154,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" String msg \u003d \"Noted. I\u0027ve removed this task:\\n\" + task.getType() + \"[\" + task.getStatusIcon() + \"]\" +","lastModifiedDate":"2024-01-23"},{"lineNumber":155,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" \" \" + task.getDescription() + task.getExtraInfo() + \"\\nNow you have \" +","lastModifiedDate":"2024-01-23"},{"lineNumber":156,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" Integer.toString(taskList.size()) + \" tasks in the list.\\n\";","lastModifiedDate":"2024-01-23"},{"lineNumber":157,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" return msg;","lastModifiedDate":"2024-01-23"},{"lineNumber":158,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":159,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public void processCmd(String command) throws DukeException {","lastModifiedDate":"2024-01-23"},{"lineNumber":160,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" if (command.equalsIgnoreCase(\"list\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":161,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" System.out.println(this.printList());","lastModifiedDate":"2024-01-21"},{"lineNumber":162,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" } else if (command.startsWith(\"mark\")) {","lastModifiedDate":"2024-01-22"},{"lineNumber":163,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" try {","lastModifiedDate":"2024-01-23"},{"lineNumber":164,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" Integer id \u003d Integer.parseInt(command.substring(5));","lastModifiedDate":"2024-01-22"},{"lineNumber":165,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" System.out.println(this.LINE + this.taskList.get(id - 1).markAsDone() + \"\\n\" + this.LINE);","lastModifiedDate":"2024-01-27"},{"lineNumber":166,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-23"},{"lineNumber":167,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" throw new DukeException(\"Erm... Please enter a valid task number.\");","lastModifiedDate":"2024-01-23"},{"lineNumber":168,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-23"},{"lineNumber":169,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" throw new DukeException(\"Erm... Please enter a task number.\");","lastModifiedDate":"2024-01-23"},{"lineNumber":170,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":171,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":172,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" } else if (command.startsWith(\"unmark\")) {","lastModifiedDate":"2024-01-22"},{"lineNumber":173,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" try {","lastModifiedDate":"2024-01-23"},{"lineNumber":174,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" Integer id \u003d Integer.parseInt(command.substring(7));","lastModifiedDate":"2024-01-22"},{"lineNumber":175,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" System.out.println(this.LINE + this.taskList.get(id - 1).markAsDone() + \"\\n\" + this.LINE);","lastModifiedDate":"2024-01-27"},{"lineNumber":176,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-23"},{"lineNumber":177,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" throw new DukeException(\"Erm... Please enter a valid task number.\");","lastModifiedDate":"2024-01-23"},{"lineNumber":178,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-23"},{"lineNumber":179,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" throw new DukeException(\"Erm... Please enter a task number.\");","lastModifiedDate":"2024-01-23"},{"lineNumber":180,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":181,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" } else if (command.startsWith(\"delete\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":182,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" try {","lastModifiedDate":"2024-01-23"},{"lineNumber":183,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" Integer id \u003d Integer.parseInt(command.substring(7));","lastModifiedDate":"2024-01-23"},{"lineNumber":184,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" System.out.println(this.LINE + this.deleteTask(this.taskList.get(id - 1)) + \"\\n\" + this.LINE);","lastModifiedDate":"2024-01-27"},{"lineNumber":185,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-23"},{"lineNumber":186,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" throw new DukeException(\"Erm... Please enter a valid task number.\");","lastModifiedDate":"2024-01-23"},{"lineNumber":187,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-23"},{"lineNumber":188,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" throw new DukeException(\"Erm... Please enter a task number.\");","lastModifiedDate":"2024-01-23"},{"lineNumber":189,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":190,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" } else {","lastModifiedDate":"2024-01-21"},{"lineNumber":191,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" System.out.println(this.addTask(command));","lastModifiedDate":"2024-01-22"},{"lineNumber":192,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":193,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":194,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":195,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":196,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":197,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":198,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public void startChat() throws DukeException {","lastModifiedDate":"2024-01-27"},{"lineNumber":199,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" loadTasks();","lastModifiedDate":"2024-01-27"},{"lineNumber":200,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" System.out.println(this.greet());","lastModifiedDate":"2024-01-23"},{"lineNumber":201,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-23"},{"lineNumber":202,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":203,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" while(scanner.hasNext()) {","lastModifiedDate":"2024-01-23"},{"lineNumber":204,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" String command \u003d scanner.nextLine();","lastModifiedDate":"2024-01-23"},{"lineNumber":205,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" if (command.equalsIgnoreCase(\"bye\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":206,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" System.out.println(this.exit());","lastModifiedDate":"2024-01-23"},{"lineNumber":207,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" break;","lastModifiedDate":"2024-01-23"},{"lineNumber":208,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":209,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" try {","lastModifiedDate":"2024-01-23"},{"lineNumber":210,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" this.processCmd(command);","lastModifiedDate":"2024-01-23"},{"lineNumber":211,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-23"},{"lineNumber":212,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" System.out.println(this.LINE+e.getMessage() +\"\\n\"+this.LINE);","lastModifiedDate":"2024-01-27"},{"lineNumber":213,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":214,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":215,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":216,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":217,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":218,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" * This is the main method which starts the chatbot.","lastModifiedDate":"2024-01-27"},{"lineNumber":219,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" * @param args Unused.","lastModifiedDate":"2024-01-27"},{"lineNumber":220,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" * @return Nothing.","lastModifiedDate":"2024-01-27"},{"lineNumber":221,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" * @exception IOException On input error.","lastModifiedDate":"2024-01-27"},{"lineNumber":222,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" * @see IOException","lastModifiedDate":"2024-01-27"},{"lineNumber":223,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":224,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public static void main(String[] args) throws DukeException {","lastModifiedDate":"2024-01-27"},{"lineNumber":225,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" Duke Lery \u003d new Duke(\"Lery\");","lastModifiedDate":"2024-01-21"},{"lineNumber":226,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" Lery.startChat();","lastModifiedDate":"2024-01-21"},{"lineNumber":227,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":228,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":229,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":230,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":231,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"Lin-Shuang-Shuang":227,"-":4}},{"path":"src/main/java/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"public class DukeException extends Exception {","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public DukeException() {","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" super();","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public DukeException(String message) {","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" super(message);","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"Lin-Shuang-Shuang":9}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" private final String TYPE \u003d \"E\";","lastModifiedDate":"2024-01-27"},{"lineNumber":3,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" private String start;","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" private String end;","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public Event(String description) {","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" super(description.split(\"/\")[0]);","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" int fromId \u003d description.indexOf(\"/from\");","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" int toId \u003d description.indexOf(\"/to\");","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" this.start \u003d description.substring(fromId +6, toId);","lastModifiedDate":"2024-01-22"},{"lineNumber":13,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" this.end \u003d description.substring(toId +4);","lastModifiedDate":"2024-01-22"},{"lineNumber":14,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":15,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":16,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":17,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public Event(String event, String extraInfo) {","lastModifiedDate":"2024-01-27"},{"lineNumber":18,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" super(event);","lastModifiedDate":"2024-01-27"},{"lineNumber":19,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" String[] x \u003d extraInfo.split(\"-\");","lastModifiedDate":"2024-01-27"},{"lineNumber":20,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" this.start \u003d x[0];","lastModifiedDate":"2024-01-27"},{"lineNumber":21,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" this.end \u003d x[1];","lastModifiedDate":"2024-01-27"},{"lineNumber":22,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":23,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public String getType() {","lastModifiedDate":"2024-01-22"},{"lineNumber":24,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" return this.TYPE;","lastModifiedDate":"2024-01-27"},{"lineNumber":25,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":26,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public String getExtraInfoShortened() {","lastModifiedDate":"2024-01-27"},{"lineNumber":27,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":28,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" return this.start + \"-\" + this.end;","lastModifiedDate":"2024-01-27"},{"lineNumber":29,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":30,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":31,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":32,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public String getExtraInfo() {","lastModifiedDate":"2024-01-22"},{"lineNumber":33,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" return \" (from: \" + this.start + \" to: \" + this.end + \")\";","lastModifiedDate":"2024-01-22"},{"lineNumber":34,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":35,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"Lin-Shuang-Shuang":35}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"public class Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" protected String description;","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" protected boolean isDone;","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public Task(String description) {","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" return (isDone ? \"X\" : \" \"); // mark done task with X","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":13,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":14,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public String getDescription() {","lastModifiedDate":"2024-01-22"},{"lineNumber":15,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" return this.description;","lastModifiedDate":"2024-01-22"},{"lineNumber":16,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":17,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":18,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public String markAsDone() {","lastModifiedDate":"2024-01-22"},{"lineNumber":19,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" this.isDone \u003d !isDone;","lastModifiedDate":"2024-01-22"},{"lineNumber":20,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" String msg \u003d this.isDone ? \"Nice! I\u0027ve marked this task as done:\\n\"","lastModifiedDate":"2024-01-22"},{"lineNumber":21,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" : \"OK, I\u0027ve marked this task as not done yet:\\n\";","lastModifiedDate":"2024-01-22"},{"lineNumber":22,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":23,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" return msg + \"[\" + this.getStatusIcon() + \"] \" + this.description;","lastModifiedDate":"2024-01-22"},{"lineNumber":24,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":25,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public String getType() {","lastModifiedDate":"2024-01-22"},{"lineNumber":26,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" return \"\";","lastModifiedDate":"2024-01-27"},{"lineNumber":27,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":28,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public String getExtraInfoShortened() {","lastModifiedDate":"2024-01-27"},{"lineNumber":29,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" return \"\";","lastModifiedDate":"2024-01-27"},{"lineNumber":30,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":31,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":32,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public String getExtraInfo() {","lastModifiedDate":"2024-01-22"},{"lineNumber":33,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" return \"\";","lastModifiedDate":"2024-01-22"},{"lineNumber":34,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":35,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":36,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"Lin-Shuang-Shuang":36}},{"path":"src/main/java/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"public class Todo extends Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" private final String TYPE \u003d \"T\";","lastModifiedDate":"2024-01-27"},{"lineNumber":4,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public Todo(String description) {","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" super(description);","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public String getType() {","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" return this.TYPE;","lastModifiedDate":"2024-01-27"},{"lineNumber":10,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public String getExtraInfoShortened() {","lastModifiedDate":"2024-01-27"},{"lineNumber":12,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" return \"\";","lastModifiedDate":"2024-01-27"},{"lineNumber":13,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":14,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":15,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public String getExtraInfo() {","lastModifiedDate":"2024-01-22"},{"lineNumber":16,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" return \"\";","lastModifiedDate":"2024-01-22"},{"lineNumber":17,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":18,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"Lin-Shuang-Shuang":18}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"todo borrow book","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"list","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"deadline return book /by Sunday","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"Lin-Shuang-Shuang":4}}] +[{"path":"build.gradle","fileType":"gradle","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"plugins {","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":" id \u0027java\u0027","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":" id \u0027application\u0027","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":" id \u0027com.github.johnrengelman.shadow\u0027 version \u00277.1.2\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"repositories {","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":" mavenCentral()","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"dependencies {","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":" testImplementation group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-api\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":" testRuntimeOnly group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-engine\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" mainClass.set(\"Lery.Lery\")","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" archiveBaseName \u003d \"Lery\"","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":"run{","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"Lin-Shuang-Shuang":2,"-":40}},{"path":"data/duke.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"T | 1 | read book","lastModifiedDate":"2024-01-27"},{"lineNumber":2,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"D | 0 | return book | 2019-10-15","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"E | 0 | project meeting | Aug 6th 2pm-4pm","lastModifiedDate":"2024-01-27"},{"lineNumber":4,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"T | 1 | join sports club","lastModifiedDate":"2024-01-27"},{"lineNumber":5,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"T | 0 | run","lastModifiedDate":"2024-01-27"},{"lineNumber":6,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"E | 0 | project meeting | Mon 2pm-4pm","lastModifiedDate":"2024-01-27"},{"lineNumber":7,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"D | 0 | return book | 2019-10-15","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"T | 0 | borrow book","lastModifiedDate":"2024-01-27"},{"lineNumber":9,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"E | 0 | project meeting | Mon 2pm -4pm","lastModifiedDate":"2024-01-27"},{"lineNumber":10,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"D | 0 | read | 2020-12-22","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"D | 0 | read | 2020-12-22","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"T | 0 | eat","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"D | 0 | shower | 2020-12-22","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"T | 0 | run","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"Lin-Shuang-Shuang":14}},{"path":"src/main/java/Lery/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"package Lery;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"public class DukeException extends Exception {","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public DukeException() {","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" super();","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public DukeException(String message) {","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" super(message);","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"Lin-Shuang-Shuang":11}},{"path":"src/main/java/Lery/Lery.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"package Lery;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"/**","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" * Duke is a chatbot program that is used to save tasks","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" * @author Lin Shuang Shuang","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" * @version 1.0","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" * @since 2023-01-25","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"public class Lery {","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" private Storage storage;","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" private Ui ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public Lery() {","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" this.ui \u003d new Ui();","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" this.storage \u003d new Storage();","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public void run() throws DukeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" ui.greet();","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" this.storage.loadTasks();","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" while(scanner.hasNext()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" Parser p \u003d new Parser(this.storage);","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" String command \u003d scanner.nextLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" if (command.equalsIgnoreCase(\"bye\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" ui.exit();","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" ui.printMessageWithLine(p.parseCommand(command));","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" ui.printMessageWithLine(e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" * This is the main method which starts the chatbot.","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" * @param args Unused.","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" * @return Nothing.","lastModifiedDate":"2024-01-30"},{"lineNumber":59,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" * @exception IOException On input error.","lastModifiedDate":"2024-01-30"},{"lineNumber":60,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" * @see IOException","lastModifiedDate":"2024-01-30"},{"lineNumber":61,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":62,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public static void main(String[] args) throws DukeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":63,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" Lery Lery \u003d new Lery();","lastModifiedDate":"2024-01-30"},{"lineNumber":64,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" Lery.run();","lastModifiedDate":"2024-01-30"},{"lineNumber":65,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":66,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":67,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":68,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":69,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"Lin-Shuang-Shuang":69}},{"path":"src/main/java/Lery/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"package Lery;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"import Lery.task.*;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"public class Parser {","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" private Storage storage;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public Parser(Storage s) {","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" this.storage \u003d s;","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public String parseCommand(String command) throws DukeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" TaskList taskList \u003d this.storage.getTaskList();","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" if (command.equalsIgnoreCase(\"list\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" return taskList.printList();","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" } else if (command.startsWith(\"mark\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" Integer id \u003d Integer.parseInt(command.substring(5));","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" return taskList.getTask(id - 1).markAsDone();","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" throw new DukeException(\"Erm... Please enter a valid task number.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" throw new DukeException(\"Erm... Please enter a task number.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" } else if (command.startsWith(\"unmark\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" Integer id \u003d Integer.parseInt(command.substring(7));","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" return taskList.getTask(id - 1).markAsDone();","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" throw new DukeException(\"Erm... Please enter a valid task number.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" throw new DukeException(\"Erm... Please enter a task number.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" } else if (command.startsWith(\"delete\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" Integer id \u003d Integer.parseInt(command.substring(7));","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" return this.parseDeleteTaskCommand(taskList.getTask(id - 1));","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" throw new DukeException(\"Erm... Please enter a valid task number.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" throw new DukeException(\"Erm... Please enter a task number.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" return this.parseAddTaskCommand(command);","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public String parseAddTaskCommand(String command) throws DukeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" String msg \u003d \"Got it. I\u0027ve added this task:\\n\";","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" Task newTask \u003d new Task(command);","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" if (command.startsWith(\"todo\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":59,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" newTask \u003d new Todo(command.substring(5));","lastModifiedDate":"2024-01-30"},{"lineNumber":60,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" } catch (NumberFormatException | IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":61,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" throw new DukeException(\"Erm... Please provide event name.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":62,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":63,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" } else if (command.startsWith(\"deadline\")){","lastModifiedDate":"2024-01-30"},{"lineNumber":64,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":65,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" String[] taskDesc \u003d command.substring(9).split(\"/by \");","lastModifiedDate":"2024-01-30"},{"lineNumber":66,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" this.storage.checkDateFormat(taskDesc[1]);","lastModifiedDate":"2024-01-30"},{"lineNumber":67,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" newTask \u003d new Deadline(taskDesc[0], taskDesc[1]);","lastModifiedDate":"2024-01-30"},{"lineNumber":68,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":69,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":70,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" } catch (NumberFormatException | IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":71,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" throw new DukeException(\"Erm... Please provide event details.\" + e);","lastModifiedDate":"2024-01-30"},{"lineNumber":72,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":73,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" } else if (command.startsWith(\"event\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":74,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":75,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" newTask \u003d new Event(command.substring(6));","lastModifiedDate":"2024-01-30"},{"lineNumber":76,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" } catch (NumberFormatException | IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":77,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" throw new DukeException(\"Erm... Please provide event details.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":78,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":79,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":80,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" throw new DukeException(\"Erm... Please provide a valid command.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":81,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":82,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" this.storage.saveTasks(newTask);","lastModifiedDate":"2024-01-30"},{"lineNumber":83,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":84,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" msg \u003d msg+\"[\"+ newTask.getType() +\"]\"+ \"[\"+newTask.getStatusIcon() +\"]\" + \" \" +","lastModifiedDate":"2024-01-30"},{"lineNumber":85,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" newTask.getDescription() + newTask.getExtraInfo() +\"\\nNow you have \" +","lastModifiedDate":"2024-01-30"},{"lineNumber":86,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" Integer.toString(this.storage.getSize()) +\" tasks in the list.\";","lastModifiedDate":"2024-01-30"},{"lineNumber":87,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" return msg;","lastModifiedDate":"2024-01-30"},{"lineNumber":88,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":89,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":90,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":91,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":92,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public String parseDeleteTaskCommand(Task task) {","lastModifiedDate":"2024-01-30"},{"lineNumber":93,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" this.storage.delete(task);","lastModifiedDate":"2024-01-30"},{"lineNumber":94,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" String msg \u003d \"Noted. I\u0027ve removed this task:\\n\" + task.getType() + \"[\" + task.getStatusIcon() + \"]\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":95,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" \" \" + task.getDescription() + task.getExtraInfo() + \"\\nNow you have \" +","lastModifiedDate":"2024-01-30"},{"lineNumber":96,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" Integer.toString(this.storage.getSize()) + \" tasks in the list.\\n\";","lastModifiedDate":"2024-01-30"},{"lineNumber":97,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" return msg;","lastModifiedDate":"2024-01-30"},{"lineNumber":98,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":99,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"Lin-Shuang-Shuang":99}},{"path":"src/main/java/Lery/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"package Lery;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"import Lery.task.*;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"import java.io.File;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"public class Storage {","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" private File tasksFile;","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" private String FILENAME \u003d \"./data/duke.txt\";","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" private final DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd\");","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" private TaskList taskList;","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public Storage() {","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" this.taskList \u003d new TaskList();","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public TaskList loadTasks() throws DukeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" File file \u003d new File(FILENAME);","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" if (!file.exists()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" throw new DukeException(\"hey\");","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" Scanner s \u003d new Scanner(file);","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" while (s.hasNext()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" String line \u003d s.nextLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" String[] splitLine \u003d line.split(\" \\\\| \");","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" String event \u003d splitLine[2];","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" String type \u003d splitLine[0];","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" Task newTask;","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" if (splitLine.length \u003c 3 || splitLine.length \u003e 4) {","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" throw new DukeException(\"Erm... Textfile not in correct format!\" + splitLine.length);","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" if (type.equalsIgnoreCase(\"T\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" newTask \u003d new Todo(event);","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" } else if (type.equalsIgnoreCase(\"D\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" String extraInfo \u003d splitLine[3];","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" checkDateFormat(extraInfo);","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" newTask \u003d new Deadline(event, extraInfo);","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" } else if (type.equalsIgnoreCase(\"E\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" String extraInfo \u003d splitLine[3];","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" newTask \u003d new Event(event, extraInfo);","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" throw new DukeException(\"Erm... Invalid type!\" + type);","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" this.taskList.add(newTask);","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" s.close();","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" return this.taskList;","lastModifiedDate":"2024-01-30"},{"lineNumber":59,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":60,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" throw new DukeException(\"Erm... Error loading tasks from file\");","lastModifiedDate":"2024-01-30"},{"lineNumber":61,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":62,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":63,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":64,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public void saveTasks(Task newTask) throws DukeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":65,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" String msg \u003d \" | 0 | \";","lastModifiedDate":"2024-01-30"},{"lineNumber":66,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" msg \u003d \"\\n\" + newTask.getType() + msg + newTask.getDescription();","lastModifiedDate":"2024-01-30"},{"lineNumber":67,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" if (newTask instanceof Event || newTask instanceof Deadline) {","lastModifiedDate":"2024-01-30"},{"lineNumber":68,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" msg +\u003d \"| \" + newTask.getExtraInfoShortened();","lastModifiedDate":"2024-01-30"},{"lineNumber":69,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":70,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":71,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" FileWriter fw \u003d new FileWriter(FILENAME, true);","lastModifiedDate":"2024-01-30"},{"lineNumber":72,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" fw.write(msg);","lastModifiedDate":"2024-01-30"},{"lineNumber":73,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" fw.close();","lastModifiedDate":"2024-01-30"},{"lineNumber":74,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" this.taskList.add(newTask);","lastModifiedDate":"2024-01-30"},{"lineNumber":75,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":76,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":77,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" throw new DukeException(\"Erm... Error saving tasks to file\");","lastModifiedDate":"2024-01-30"},{"lineNumber":78,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":79,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":80,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":81,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":82,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public void checkDateFormat(String date) throws DukeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":83,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":84,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" LocalDate d \u003d LocalDate.parse(date, this.formatter);","lastModifiedDate":"2024-01-30"},{"lineNumber":85,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":86,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" } catch (Exception ex) {","lastModifiedDate":"2024-01-30"},{"lineNumber":87,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":88,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" throw new DukeException(\"Erm... Date not keyed in correct format! Correct format is yyyy-MM-dd\"+ex);","lastModifiedDate":"2024-01-30"},{"lineNumber":89,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":90,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":91,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":92,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public TaskList getTaskList() {","lastModifiedDate":"2024-01-30"},{"lineNumber":93,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" return this.taskList;","lastModifiedDate":"2024-01-30"},{"lineNumber":94,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":95,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":96,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public int getSize() {","lastModifiedDate":"2024-01-30"},{"lineNumber":97,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" return this.taskList.getSize();","lastModifiedDate":"2024-01-30"},{"lineNumber":98,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":99,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public void delete(Task t) {","lastModifiedDate":"2024-01-30"},{"lineNumber":100,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" this.taskList.delete(t);","lastModifiedDate":"2024-01-30"},{"lineNumber":101,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":102,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"Lin-Shuang-Shuang":102}},{"path":"src/main/java/Lery/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"package Lery;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"public class Ui {","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" private final String LINE \u003d \"____________________________________________________________\\n\";","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" private final String logo \u003d","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" \" _ \\n\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" \"| | ___ _ __ _ _ \\n\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" \"| | / _ \\\\ \u0027__| | | |\\n\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" \"| |__| __/ | | |_| |\\n\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" \"|_____\\\\___|_| \\\\__, |\\n\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" \" |___/ \\n\";","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public void printMessageWithLine(String m) {","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" System.out.println(this.LINE + m + \"\\n\"+ this.LINE);","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public void greet() {","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" System.out.println(this.LINE + logo + \"Hello! I\u0027m Lery.Lery\" + \"\\n\" + \"What can I do for you?\\n\" +this.LINE);","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public void exit() {","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" System.out.println(this.LINE + \"Bye. Hope to see you again soon!\\n\" + this.LINE);","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"Lin-Shuang-Shuang":24}},{"path":"src/main/java/Lery/task/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"package Lery.task;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" private final String TYPE \u003d \"D\";","lastModifiedDate":"2024-01-27"},{"lineNumber":8,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" private final DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd\");","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" private LocalDate deadline;","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public Deadline(String description) {","lastModifiedDate":"2024-01-22"},{"lineNumber":13,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" super(description.split(\"/\")[0]);","lastModifiedDate":"2024-01-22"},{"lineNumber":14,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" this.deadline \u003d LocalDate.parse(description.split(\"/by \")[1], formatter);","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":16,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":17,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public Deadline(String event, String extraInfo) {","lastModifiedDate":"2024-01-27"},{"lineNumber":18,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" super(event);","lastModifiedDate":"2024-01-27"},{"lineNumber":19,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" this.deadline \u003d LocalDate.parse(extraInfo.replace(\u0027/\u0027,\u0027-\u0027), formatter);;","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":22,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":23,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public String getType() {","lastModifiedDate":"2024-01-22"},{"lineNumber":24,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" return this.TYPE;","lastModifiedDate":"2024-01-27"},{"lineNumber":25,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":26,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public String getExtraInfoShortened() {","lastModifiedDate":"2024-01-27"},{"lineNumber":27,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" return this.deadline.format(DateTimeFormatter.ofPattern(\"yyyy-MM-dd\"));","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":29,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":30,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":31,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public String getExtraInfo() {","lastModifiedDate":"2024-01-22"},{"lineNumber":32,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" return \"(by: \" + this.deadline.format(DateTimeFormatter.ofPattern(\"MMM d yyyy\")) + \")\";","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":34,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":35,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"}","lastModifiedDate":"2024-01-22"},{"lineNumber":36,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":37,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":38,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":39,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"Lin-Shuang-Shuang":39}},{"path":"src/main/java/Lery/task/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"package Lery.task;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" private final String TYPE \u003d \"E\";","lastModifiedDate":"2024-01-27"},{"lineNumber":5,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" private String start;","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" private String end;","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public Event(String description) {","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" super(description.split(\"/\")[0]);","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" int fromId \u003d description.indexOf(\"/from\");","lastModifiedDate":"2024-01-22"},{"lineNumber":13,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" int toId \u003d description.indexOf(\"/to\");","lastModifiedDate":"2024-01-22"},{"lineNumber":14,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" this.start \u003d description.substring(fromId +6, toId-1);","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" this.end \u003d description.substring(toId +4);","lastModifiedDate":"2024-01-22"},{"lineNumber":16,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":17,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":18,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":19,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public Event(String event, String extraInfo) {","lastModifiedDate":"2024-01-27"},{"lineNumber":20,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" super(event);","lastModifiedDate":"2024-01-27"},{"lineNumber":21,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" String[] x \u003d extraInfo.split(\"-\");","lastModifiedDate":"2024-01-27"},{"lineNumber":22,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" this.start \u003d x[0];","lastModifiedDate":"2024-01-27"},{"lineNumber":23,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" this.end \u003d x[1];","lastModifiedDate":"2024-01-27"},{"lineNumber":24,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":25,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public String getType() {","lastModifiedDate":"2024-01-22"},{"lineNumber":26,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" return this.TYPE;","lastModifiedDate":"2024-01-27"},{"lineNumber":27,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":28,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public String getExtraInfoShortened() {","lastModifiedDate":"2024-01-27"},{"lineNumber":29,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":30,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" return this.start + \"-\" + this.end;","lastModifiedDate":"2024-01-27"},{"lineNumber":31,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":32,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":33,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":34,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public String getExtraInfo() {","lastModifiedDate":"2024-01-22"},{"lineNumber":35,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" return \" (from: \" + this.start + \" to: \" + this.end + \")\";","lastModifiedDate":"2024-01-22"},{"lineNumber":36,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":37,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"Lin-Shuang-Shuang":37}},{"path":"src/main/java/Lery/task/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"package Lery.task;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"public class Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" protected String description;","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" protected boolean isDone;","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public Task(String description) {","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-01-22"},{"lineNumber":13,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" return (isDone ? \"X\" : \" \"); // mark done task with X","lastModifiedDate":"2024-01-22"},{"lineNumber":14,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":15,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":16,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public String getDescription() {","lastModifiedDate":"2024-01-22"},{"lineNumber":17,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" return this.description;","lastModifiedDate":"2024-01-22"},{"lineNumber":18,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":19,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":20,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public String markAsDone() {","lastModifiedDate":"2024-01-22"},{"lineNumber":21,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" this.isDone \u003d !isDone;","lastModifiedDate":"2024-01-22"},{"lineNumber":22,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" String msg \u003d this.isDone ? \"Nice! I\u0027ve marked this task as done:\\n\"","lastModifiedDate":"2024-01-22"},{"lineNumber":23,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" : \"OK, I\u0027ve marked this task as not done yet:\\n\";","lastModifiedDate":"2024-01-22"},{"lineNumber":24,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":25,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" return msg + \"[\" + this.getStatusIcon() + \"] \" + this.description;","lastModifiedDate":"2024-01-22"},{"lineNumber":26,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":27,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public String getType() {","lastModifiedDate":"2024-01-22"},{"lineNumber":28,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" return \"\";","lastModifiedDate":"2024-01-27"},{"lineNumber":29,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":30,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public String getExtraInfoShortened() {","lastModifiedDate":"2024-01-27"},{"lineNumber":31,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" return \"\";","lastModifiedDate":"2024-01-27"},{"lineNumber":32,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":33,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":34,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public String getExtraInfo() {","lastModifiedDate":"2024-01-22"},{"lineNumber":35,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" return \"\";","lastModifiedDate":"2024-01-22"},{"lineNumber":36,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":37,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":38,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"Lin-Shuang-Shuang":38}},{"path":"src/main/java/Lery/task/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"package Lery.task;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"public class TaskList {","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" private ArrayList\u003cTask\u003e taskList;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public TaskList() {","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" this.taskList \u003d new ArrayList\u003cTask\u003e();","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public TaskList(ArrayList\u003cTask\u003e tl) {","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" this.taskList \u003d tl;","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public void add(Task t) {","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" this.taskList.add(t);","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public void delete(Task t) {","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" this.taskList.remove(t);","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public int getSize() {","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" return this.taskList.size();","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public Task getTask(int id) {","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" return this.taskList.get(id);","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public String printList() {","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" String list \u003d \"Here are the tasks in your list:\\n\";","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" for (int i \u003d 0; i\u003cthis.getSize(); i++) {","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" Task task \u003d this.getTask(i);","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" String message \u003d Integer.toString(i+1) + \".\" +\"[\" +task.getType()+\"]\"+\"[\" + task.getStatusIcon() +\"] \" + task.getDescription() + task.getExtraInfo()+\"\\n\";","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" list +\u003d message;","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" return list;","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"Lin-Shuang-Shuang":44}},{"path":"src/main/java/Lery/task/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"package Lery.task;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"public class Todo extends Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" private final String TYPE \u003d \"T\";","lastModifiedDate":"2024-01-27"},{"lineNumber":6,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public Todo(String description) {","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" super(description);","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public String getType() {","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" return this.TYPE;","lastModifiedDate":"2024-01-27"},{"lineNumber":12,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":13,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public String getExtraInfoShortened() {","lastModifiedDate":"2024-01-27"},{"lineNumber":14,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" return \"\";","lastModifiedDate":"2024-01-27"},{"lineNumber":15,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":16,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":17,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public String getExtraInfo() {","lastModifiedDate":"2024-01-22"},{"lineNumber":18,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" return \"\";","lastModifiedDate":"2024-01-22"},{"lineNumber":19,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":20,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"Lin-Shuang-Shuang":20}},{"path":"src/test/java/Lery/task/DeadlineTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"package Lery.task;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"public class DeadlineTest {","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public void testGetType(){","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" assertEquals(\"D\", new Deadline(\"return book\", \"2024/01/22\").getType());","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public void testGetExtraInfo(){","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" assertEquals(\"(by: Jan 22 2024)\", new Deadline(\"return book\", \"2024/01/22\").getExtraInfo());","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public void testGetExtraInfoShortened(){","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" assertEquals(\"2024-01-22\", new Deadline(\"return book\", \"2024/01/22\").getExtraInfoShortened());","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"Lin-Shuang-Shuang":21}},{"path":"src/test/java/Lery/task/EventTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"package Lery.task;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"public class EventTest {","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public void testGetType(){","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" assertEquals(\"E\", new Event(\"project meeting /from Mon 2pm /to 4pm\").getType());","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public void testGetExtraInfo(){","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" assertEquals(\" (from: Mon 2pm to: 4pm)\", new Event(\"project meeting /from Mon 2pm /to 4pm\").getExtraInfo());","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public void testGetExtraInfoShortened(){","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" assertEquals(\"Mon 2pm-4pm\", new Event(\"project meeting /from Mon 2pm /to 4pm\").getExtraInfoShortened());","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"Lin-Shuang-Shuang":24}},{"path":"src/test/java/Lery/task/TaskTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"package Lery.task;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"public class TaskTest {","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public void testGetStatusIcon(){","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" assertEquals(\" \", new Task(\"read book\").getStatusIcon());","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public void testGetDescription(){","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" assertEquals(\"read book\", new Task(\"read book\").getDescription());","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public void testMarkAsDone(){","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" assertEquals(\"Nice! I\u0027ve marked this task as done:\\n\" + \"[X] \" + \"read book\", new Task(\"read book\").markAsDone());","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public void testUnmarkAsDone(){","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" Task t \u003d new Task(\"read book\");","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" t.markAsDone();","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" assertEquals(\"OK, I\u0027ve marked this task as not done yet:\\n\" + \"[ ] \" + \"read book\", t.markAsDone());","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public void testGetType(){","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" assertEquals(\"\", new Task(\"read book\").getType());","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public void testGetExtraInfo(){","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" assertEquals(\"\", new Task(\"read book\").getExtraInfo());","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public void testGetExtraInfoShortened(){","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" assertEquals(\"\", new Task(\"read book\").getExtraInfoShortened());","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"Lin-Shuang-Shuang":39}},{"path":"src/test/java/Lery/task/TodoTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"package Lery.task; //same package as the class being tested","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"public class TodoTest {","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public void testGetType(){","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" assertEquals(\"T\", new Todo(\"read book\").getType());","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public void testGetExtraInfo(){","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" assertEquals(\"\", new Todo(\"read book\").getExtraInfo());","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public void testGetExtraInfoShortened(){","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" assertEquals(\"\", new Todo(\"read book\").getExtraInfoShortened());","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"Lin-Shuang-Shuang":21}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"todo borrow book","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"list","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"deadline return book /by Sunday","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"Lin-Shuang-Shuang":4}}] diff --git a/Lin-Shuang-Shuang_ip_master/commits.json b/Lin-Shuang-Shuang_ip_master/commits.json index c896b285..49f09fda 100644 --- a/Lin-Shuang-Shuang_ip_master/commits.json +++ b/Lin-Shuang-Shuang_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"Lin-Shuang-Shuang":[{"date":"2024-01-21","commitResults":[{"hash":"cad288eb3d92b0fc6fe2cc8bba1a3841541fca08","isMergeCommit":false,"messageTitle":"Level 0. Rename, Greet, Exit","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":20,"deletions":6}}},{"hash":"eac43d9159f8125bc7e5c3996571d6b1b0e24387","isMergeCommit":false,"messageTitle":"Level 1. Echo","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":24,"deletions":4}}},{"hash":"10949b76df08c57d387049323c5f76393f07d017","isMergeCommit":false,"messageTitle":"Level 2. Add, List","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":19,"deletions":5}}}]},{"date":"2024-01-22","commitResults":[{"hash":"73d2dc90b47dcbb2297335383549c22dcf37a599","isMergeCommit":false,"messageTitle":"Level 3. Mark as Done","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":45,"deletions":4}}},{"hash":"58ea966f7ecd565c58e0946c2d654303bd5f008a","isMergeCommit":false,"messageTitle":"Level 4. ToDos, Events, Deadlines","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":89,"deletions":10}}}]},{"date":"2024-01-23","commitResults":[{"hash":"7e5061717d23a2800061764bf2b6e2d5900f9321","isMergeCommit":false,"messageTitle":"Automated Text UI Testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":0}}},{"hash":"01d8f09f22de68492837aab23060b21adc8398ed","isMergeCommit":false,"messageTitle":"Level 5. Handle Errors","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":64,"deletions":22}}},{"hash":"36a520a9b9d12c6e997928aa4047f23e0bc48238","isMergeCommit":false,"messageTitle":"Level 6. Delete","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":26,"deletions":9}}}]},{"date":"2024-01-27","commitResults":[{"hash":"137847916f5ee4a4960187ce7ac3743ce42c7808","isMergeCommit":false,"messageTitle":"Add saving tasks in and loading tasks from hard disk feature","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":11,"deletions":0},"java":{"insertions":129,"deletions":28}}}]},{"date":"2024-01-28","commitResults":[{"hash":"cf2ed3d52216609e4a09ad3c27a10b9d16e42f97","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}}]},{"date":"2024-01-29","commitResults":[{"hash":"50d65dad464b97f2f7aab71cc1ac74e0c13c0508","isMergeCommit":false,"messageTitle":"Add dates and times to deadline tasks","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":5,"deletions":5},"java":{"insertions":36,"deletions":7}}},{"hash":"da4a421886ebf87c888e5af8b74e68f69da3f767","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"Lin-Shuang-Shuang":{"java":363,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":0,"txt":15}},"authorContributionVariance":{"Lin-Shuang-Shuang":4082.0},"authorDisplayNameMap":{"Lin-Shuang-Shuang":"CS2103T-W08-4 LIN ..UANG"}} +{"authorDailyContributionsMap":{"Lin-Shuang-Shuang":[{"date":"2024-01-21","commitResults":[{"hash":"cad288eb3d92b0fc6fe2cc8bba1a3841541fca08","isMergeCommit":false,"messageTitle":"Level 0. Rename, Greet, Exit","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":20,"deletions":6}}},{"hash":"eac43d9159f8125bc7e5c3996571d6b1b0e24387","isMergeCommit":false,"messageTitle":"Level 1. Echo","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":24,"deletions":4}}},{"hash":"10949b76df08c57d387049323c5f76393f07d017","isMergeCommit":false,"messageTitle":"Level 2. Add, List","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":19,"deletions":5}}}]},{"date":"2024-01-22","commitResults":[{"hash":"73d2dc90b47dcbb2297335383549c22dcf37a599","isMergeCommit":false,"messageTitle":"Level 3. Mark as Done","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":45,"deletions":4}}},{"hash":"58ea966f7ecd565c58e0946c2d654303bd5f008a","isMergeCommit":false,"messageTitle":"Level 4. ToDos, Events, Deadlines","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":89,"deletions":10}}}]},{"date":"2024-01-23","commitResults":[{"hash":"7e5061717d23a2800061764bf2b6e2d5900f9321","isMergeCommit":false,"messageTitle":"Automated Text UI Testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":0}}},{"hash":"01d8f09f22de68492837aab23060b21adc8398ed","isMergeCommit":false,"messageTitle":"Level 5. Handle Errors","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":64,"deletions":22}}},{"hash":"36a520a9b9d12c6e997928aa4047f23e0bc48238","isMergeCommit":false,"messageTitle":"Level 6. Delete","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":26,"deletions":9}}}]},{"date":"2024-01-27","commitResults":[{"hash":"137847916f5ee4a4960187ce7ac3743ce42c7808","isMergeCommit":false,"messageTitle":"Add saving tasks in and loading tasks from hard disk feature","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":11,"deletions":0},"java":{"insertions":129,"deletions":28}}}]},{"date":"2024-01-28","commitResults":[{"hash":"cf2ed3d52216609e4a09ad3c27a10b9d16e42f97","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}}]},{"date":"2024-01-29","commitResults":[{"hash":"50d65dad464b97f2f7aab71cc1ac74e0c13c0508","isMergeCommit":false,"messageTitle":"Add dates and times to deadline tasks","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":5,"deletions":5},"java":{"insertions":36,"deletions":7}}},{"hash":"da4a421886ebf87c888e5af8b74e68f69da3f767","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}}]},{"date":"2024-01-30","commitResults":[{"hash":"5f75e93e4809e869446b6dae8feac0ddc6b236dc","isMergeCommit":false,"messageTitle":"Add more OOP","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":1},"java":{"insertions":327,"deletions":231}}},{"hash":"5acb39fff0094e698d37d9bdedcfd0f4e0bd836f","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-AMoreOOP\u0027","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{}},{"hash":"b5c69316ebba4a021d6d16c6a240e37f917e0f9a","isMergeCommit":false,"messageTitle":"Add packages","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":25,"deletions":5}}},{"hash":"8c4681243ac74f19e31711db6c982dcbe9ab7268","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-APackages\u0027","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{}},{"hash":"f99e22dc264602deedaa2800f2d56ffa5890c34d","isMergeCommit":true,"messageTitle":"Merge branch \u0027add-gradle-support\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"f1d94aab6ea9bd2b5940d8b143801d4da36eda43","isMergeCommit":false,"messageTitle":"Add Gradle support","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":1}}},{"hash":"13358ed5e47282021e59b2584ae48d03f4cbf61a","isMergeCommit":false,"messageTitle":"Add JUnit test cases for task","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":1},"java":{"insertions":107,"deletions":2}}},{"hash":"3a4d3008d7f46f120d5a269d192b7ffc3624b64e","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-AJUnit\u0027","messageBody":"","tags":["A-JUnit"],"fileTypesAndContributionMap":{}},{"hash":"fdef3a306013e8bb4f6f1bd7d33201bb569a6341","isMergeCommit":false,"messageTitle":"Package App as a JAR file","messageBody":"","tags":["A-Jar"],"fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":1}}}]}]},"authorFileTypeContributionMap":{"Lin-Shuang-Shuang":{"java":588,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":2,"txt":18}},"authorContributionVariance":{"Lin-Shuang-Shuang":36614.72},"authorDisplayNameMap":{"Lin-Shuang-Shuang":"CS2103T-W08-4 LIN ..UANG"}} diff --git a/NatLeong_ip_master/authorship.json b/NatLeong_ip_master/authorship.json index 56ab3cc9..f6961173 100644 --- a/NatLeong_ip_master/authorship.json +++ b/NatLeong_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"src/main/java/Dav.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"NatLeong"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"NatLeong"},"content":"import java.util.List;","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"NatLeong"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"NatLeong"},"content":"public class Dav {","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"NatLeong"},"content":" private static List\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"NatLeong"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"NatLeong"},"content":" greetUser();","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"NatLeong"},"content":" startChat();","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"NatLeong"},"content":" exit();","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"NatLeong"},"content":" public static void greetUser() {","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"NatLeong"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"NatLeong"},"content":" System.out.println(\" What\u0027s up! I\u0027m Dav\");","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"NatLeong"},"content":" System.out.println(\" How may I help you?\");","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"NatLeong"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"NatLeong"},"content":" public static void startChat() {","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"NatLeong"},"content":" Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"NatLeong"},"content":" String userInput;","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"NatLeong"},"content":" do {","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"NatLeong"},"content":" userInput \u003d getUserInput(scanner);","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"NatLeong"},"content":" processUserInput(userInput);","lastModifiedDate":"2024-01-25"},{"lineNumber":28,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":29,"author":{"gitId":"NatLeong"},"content":" } while (!userInput.equalsIgnoreCase(\"bye\"));","lastModifiedDate":"2024-01-25"},{"lineNumber":30,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":31,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":32,"author":{"gitId":"NatLeong"},"content":" public static String getUserInput(Scanner scanner) {","lastModifiedDate":"2024-01-25"},{"lineNumber":33,"author":{"gitId":"NatLeong"},"content":" System.out.print(\" \");","lastModifiedDate":"2024-01-25"},{"lineNumber":34,"author":{"gitId":"NatLeong"},"content":" return scanner.nextLine();","lastModifiedDate":"2024-01-25"},{"lineNumber":35,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":36,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":37,"author":{"gitId":"NatLeong"},"content":" public static void processUserInput(String input) {","lastModifiedDate":"2024-01-25"},{"lineNumber":38,"author":{"gitId":"NatLeong"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-25"},{"lineNumber":39,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":40,"author":{"gitId":"NatLeong"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":41,"author":{"gitId":"NatLeong"},"content":" if (input.equalsIgnoreCase(\"list\")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":42,"author":{"gitId":"NatLeong"},"content":" listTasks();","lastModifiedDate":"2024-01-25"},{"lineNumber":43,"author":{"gitId":"NatLeong"},"content":" } else if (input.startsWith(\"mark \")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":44,"author":{"gitId":"NatLeong"},"content":" int taskIndex \u003d Integer.parseInt(input.substring(5).trim());","lastModifiedDate":"2024-01-25"},{"lineNumber":45,"author":{"gitId":"NatLeong"},"content":" markTaskDone(taskIndex);","lastModifiedDate":"2024-01-25"},{"lineNumber":46,"author":{"gitId":"NatLeong"},"content":" } else if (input.startsWith(\"unmark \")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":47,"author":{"gitId":"NatLeong"},"content":" int taskIndex \u003d Integer.parseInt(input.substring(7).trim());","lastModifiedDate":"2024-01-25"},{"lineNumber":48,"author":{"gitId":"NatLeong"},"content":" unmarkTaskDone(taskIndex);","lastModifiedDate":"2024-01-25"},{"lineNumber":49,"author":{"gitId":"NatLeong"},"content":" } else if (input.startsWith(\"todo\")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":50,"author":{"gitId":"NatLeong"},"content":" addTodoTask(input.substring(4).trim());","lastModifiedDate":"2024-01-25"},{"lineNumber":51,"author":{"gitId":"NatLeong"},"content":" } else if (input.startsWith(\"deadline\")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":52,"author":{"gitId":"NatLeong"},"content":" addDeadlineTask(input.substring(8).trim());","lastModifiedDate":"2024-01-25"},{"lineNumber":53,"author":{"gitId":"NatLeong"},"content":" } else if (input.startsWith(\"event\")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":54,"author":{"gitId":"NatLeong"},"content":" addEventTask(input.substring(5).trim());","lastModifiedDate":"2024-01-25"},{"lineNumber":55,"author":{"gitId":"NatLeong"},"content":" } else if (input.startsWith(\"delete\")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":56,"author":{"gitId":"NatLeong"},"content":" int taskIndex \u003d Integer.parseInt(input.substring(6).trim());","lastModifiedDate":"2024-01-25"},{"lineNumber":57,"author":{"gitId":"NatLeong"},"content":" deleteTask(taskIndex);","lastModifiedDate":"2024-01-25"},{"lineNumber":58,"author":{"gitId":"NatLeong"},"content":" } else if (!input.equalsIgnoreCase(\"bye\")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":59,"author":{"gitId":"NatLeong"},"content":" throw new IllegalArgumentException(\"Huh? what\u0027s that?\");","lastModifiedDate":"2024-01-25"},{"lineNumber":60,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":61,"author":{"gitId":"NatLeong"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":62,"author":{"gitId":"NatLeong"},"content":" System.out.println(\"This is not valid task index.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":63,"author":{"gitId":"NatLeong"},"content":" } catch (IllegalArgumentException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":64,"author":{"gitId":"NatLeong"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-25"},{"lineNumber":65,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":66,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":67,"author":{"gitId":"NatLeong"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-25"},{"lineNumber":68,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":69,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":70,"author":{"gitId":"NatLeong"},"content":" public static void addTodoTask(String taskDescription) {","lastModifiedDate":"2024-01-25"},{"lineNumber":71,"author":{"gitId":"NatLeong"},"content":" if (taskDescription.isEmpty()) {","lastModifiedDate":"2024-01-25"},{"lineNumber":72,"author":{"gitId":"NatLeong"},"content":" System.out.println(\"Do nothing?\");","lastModifiedDate":"2024-01-25"},{"lineNumber":73,"author":{"gitId":"NatLeong"},"content":" } else {","lastModifiedDate":"2024-01-25"},{"lineNumber":74,"author":{"gitId":"NatLeong"},"content":" addTask(new TodoTask(taskDescription));","lastModifiedDate":"2024-01-25"},{"lineNumber":75,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":76,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":77,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":78,"author":{"gitId":"NatLeong"},"content":" public static void addDeadlineTask(String taskDetails) {","lastModifiedDate":"2024-01-25"},{"lineNumber":79,"author":{"gitId":"NatLeong"},"content":" String[] details \u003d taskDetails.split(\" /by \");","lastModifiedDate":"2024-01-25"},{"lineNumber":80,"author":{"gitId":"NatLeong"},"content":" if (details.length \u003d\u003d 2) {","lastModifiedDate":"2024-01-25"},{"lineNumber":81,"author":{"gitId":"NatLeong"},"content":" String description \u003d details[0].trim();","lastModifiedDate":"2024-01-25"},{"lineNumber":82,"author":{"gitId":"NatLeong"},"content":" String by \u003d details[1].trim();","lastModifiedDate":"2024-01-25"},{"lineNumber":83,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":84,"author":{"gitId":"NatLeong"},"content":" if (description.isEmpty()) {","lastModifiedDate":"2024-01-25"},{"lineNumber":85,"author":{"gitId":"NatLeong"},"content":" System.out.println(\"No deadline?\");","lastModifiedDate":"2024-01-25"},{"lineNumber":86,"author":{"gitId":"NatLeong"},"content":" } else {","lastModifiedDate":"2024-01-25"},{"lineNumber":87,"author":{"gitId":"NatLeong"},"content":" addTask(new DeadlineTask(description, by));","lastModifiedDate":"2024-01-25"},{"lineNumber":88,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":89,"author":{"gitId":"NatLeong"},"content":" } else {","lastModifiedDate":"2024-01-25"},{"lineNumber":90,"author":{"gitId":"NatLeong"},"content":" System.out.println(\"Invalid deadline task format.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":91,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":92,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":93,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":94,"author":{"gitId":"NatLeong"},"content":" public static void addEventTask(String taskDetails) {","lastModifiedDate":"2024-01-25"},{"lineNumber":95,"author":{"gitId":"NatLeong"},"content":" String[] details \u003d taskDetails.split(\" /from \");","lastModifiedDate":"2024-01-25"},{"lineNumber":96,"author":{"gitId":"NatLeong"},"content":" if (details.length \u003d\u003d 2) {","lastModifiedDate":"2024-01-25"},{"lineNumber":97,"author":{"gitId":"NatLeong"},"content":" String description \u003d details[0].trim();","lastModifiedDate":"2024-01-25"},{"lineNumber":98,"author":{"gitId":"NatLeong"},"content":" String[] timeDetails \u003d details[1].split(\" /to \");","lastModifiedDate":"2024-01-25"},{"lineNumber":99,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":100,"author":{"gitId":"NatLeong"},"content":" if (description.isEmpty()) {","lastModifiedDate":"2024-01-25"},{"lineNumber":101,"author":{"gitId":"NatLeong"},"content":" System.out.println(\"No event?\");","lastModifiedDate":"2024-01-25"},{"lineNumber":102,"author":{"gitId":"NatLeong"},"content":" } else if (timeDetails.length \u003d\u003d 2) {","lastModifiedDate":"2024-01-25"},{"lineNumber":103,"author":{"gitId":"NatLeong"},"content":" addTask(new EventTask(description, timeDetails[0], timeDetails[1]));","lastModifiedDate":"2024-01-25"},{"lineNumber":104,"author":{"gitId":"NatLeong"},"content":" } else {","lastModifiedDate":"2024-01-25"},{"lineNumber":105,"author":{"gitId":"NatLeong"},"content":" System.out.println(\"Invalid event task format.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":106,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":107,"author":{"gitId":"NatLeong"},"content":" } else {","lastModifiedDate":"2024-01-25"},{"lineNumber":108,"author":{"gitId":"NatLeong"},"content":" System.out.println(\"Invalid event task format.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":109,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":110,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":111,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":112,"author":{"gitId":"NatLeong"},"content":" public static void addTask(Task task) {","lastModifiedDate":"2024-01-25"},{"lineNumber":113,"author":{"gitId":"NatLeong"},"content":" tasks.add(task);","lastModifiedDate":"2024-01-25"},{"lineNumber":114,"author":{"gitId":"NatLeong"},"content":" System.out.println(\" Got it. I\u0027ve added this task:\");","lastModifiedDate":"2024-01-25"},{"lineNumber":115,"author":{"gitId":"NatLeong"},"content":" System.out.println(\" \" + task);","lastModifiedDate":"2024-01-25"},{"lineNumber":116,"author":{"gitId":"NatLeong"},"content":" System.out.println(\" Now you have \" + tasks.size() + \" tasks in the list.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":117,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":118,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":119,"author":{"gitId":"NatLeong"},"content":" public static void listTasks() {","lastModifiedDate":"2024-01-25"},{"lineNumber":120,"author":{"gitId":"NatLeong"},"content":" if (tasks.isEmpty()) {","lastModifiedDate":"2024-01-25"},{"lineNumber":121,"author":{"gitId":"NatLeong"},"content":" System.out.println(\" No tasks added yet.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":122,"author":{"gitId":"NatLeong"},"content":" } else {","lastModifiedDate":"2024-01-25"},{"lineNumber":123,"author":{"gitId":"NatLeong"},"content":" System.out.println(\" Here are the tasks in your list:\");","lastModifiedDate":"2024-01-25"},{"lineNumber":124,"author":{"gitId":"NatLeong"},"content":" for (int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2024-01-25"},{"lineNumber":125,"author":{"gitId":"NatLeong"},"content":" System.out.println(\" \" + (i + 1) + \".\" + tasks.get(i));","lastModifiedDate":"2024-01-25"},{"lineNumber":126,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":127,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":128,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":129,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":130,"author":{"gitId":"NatLeong"},"content":" public static void markTaskDone(int taskIndex) {","lastModifiedDate":"2024-01-25"},{"lineNumber":131,"author":{"gitId":"NatLeong"},"content":" if (isValidIndex(taskIndex)) {","lastModifiedDate":"2024-01-25"},{"lineNumber":132,"author":{"gitId":"NatLeong"},"content":" tasks.get(taskIndex - 1).markAsDone();","lastModifiedDate":"2024-01-25"},{"lineNumber":133,"author":{"gitId":"NatLeong"},"content":" System.out.println(\" Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2024-01-25"},{"lineNumber":134,"author":{"gitId":"NatLeong"},"content":" System.out.println(\" \" + tasks.get(taskIndex - 1));","lastModifiedDate":"2024-01-25"},{"lineNumber":135,"author":{"gitId":"NatLeong"},"content":" } else {","lastModifiedDate":"2024-01-25"},{"lineNumber":136,"author":{"gitId":"NatLeong"},"content":" System.out.println(\" Invalid task index.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":137,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":138,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":139,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":140,"author":{"gitId":"NatLeong"},"content":" public static void unmarkTaskDone(int taskIndex) {","lastModifiedDate":"2024-01-25"},{"lineNumber":141,"author":{"gitId":"NatLeong"},"content":" if (isValidIndex(taskIndex)) {","lastModifiedDate":"2024-01-25"},{"lineNumber":142,"author":{"gitId":"NatLeong"},"content":" tasks.get(taskIndex - 1).unmarkAsDone();","lastModifiedDate":"2024-01-25"},{"lineNumber":143,"author":{"gitId":"NatLeong"},"content":" System.out.println(\" OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2024-01-25"},{"lineNumber":144,"author":{"gitId":"NatLeong"},"content":" System.out.println(\" \" + tasks.get(taskIndex - 1));","lastModifiedDate":"2024-01-25"},{"lineNumber":145,"author":{"gitId":"NatLeong"},"content":" } else {","lastModifiedDate":"2024-01-25"},{"lineNumber":146,"author":{"gitId":"NatLeong"},"content":" System.out.println(\" Invalid task index.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":147,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":148,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":149,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":150,"author":{"gitId":"NatLeong"},"content":" public static void deleteTask(int taskIndex) {","lastModifiedDate":"2024-01-25"},{"lineNumber":151,"author":{"gitId":"NatLeong"},"content":" if (isValidIndex(taskIndex)) {","lastModifiedDate":"2024-01-25"},{"lineNumber":152,"author":{"gitId":"NatLeong"},"content":" Task removedTask \u003d tasks.remove(taskIndex - 1);","lastModifiedDate":"2024-01-25"},{"lineNumber":153,"author":{"gitId":"NatLeong"},"content":" System.out.println(\" Task removed:\");","lastModifiedDate":"2024-01-25"},{"lineNumber":154,"author":{"gitId":"NatLeong"},"content":" System.out.println(\" \" + removedTask);","lastModifiedDate":"2024-01-25"},{"lineNumber":155,"author":{"gitId":"NatLeong"},"content":" System.out.println(\" Now you have \" + tasks.size() + \" tasks in the list.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":156,"author":{"gitId":"NatLeong"},"content":" } else {","lastModifiedDate":"2024-01-25"},{"lineNumber":157,"author":{"gitId":"NatLeong"},"content":" System.out.println(\" Invalid task index.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":158,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":159,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":160,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":161,"author":{"gitId":"NatLeong"},"content":" public static boolean isValidIndex(int index) {","lastModifiedDate":"2024-01-25"},{"lineNumber":162,"author":{"gitId":"NatLeong"},"content":" return index \u003e\u003d 1 \u0026\u0026 index \u003c\u003d tasks.size();","lastModifiedDate":"2024-01-25"},{"lineNumber":163,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":164,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":165,"author":{"gitId":"NatLeong"},"content":" public static void exit() {","lastModifiedDate":"2024-01-25"},{"lineNumber":166,"author":{"gitId":"NatLeong"},"content":" System.out.println(\" Goodbye. \");","lastModifiedDate":"2024-01-25"},{"lineNumber":167,"author":{"gitId":"NatLeong"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-25"},{"lineNumber":168,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":169,"author":{"gitId":"NatLeong"},"content":"}","lastModifiedDate":"2024-01-25"},{"lineNumber":170,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":171,"author":{"gitId":"NatLeong"},"content":"class Task {","lastModifiedDate":"2024-01-25"},{"lineNumber":172,"author":{"gitId":"NatLeong"},"content":" protected String description;","lastModifiedDate":"2024-01-25"},{"lineNumber":173,"author":{"gitId":"NatLeong"},"content":" protected boolean isDone;","lastModifiedDate":"2024-01-25"},{"lineNumber":174,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":175,"author":{"gitId":"NatLeong"},"content":" public Task(String description) {","lastModifiedDate":"2024-01-25"},{"lineNumber":176,"author":{"gitId":"NatLeong"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-25"},{"lineNumber":177,"author":{"gitId":"NatLeong"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-25"},{"lineNumber":178,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":179,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":180,"author":{"gitId":"NatLeong"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-01-25"},{"lineNumber":181,"author":{"gitId":"NatLeong"},"content":" return (isDone ? \"[X]\" : \"[ ]\"); // mark done task with [X]","lastModifiedDate":"2024-01-25"},{"lineNumber":182,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":183,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":184,"author":{"gitId":"NatLeong"},"content":" public void markAsDone() {","lastModifiedDate":"2024-01-25"},{"lineNumber":185,"author":{"gitId":"NatLeong"},"content":" isDone \u003d true;","lastModifiedDate":"2024-01-25"},{"lineNumber":186,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":187,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":188,"author":{"gitId":"NatLeong"},"content":" public void unmarkAsDone() {","lastModifiedDate":"2024-01-25"},{"lineNumber":189,"author":{"gitId":"NatLeong"},"content":" isDone \u003d false;","lastModifiedDate":"2024-01-25"},{"lineNumber":190,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":191,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":192,"author":{"gitId":"NatLeong"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":193,"author":{"gitId":"NatLeong"},"content":" public String toString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":194,"author":{"gitId":"NatLeong"},"content":" return getStatusIcon() + \" \" + description;","lastModifiedDate":"2024-01-25"},{"lineNumber":195,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":196,"author":{"gitId":"NatLeong"},"content":"}","lastModifiedDate":"2024-01-25"},{"lineNumber":197,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":198,"author":{"gitId":"NatLeong"},"content":"class TodoTask extends Task {","lastModifiedDate":"2024-01-25"},{"lineNumber":199,"author":{"gitId":"NatLeong"},"content":" public TodoTask(String description) {","lastModifiedDate":"2024-01-25"},{"lineNumber":200,"author":{"gitId":"NatLeong"},"content":" super(description);","lastModifiedDate":"2024-01-25"},{"lineNumber":201,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":202,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":203,"author":{"gitId":"NatLeong"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":204,"author":{"gitId":"NatLeong"},"content":" public String toString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":205,"author":{"gitId":"NatLeong"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2024-01-25"},{"lineNumber":206,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":207,"author":{"gitId":"NatLeong"},"content":"}","lastModifiedDate":"2024-01-25"},{"lineNumber":208,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":209,"author":{"gitId":"NatLeong"},"content":"class DeadlineTask extends Task {","lastModifiedDate":"2024-01-25"},{"lineNumber":210,"author":{"gitId":"NatLeong"},"content":" protected String by;","lastModifiedDate":"2024-01-25"},{"lineNumber":211,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":212,"author":{"gitId":"NatLeong"},"content":" public DeadlineTask(String description, String by) {","lastModifiedDate":"2024-01-25"},{"lineNumber":213,"author":{"gitId":"NatLeong"},"content":" super(description);","lastModifiedDate":"2024-01-25"},{"lineNumber":214,"author":{"gitId":"NatLeong"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-25"},{"lineNumber":215,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":216,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":217,"author":{"gitId":"NatLeong"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":218,"author":{"gitId":"NatLeong"},"content":" public String toString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":219,"author":{"gitId":"NatLeong"},"content":" return \"[D]\" + super.toString() + \" (by: \" + by + \")\";","lastModifiedDate":"2024-01-25"},{"lineNumber":220,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":221,"author":{"gitId":"NatLeong"},"content":"}","lastModifiedDate":"2024-01-25"},{"lineNumber":222,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":223,"author":{"gitId":"NatLeong"},"content":"class EventTask extends Task {","lastModifiedDate":"2024-01-25"},{"lineNumber":224,"author":{"gitId":"NatLeong"},"content":" protected String from;","lastModifiedDate":"2024-01-25"},{"lineNumber":225,"author":{"gitId":"NatLeong"},"content":" protected String to;","lastModifiedDate":"2024-01-25"},{"lineNumber":226,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":227,"author":{"gitId":"NatLeong"},"content":" public EventTask(String description, String from, String to) {","lastModifiedDate":"2024-01-25"},{"lineNumber":228,"author":{"gitId":"NatLeong"},"content":" super(description);","lastModifiedDate":"2024-01-25"},{"lineNumber":229,"author":{"gitId":"NatLeong"},"content":" this.from \u003d from;","lastModifiedDate":"2024-01-25"},{"lineNumber":230,"author":{"gitId":"NatLeong"},"content":" this.to \u003d to;","lastModifiedDate":"2024-01-25"},{"lineNumber":231,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":232,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":233,"author":{"gitId":"NatLeong"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":234,"author":{"gitId":"NatLeong"},"content":" public String toString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":235,"author":{"gitId":"NatLeong"},"content":" return \"[E]\" + super.toString() + \" (from: \" + from + \" to: \" + to + \")\";","lastModifiedDate":"2024-01-25"},{"lineNumber":236,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":237,"author":{"gitId":"NatLeong"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"NatLeong":237}},{"path":"text-ui-test/runtest.sh","fileType":"sh","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"#!/usr/bin/env bash","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"# create bin directory if it doesn\u0027t exist","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"if [ ! -d \"../bin\" ]","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":" mkdir ../bin","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"# delete output from previous run","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"if [ -e \"./ACTUAL.TXT\" ]","lastModifiedDate":"2020-05-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":" rm ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"# compile the code into the bin folder, terminates if error occurred","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"if ! javac -cp ../src/main/java -Xlint:none -d ../bin ../src/main/java/*.java","lastModifiedDate":"2020-08-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" echo \"********** BUILD FAILURE **********\"","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" exit 1","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":"# run the program, feed commands from input.txt file and redirect the output to the ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"NatLeong"},"content":"java -classpath ../bin Dav \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":"# convert to UNIX format","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":"cp EXPECTED.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":"dos2unix ACTUAL.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"# compare the output to the expected output","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"diff ACTUAL.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":"if [ $? -eq 0 ]","lastModifiedDate":"2020-05-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":" echo \"Test result: PASSED\"","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":" exit 0","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":"else","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" echo \"Test result: FAILED\"","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" exit 1","lastModifiedDate":"2020-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"-":37,"NatLeong":1}}] +[{"path":"src/main/java/Dav.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"NatLeong"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"NatLeong"},"content":"import java.util.List;","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"NatLeong"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"NatLeong"},"content":"public class Dav {","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"NatLeong"},"content":" private static List\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"NatLeong"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"NatLeong"},"content":" greetUser();","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"NatLeong"},"content":" startChat();","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"NatLeong"},"content":" exit();","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"NatLeong"},"content":" public static void greetUser() {","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"NatLeong"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"NatLeong"},"content":" System.out.println(\" What\u0027s up! I\u0027m Dav\");","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"NatLeong"},"content":" System.out.println(\" How may I help you?\");","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"NatLeong"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"NatLeong"},"content":" public static void startChat() {","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"NatLeong"},"content":" Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"NatLeong"},"content":" String userInput;","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"NatLeong"},"content":" do {","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"NatLeong"},"content":" userInput \u003d getUserInput(scanner);","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"NatLeong"},"content":" processUserInput(userInput);","lastModifiedDate":"2024-01-25"},{"lineNumber":28,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":29,"author":{"gitId":"NatLeong"},"content":" } while (!userInput.equalsIgnoreCase(\"bye\"));","lastModifiedDate":"2024-01-25"},{"lineNumber":30,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":31,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":32,"author":{"gitId":"NatLeong"},"content":" public static String getUserInput(Scanner scanner) {","lastModifiedDate":"2024-01-25"},{"lineNumber":33,"author":{"gitId":"NatLeong"},"content":" return scanner.nextLine();","lastModifiedDate":"2024-01-25"},{"lineNumber":34,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":35,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":36,"author":{"gitId":"NatLeong"},"content":" public static void processUserInput(String input) {","lastModifiedDate":"2024-01-25"},{"lineNumber":37,"author":{"gitId":"NatLeong"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-25"},{"lineNumber":38,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":39,"author":{"gitId":"NatLeong"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":40,"author":{"gitId":"NatLeong"},"content":" if (input.equalsIgnoreCase(\"list\")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":41,"author":{"gitId":"NatLeong"},"content":" listTasks();","lastModifiedDate":"2024-01-25"},{"lineNumber":42,"author":{"gitId":"NatLeong"},"content":" } else if (input.startsWith(\"mark \")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":43,"author":{"gitId":"NatLeong"},"content":" int taskIndex \u003d Integer.parseInt(input.substring(5).trim());","lastModifiedDate":"2024-01-25"},{"lineNumber":44,"author":{"gitId":"NatLeong"},"content":" markTaskDone(taskIndex);","lastModifiedDate":"2024-01-25"},{"lineNumber":45,"author":{"gitId":"NatLeong"},"content":" } else if (input.startsWith(\"unmark \")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":46,"author":{"gitId":"NatLeong"},"content":" int taskIndex \u003d Integer.parseInt(input.substring(7).trim());","lastModifiedDate":"2024-01-25"},{"lineNumber":47,"author":{"gitId":"NatLeong"},"content":" unmarkTaskDone(taskIndex);","lastModifiedDate":"2024-01-25"},{"lineNumber":48,"author":{"gitId":"NatLeong"},"content":" } else if (input.startsWith(\"todo\")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":49,"author":{"gitId":"NatLeong"},"content":" addTodoTask(input.substring(4).trim());","lastModifiedDate":"2024-01-25"},{"lineNumber":50,"author":{"gitId":"NatLeong"},"content":" } else if (input.startsWith(\"deadline\")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":51,"author":{"gitId":"NatLeong"},"content":" addDeadlineTask(input.substring(8).trim());","lastModifiedDate":"2024-01-25"},{"lineNumber":52,"author":{"gitId":"NatLeong"},"content":" } else if (input.startsWith(\"event\")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":53,"author":{"gitId":"NatLeong"},"content":" addEventTask(input.substring(5).trim());","lastModifiedDate":"2024-01-25"},{"lineNumber":54,"author":{"gitId":"NatLeong"},"content":" } else if (input.startsWith(\"delete\")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":55,"author":{"gitId":"NatLeong"},"content":" int taskIndex \u003d Integer.parseInt(input.substring(6).trim());","lastModifiedDate":"2024-01-25"},{"lineNumber":56,"author":{"gitId":"NatLeong"},"content":" deleteTask(taskIndex);","lastModifiedDate":"2024-01-25"},{"lineNumber":57,"author":{"gitId":"NatLeong"},"content":" } else if (!input.equalsIgnoreCase(\"bye\")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":58,"author":{"gitId":"NatLeong"},"content":" throw new IllegalArgumentException(\"Huh? what\u0027s that?\");","lastModifiedDate":"2024-01-25"},{"lineNumber":59,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":60,"author":{"gitId":"NatLeong"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":61,"author":{"gitId":"NatLeong"},"content":" System.out.println(\"This is not valid task index.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":62,"author":{"gitId":"NatLeong"},"content":" } catch (IllegalArgumentException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":63,"author":{"gitId":"NatLeong"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-25"},{"lineNumber":64,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":65,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":66,"author":{"gitId":"NatLeong"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-25"},{"lineNumber":67,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":68,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":69,"author":{"gitId":"NatLeong"},"content":" public static void addTodoTask(String taskDescription) {","lastModifiedDate":"2024-01-25"},{"lineNumber":70,"author":{"gitId":"NatLeong"},"content":" if (taskDescription.isEmpty()) {","lastModifiedDate":"2024-01-25"},{"lineNumber":71,"author":{"gitId":"NatLeong"},"content":" System.out.println(\"Do nothing?\");","lastModifiedDate":"2024-01-25"},{"lineNumber":72,"author":{"gitId":"NatLeong"},"content":" } else {","lastModifiedDate":"2024-01-25"},{"lineNumber":73,"author":{"gitId":"NatLeong"},"content":" addTask(new TodoTask(taskDescription));","lastModifiedDate":"2024-01-25"},{"lineNumber":74,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":75,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":76,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":77,"author":{"gitId":"NatLeong"},"content":" public static void addDeadlineTask(String taskDetails) {","lastModifiedDate":"2024-01-25"},{"lineNumber":78,"author":{"gitId":"NatLeong"},"content":" String[] details \u003d taskDetails.split(\" /by \");","lastModifiedDate":"2024-01-25"},{"lineNumber":79,"author":{"gitId":"NatLeong"},"content":" if (details.length \u003d\u003d 2) {","lastModifiedDate":"2024-01-25"},{"lineNumber":80,"author":{"gitId":"NatLeong"},"content":" String description \u003d details[0].trim();","lastModifiedDate":"2024-01-25"},{"lineNumber":81,"author":{"gitId":"NatLeong"},"content":" String by \u003d details[1].trim();","lastModifiedDate":"2024-01-25"},{"lineNumber":82,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":83,"author":{"gitId":"NatLeong"},"content":" if (description.isEmpty()) {","lastModifiedDate":"2024-01-25"},{"lineNumber":84,"author":{"gitId":"NatLeong"},"content":" System.out.println(\"No deadline?\");","lastModifiedDate":"2024-01-25"},{"lineNumber":85,"author":{"gitId":"NatLeong"},"content":" } else {","lastModifiedDate":"2024-01-25"},{"lineNumber":86,"author":{"gitId":"NatLeong"},"content":" addTask(new DeadlineTask(description, by));","lastModifiedDate":"2024-01-25"},{"lineNumber":87,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":88,"author":{"gitId":"NatLeong"},"content":" } else {","lastModifiedDate":"2024-01-25"},{"lineNumber":89,"author":{"gitId":"NatLeong"},"content":" System.out.println(\"Invalid deadline task format.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":90,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":91,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":92,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":93,"author":{"gitId":"NatLeong"},"content":" public static void addEventTask(String taskDetails) {","lastModifiedDate":"2024-01-25"},{"lineNumber":94,"author":{"gitId":"NatLeong"},"content":" String[] details \u003d taskDetails.split(\" /from \");","lastModifiedDate":"2024-01-25"},{"lineNumber":95,"author":{"gitId":"NatLeong"},"content":" if (details.length \u003d\u003d 2) {","lastModifiedDate":"2024-01-25"},{"lineNumber":96,"author":{"gitId":"NatLeong"},"content":" String description \u003d details[0].trim();","lastModifiedDate":"2024-01-25"},{"lineNumber":97,"author":{"gitId":"NatLeong"},"content":" String[] timeDetails \u003d details[1].split(\" /to \");","lastModifiedDate":"2024-01-25"},{"lineNumber":98,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":99,"author":{"gitId":"NatLeong"},"content":" if (description.isEmpty()) {","lastModifiedDate":"2024-01-25"},{"lineNumber":100,"author":{"gitId":"NatLeong"},"content":" System.out.println(\"No event?\");","lastModifiedDate":"2024-01-25"},{"lineNumber":101,"author":{"gitId":"NatLeong"},"content":" } else if (timeDetails.length \u003d\u003d 2) {","lastModifiedDate":"2024-01-25"},{"lineNumber":102,"author":{"gitId":"NatLeong"},"content":" addTask(new EventTask(description, timeDetails[0], timeDetails[1]));","lastModifiedDate":"2024-01-25"},{"lineNumber":103,"author":{"gitId":"NatLeong"},"content":" } else {","lastModifiedDate":"2024-01-25"},{"lineNumber":104,"author":{"gitId":"NatLeong"},"content":" System.out.println(\"Invalid event task format.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":105,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":106,"author":{"gitId":"NatLeong"},"content":" } else {","lastModifiedDate":"2024-01-25"},{"lineNumber":107,"author":{"gitId":"NatLeong"},"content":" System.out.println(\"Invalid event task format.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":108,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":109,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":110,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":111,"author":{"gitId":"NatLeong"},"content":" public static void addTask(Task task) {","lastModifiedDate":"2024-01-25"},{"lineNumber":112,"author":{"gitId":"NatLeong"},"content":" tasks.add(task);","lastModifiedDate":"2024-01-25"},{"lineNumber":113,"author":{"gitId":"NatLeong"},"content":" System.out.println(\" Got it. I\u0027ve added this task:\");","lastModifiedDate":"2024-01-25"},{"lineNumber":114,"author":{"gitId":"NatLeong"},"content":" System.out.println(\" \" + task);","lastModifiedDate":"2024-01-25"},{"lineNumber":115,"author":{"gitId":"NatLeong"},"content":" System.out.println(\" Now you have \" + tasks.size() + \" tasks in the list.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":116,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":117,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":118,"author":{"gitId":"NatLeong"},"content":" public static void listTasks() {","lastModifiedDate":"2024-01-25"},{"lineNumber":119,"author":{"gitId":"NatLeong"},"content":" if (tasks.isEmpty()) {","lastModifiedDate":"2024-01-25"},{"lineNumber":120,"author":{"gitId":"NatLeong"},"content":" System.out.println(\" No tasks added yet.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":121,"author":{"gitId":"NatLeong"},"content":" } else {","lastModifiedDate":"2024-01-25"},{"lineNumber":122,"author":{"gitId":"NatLeong"},"content":" System.out.println(\" Here are the tasks in your list:\");","lastModifiedDate":"2024-01-25"},{"lineNumber":123,"author":{"gitId":"NatLeong"},"content":" for (int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2024-01-25"},{"lineNumber":124,"author":{"gitId":"NatLeong"},"content":" System.out.println(\" \" + (i + 1) + \".\" + tasks.get(i));","lastModifiedDate":"2024-01-25"},{"lineNumber":125,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":126,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":127,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":128,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":129,"author":{"gitId":"NatLeong"},"content":" public static void markTaskDone(int taskIndex) {","lastModifiedDate":"2024-01-25"},{"lineNumber":130,"author":{"gitId":"NatLeong"},"content":" if (isValidIndex(taskIndex)) {","lastModifiedDate":"2024-01-25"},{"lineNumber":131,"author":{"gitId":"NatLeong"},"content":" tasks.get(taskIndex - 1).markAsDone();","lastModifiedDate":"2024-01-25"},{"lineNumber":132,"author":{"gitId":"NatLeong"},"content":" System.out.println(\" Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2024-01-25"},{"lineNumber":133,"author":{"gitId":"NatLeong"},"content":" System.out.println(\" \" + tasks.get(taskIndex - 1));","lastModifiedDate":"2024-01-25"},{"lineNumber":134,"author":{"gitId":"NatLeong"},"content":" } else {","lastModifiedDate":"2024-01-25"},{"lineNumber":135,"author":{"gitId":"NatLeong"},"content":" System.out.println(\" Invalid task index.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":136,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":137,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":138,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":139,"author":{"gitId":"NatLeong"},"content":" public static void unmarkTaskDone(int taskIndex) {","lastModifiedDate":"2024-01-25"},{"lineNumber":140,"author":{"gitId":"NatLeong"},"content":" if (isValidIndex(taskIndex)) {","lastModifiedDate":"2024-01-25"},{"lineNumber":141,"author":{"gitId":"NatLeong"},"content":" tasks.get(taskIndex - 1).unmarkAsDone();","lastModifiedDate":"2024-01-25"},{"lineNumber":142,"author":{"gitId":"NatLeong"},"content":" System.out.println(\" OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2024-01-25"},{"lineNumber":143,"author":{"gitId":"NatLeong"},"content":" System.out.println(\" \" + tasks.get(taskIndex - 1));","lastModifiedDate":"2024-01-25"},{"lineNumber":144,"author":{"gitId":"NatLeong"},"content":" } else {","lastModifiedDate":"2024-01-25"},{"lineNumber":145,"author":{"gitId":"NatLeong"},"content":" System.out.println(\" Invalid task index.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":146,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":147,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":148,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":149,"author":{"gitId":"NatLeong"},"content":" public static void deleteTask(int taskIndex) {","lastModifiedDate":"2024-01-25"},{"lineNumber":150,"author":{"gitId":"NatLeong"},"content":" if (isValidIndex(taskIndex)) {","lastModifiedDate":"2024-01-25"},{"lineNumber":151,"author":{"gitId":"NatLeong"},"content":" Task removedTask \u003d tasks.remove(taskIndex - 1);","lastModifiedDate":"2024-01-25"},{"lineNumber":152,"author":{"gitId":"NatLeong"},"content":" System.out.println(\" Task removed:\");","lastModifiedDate":"2024-01-25"},{"lineNumber":153,"author":{"gitId":"NatLeong"},"content":" System.out.println(\" \" + removedTask);","lastModifiedDate":"2024-01-25"},{"lineNumber":154,"author":{"gitId":"NatLeong"},"content":" System.out.println(\" Now you have \" + tasks.size() + \" tasks in the list.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":155,"author":{"gitId":"NatLeong"},"content":" } else {","lastModifiedDate":"2024-01-25"},{"lineNumber":156,"author":{"gitId":"NatLeong"},"content":" System.out.println(\" Invalid task index.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":157,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":158,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":159,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":160,"author":{"gitId":"NatLeong"},"content":" public static boolean isValidIndex(int index) {","lastModifiedDate":"2024-01-25"},{"lineNumber":161,"author":{"gitId":"NatLeong"},"content":" return index \u003e\u003d 1 \u0026\u0026 index \u003c\u003d tasks.size();","lastModifiedDate":"2024-01-25"},{"lineNumber":162,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":163,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":164,"author":{"gitId":"NatLeong"},"content":" public static void exit() {","lastModifiedDate":"2024-01-25"},{"lineNumber":165,"author":{"gitId":"NatLeong"},"content":" System.out.println(\" Goodbye. \");","lastModifiedDate":"2024-01-25"},{"lineNumber":166,"author":{"gitId":"NatLeong"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-25"},{"lineNumber":167,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":168,"author":{"gitId":"NatLeong"},"content":"}","lastModifiedDate":"2024-01-25"},{"lineNumber":169,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":170,"author":{"gitId":"NatLeong"},"content":"class Task {","lastModifiedDate":"2024-01-25"},{"lineNumber":171,"author":{"gitId":"NatLeong"},"content":" protected String description;","lastModifiedDate":"2024-01-25"},{"lineNumber":172,"author":{"gitId":"NatLeong"},"content":" protected boolean isDone;","lastModifiedDate":"2024-01-25"},{"lineNumber":173,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":174,"author":{"gitId":"NatLeong"},"content":" public Task(String description) {","lastModifiedDate":"2024-01-25"},{"lineNumber":175,"author":{"gitId":"NatLeong"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-25"},{"lineNumber":176,"author":{"gitId":"NatLeong"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-25"},{"lineNumber":177,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":178,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":179,"author":{"gitId":"NatLeong"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-01-25"},{"lineNumber":180,"author":{"gitId":"NatLeong"},"content":" return (isDone ? \"[X]\" : \"[ ]\"); // mark done task with [X]","lastModifiedDate":"2024-01-25"},{"lineNumber":181,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":182,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":183,"author":{"gitId":"NatLeong"},"content":" public void markAsDone() {","lastModifiedDate":"2024-01-25"},{"lineNumber":184,"author":{"gitId":"NatLeong"},"content":" isDone \u003d true;","lastModifiedDate":"2024-01-25"},{"lineNumber":185,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":186,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":187,"author":{"gitId":"NatLeong"},"content":" public void unmarkAsDone() {","lastModifiedDate":"2024-01-25"},{"lineNumber":188,"author":{"gitId":"NatLeong"},"content":" isDone \u003d false;","lastModifiedDate":"2024-01-25"},{"lineNumber":189,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":190,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":191,"author":{"gitId":"NatLeong"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":192,"author":{"gitId":"NatLeong"},"content":" public String toString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":193,"author":{"gitId":"NatLeong"},"content":" return getStatusIcon() + \" \" + description;","lastModifiedDate":"2024-01-25"},{"lineNumber":194,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":195,"author":{"gitId":"NatLeong"},"content":"}","lastModifiedDate":"2024-01-25"},{"lineNumber":196,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":197,"author":{"gitId":"NatLeong"},"content":"class TodoTask extends Task {","lastModifiedDate":"2024-01-25"},{"lineNumber":198,"author":{"gitId":"NatLeong"},"content":" public TodoTask(String description) {","lastModifiedDate":"2024-01-25"},{"lineNumber":199,"author":{"gitId":"NatLeong"},"content":" super(description);","lastModifiedDate":"2024-01-25"},{"lineNumber":200,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":201,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":202,"author":{"gitId":"NatLeong"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":203,"author":{"gitId":"NatLeong"},"content":" public String toString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":204,"author":{"gitId":"NatLeong"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2024-01-25"},{"lineNumber":205,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":206,"author":{"gitId":"NatLeong"},"content":"}","lastModifiedDate":"2024-01-25"},{"lineNumber":207,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":208,"author":{"gitId":"NatLeong"},"content":"class DeadlineTask extends Task {","lastModifiedDate":"2024-01-25"},{"lineNumber":209,"author":{"gitId":"NatLeong"},"content":" protected String by;","lastModifiedDate":"2024-01-25"},{"lineNumber":210,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":211,"author":{"gitId":"NatLeong"},"content":" public DeadlineTask(String description, String by) {","lastModifiedDate":"2024-01-25"},{"lineNumber":212,"author":{"gitId":"NatLeong"},"content":" super(description);","lastModifiedDate":"2024-01-25"},{"lineNumber":213,"author":{"gitId":"NatLeong"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-25"},{"lineNumber":214,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":215,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":216,"author":{"gitId":"NatLeong"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":217,"author":{"gitId":"NatLeong"},"content":" public String toString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":218,"author":{"gitId":"NatLeong"},"content":" return \"[D]\" + super.toString() + \" (by: \" + by + \")\";","lastModifiedDate":"2024-01-25"},{"lineNumber":219,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":220,"author":{"gitId":"NatLeong"},"content":"}","lastModifiedDate":"2024-01-25"},{"lineNumber":221,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":222,"author":{"gitId":"NatLeong"},"content":"class EventTask extends Task {","lastModifiedDate":"2024-01-25"},{"lineNumber":223,"author":{"gitId":"NatLeong"},"content":" protected String from;","lastModifiedDate":"2024-01-25"},{"lineNumber":224,"author":{"gitId":"NatLeong"},"content":" protected String to;","lastModifiedDate":"2024-01-25"},{"lineNumber":225,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":226,"author":{"gitId":"NatLeong"},"content":" public EventTask(String description, String from, String to) {","lastModifiedDate":"2024-01-25"},{"lineNumber":227,"author":{"gitId":"NatLeong"},"content":" super(description);","lastModifiedDate":"2024-01-25"},{"lineNumber":228,"author":{"gitId":"NatLeong"},"content":" this.from \u003d from;","lastModifiedDate":"2024-01-25"},{"lineNumber":229,"author":{"gitId":"NatLeong"},"content":" this.to \u003d to;","lastModifiedDate":"2024-01-25"},{"lineNumber":230,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":231,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":232,"author":{"gitId":"NatLeong"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":233,"author":{"gitId":"NatLeong"},"content":" public String toString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":234,"author":{"gitId":"NatLeong"},"content":" return \"[E]\" + super.toString() + \" (from: \" + from + \" to: \" + to + \")\";","lastModifiedDate":"2024-01-25"},{"lineNumber":235,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":236,"author":{"gitId":"NatLeong"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"NatLeong":236}},{"path":"text-ui-test/runtest.sh","fileType":"sh","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"#!/usr/bin/env bash","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"# create bin directory if it doesn\u0027t exist","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"if [ ! -d \"../bin\" ]","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":" mkdir ../bin","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"# delete output from previous run","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"if [ -e \"./ACTUAL.TXT\" ]","lastModifiedDate":"2020-05-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":" rm ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"# compile the code into the bin folder, terminates if error occurred","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"if ! javac -cp ../src/main/java -Xlint:none -d ../bin ../src/main/java/*.java","lastModifiedDate":"2020-08-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" echo \"********** BUILD FAILURE **********\"","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" exit 1","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":"# run the program, feed commands from input.txt file and redirect the output to the ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"NatLeong"},"content":"java -classpath ../bin Dav \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":"# convert to UNIX format","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":"cp EXPECTED.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":"dos2unix ACTUAL.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"# compare the output to the expected output","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"diff ACTUAL.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":"if [ $? -eq 0 ]","lastModifiedDate":"2020-05-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":" echo \"Test result: PASSED\"","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":" exit 0","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":"else","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" echo \"Test result: FAILED\"","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" exit 1","lastModifiedDate":"2020-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"-":37,"NatLeong":1}}] diff --git a/NatLeong_ip_master/commits.json b/NatLeong_ip_master/commits.json index 129063be..68f38f77 100644 --- a/NatLeong_ip_master/commits.json +++ b/NatLeong_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"NatLeong":[{"date":"2024-01-25","commitResults":[{"hash":"dbd53d9edda3e0295f22d51b60543166b7727e3c","isMergeCommit":false,"messageTitle":"Add Level 0","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":20,"deletions":10}}},{"hash":"da4beeef4d4b28348fbe1179e569fbfd1c4b3769","isMergeCommit":false,"messageTitle":"Add Level 1","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":27,"deletions":5}}},{"hash":"4d8f8cefe88bfb275f85d14757db951c05853974","isMergeCommit":false,"messageTitle":"Add Level 2","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":37,"deletions":6}}},{"hash":"ec68e0a7a5605bb80f56cd00408ef55787cfedac","isMergeCommit":false,"messageTitle":"Add Level 3","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":66,"deletions":6}}},{"hash":"55a11b975c7860dc8f97ed6fd905e94339af0066","isMergeCommit":false,"messageTitle":"Add Level 4","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":82,"deletions":9}}},{"hash":"226d865a0b5621f3c7d1779bbe67a0aeaf9f3a87","isMergeCommit":false,"messageTitle":"Add A-TextUiTesting","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"sh":{"insertions":1,"deletions":1}}},{"hash":"7a81270189f7eb2abf6e60ed8c4c94015e4fc184","isMergeCommit":false,"messageTitle":"Add Level-5","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":41,"deletions":20}}},{"hash":"06f0f93179437466aaa94e906826a978ba1410ae","isMergeCommit":false,"messageTitle":"Add Level 6","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":30,"deletions":20}}}]}]},"authorFileTypeContributionMap":{"NatLeong":{"java":237,"md":0,"fxml":0,"sh":1,"bat":0,"gradle":0,"txt":0}},"authorContributionVariance":{"NatLeong":17774.816},"authorDisplayNameMap":{"NatLeong":"CS2103T-T08-1 LEON..ALIE"}} +{"authorDailyContributionsMap":{"NatLeong":[{"date":"2024-01-25","commitResults":[{"hash":"dbd53d9edda3e0295f22d51b60543166b7727e3c","isMergeCommit":false,"messageTitle":"Add Level 0","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":20,"deletions":10}}},{"hash":"da4beeef4d4b28348fbe1179e569fbfd1c4b3769","isMergeCommit":false,"messageTitle":"Add Level 1","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":27,"deletions":5}}},{"hash":"4d8f8cefe88bfb275f85d14757db951c05853974","isMergeCommit":false,"messageTitle":"Add Level 2","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":37,"deletions":6}}},{"hash":"ec68e0a7a5605bb80f56cd00408ef55787cfedac","isMergeCommit":false,"messageTitle":"Add Level 3","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":66,"deletions":6}}},{"hash":"55a11b975c7860dc8f97ed6fd905e94339af0066","isMergeCommit":false,"messageTitle":"Add Level 4","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":82,"deletions":9}}},{"hash":"226d865a0b5621f3c7d1779bbe67a0aeaf9f3a87","isMergeCommit":false,"messageTitle":"Add A-TextUiTesting","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"sh":{"insertions":1,"deletions":1}}},{"hash":"7a81270189f7eb2abf6e60ed8c4c94015e4fc184","isMergeCommit":false,"messageTitle":"Add Level-5","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":41,"deletions":20}}},{"hash":"06f0f93179437466aaa94e906826a978ba1410ae","isMergeCommit":false,"messageTitle":"Add Level 6","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":30,"deletions":20}}}]},{"date":"2024-01-30","commitResults":[{"hash":"8a8eba7f17906a53c19297aa8518fc0a9cc82366","isMergeCommit":false,"messageTitle":"Add revised A-TextUiTesting","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":1}}}]}]},"authorFileTypeContributionMap":{"NatLeong":{"java":236,"md":0,"fxml":0,"sh":1,"bat":0,"gradle":0,"txt":0}},"authorContributionVariance":{"NatLeong":11083.472},"authorDisplayNameMap":{"NatLeong":"CS2103T-T08-1 LEON..ALIE"}} diff --git a/Ragnapop_ip_master/authorship.json b/Ragnapop_ip_master/authorship.json index 179e8dad..e2bca273 100644 --- a/Ragnapop_ip_master/authorship.json +++ b/Ragnapop_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"data/duke.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"Ragnapop"},"content":"T/1/ hi","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Ragnapop"},"content":"T/0/ what","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"Ragnapop"},"content":"T/0/ gyhu","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"Ragnapop"},"content":"E/0/ fakd/ada/ad","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"Ragnapop"},"content":"D/1/ wtf/wtf","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"Ragnapop":5}},{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Ragnapop"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"Ragnapop"},"content":" protected String by;","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"Ragnapop"},"content":" public Deadline(String description, String by) {","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"Ragnapop"},"content":" super(description);","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"Ragnapop"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"Ragnapop"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"Ragnapop"},"content":" public String getTaskIcon() {","lastModifiedDate":"2024-01-22"},{"lineNumber":13,"author":{"gitId":"Ragnapop"},"content":" return \"D\";","lastModifiedDate":"2024-01-22"},{"lineNumber":14,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":15,"author":{"gitId":"Ragnapop"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":16,"author":{"gitId":"Ragnapop"},"content":" public String ToString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":17,"author":{"gitId":"Ragnapop"},"content":" return super.ToString() + \" (by: \" + by + \")\";","lastModifiedDate":"2024-01-22"},{"lineNumber":18,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":19,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"Ragnapop"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"Ragnapop"},"content":" public String toStore() {","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"Ragnapop"},"content":" if (isDone) {","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"Ragnapop"},"content":" return getTaskIcon() + \"/\" + \"1\" + \"/\" + description + \"/\" + by;","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"Ragnapop"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"Ragnapop"},"content":" return getTaskIcon() + \"/\" + \"0\" + \"/\" + description + \"/\" + by;","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"Ragnapop"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"Ragnapop":28}},{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"Ragnapop"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"Ragnapop"},"content":"import java.io.InputStreamReader;","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"Ragnapop"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"Ragnapop"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"Ragnapop"},"content":"import static java.lang.System.exit;","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":11,"author":{"gitId":"Ragnapop"},"content":" private static ArrayList\u003cTask\u003e list;","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"Ragnapop"},"content":" private static Storage storage;","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"Ragnapop"},"content":" private static final String FILE_PATH \u003d \"data/duke.txt\";","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":15,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":16,"author":{"gitId":"Ragnapop"},"content":" public static void intro(String name, String logo) {","lastModifiedDate":"2024-01-23"},{"lineNumber":17,"author":{"gitId":"-"},"content":" System.out.println(\"Hello from\\n\" + logo);","lastModifiedDate":"2019-07-29"},{"lineNumber":18,"author":{"gitId":"Ragnapop"},"content":" System.out.println(\"Hello! I\u0027m \\n\" + name);","lastModifiedDate":"2024-01-22"},{"lineNumber":19,"author":{"gitId":"Ragnapop"},"content":" System.out.println(\"What can I do for you?\\n\");// initial introductory message","lastModifiedDate":"2024-01-22"},{"lineNumber":20,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":21,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":22,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":23,"author":{"gitId":"Ragnapop"},"content":" public static void bye() throws DukeException{","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"Ragnapop"},"content":" System.out.println(\"Bye. Hope to see you again soon!\\n\");","lastModifiedDate":"2024-01-22"},{"lineNumber":25,"author":{"gitId":"Ragnapop"},"content":" storage.save();","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"Ragnapop"},"content":" System.exit(1);// if keyword is bye, exit the program","lastModifiedDate":"2024-01-22"},{"lineNumber":27,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":28,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":29,"author":{"gitId":"Ragnapop"},"content":" public static void addtask(int n, ArrayList\u003cTask\u003e list) {","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"Ragnapop"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\\n\");","lastModifiedDate":"2024-01-23"},{"lineNumber":31,"author":{"gitId":"Ragnapop"},"content":" n++;","lastModifiedDate":"2024-01-23"},{"lineNumber":32,"author":{"gitId":"Ragnapop"},"content":" System.out.println(list.get(n).ToString());","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"Ragnapop"},"content":" System.out.println(\"Now you have \" + list.size() + \" tasks in the list.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":37,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":38,"author":{"gitId":"Ragnapop"},"content":" public static ArrayList\u003cTask\u003e eventcase(String str, int n, ArrayList\u003cTask\u003e list) throws DukeException {","lastModifiedDate":"2024-01-23"},{"lineNumber":39,"author":{"gitId":"Ragnapop"},"content":" str \u003d str.replace(\"event\", \"\");","lastModifiedDate":"2024-01-22"},{"lineNumber":40,"author":{"gitId":"Ragnapop"},"content":" str \u003d str.replace(\"from\", \"\");","lastModifiedDate":"2024-01-22"},{"lineNumber":41,"author":{"gitId":"Ragnapop"},"content":" str \u003d str.replace(\"to\", \"\");","lastModifiedDate":"2024-01-22"},{"lineNumber":42,"author":{"gitId":"Ragnapop"},"content":" String[] eventtokens \u003d str.split(\"/\");","lastModifiedDate":"2024-01-22"},{"lineNumber":43,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":44,"author":{"gitId":"Ragnapop"},"content":" if(eventtokens.length \u003c 1) {","lastModifiedDate":"2024-01-23"},{"lineNumber":45,"author":{"gitId":"Ragnapop"},"content":" throw new DukeException(\"OOPS!!! The description of a event cannot be empty.\" +","lastModifiedDate":"2024-01-23"},{"lineNumber":46,"author":{"gitId":"Ragnapop"},"content":" \"Please give this instruction in the following format: event [description] / [event starting date] / [event ending date]\");","lastModifiedDate":"2024-01-23"},{"lineNumber":47,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":48,"author":{"gitId":"Ragnapop"},"content":" else if(eventtokens.length \u003c 2) {","lastModifiedDate":"2024-01-23"},{"lineNumber":49,"author":{"gitId":"Ragnapop"},"content":" throw new DukeException(\"OOPS!!! The beginning date of a event cannot be empty.\" +","lastModifiedDate":"2024-01-23"},{"lineNumber":50,"author":{"gitId":"Ragnapop"},"content":" \"Please give this instruction in the following format: event [description] / [event starting date] / [event ending date]\");","lastModifiedDate":"2024-01-23"},{"lineNumber":51,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":52,"author":{"gitId":"Ragnapop"},"content":" else if(eventtokens.length \u003c 3) {","lastModifiedDate":"2024-01-23"},{"lineNumber":53,"author":{"gitId":"Ragnapop"},"content":" throw new DukeException(\"OOPS!!! The ending date of a event cannot be empty.\" +","lastModifiedDate":"2024-01-23"},{"lineNumber":54,"author":{"gitId":"Ragnapop"},"content":" \"Please give this instruction in the following format: event [description] / [event starting date] / [event ending date]\");","lastModifiedDate":"2024-01-23"},{"lineNumber":55,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":56,"author":{"gitId":"Ragnapop"},"content":" String subject \u003d eventtokens[0];","lastModifiedDate":"2024-01-22"},{"lineNumber":57,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":58,"author":{"gitId":"Ragnapop"},"content":" String to \u003d eventtokens[1];","lastModifiedDate":"2024-01-22"},{"lineNumber":59,"author":{"gitId":"Ragnapop"},"content":" String from \u003d eventtokens[2];","lastModifiedDate":"2024-01-22"},{"lineNumber":60,"author":{"gitId":"Ragnapop"},"content":" list.add(new Event(subject, to, from));","lastModifiedDate":"2024-01-23"},{"lineNumber":61,"author":{"gitId":"Ragnapop"},"content":" return list;","lastModifiedDate":"2024-01-23"},{"lineNumber":62,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":63,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":64,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":65,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":66,"author":{"gitId":"Ragnapop"},"content":" public static ArrayList\u003cTask\u003e deadlinecase(String str, int n, ArrayList\u003cTask\u003e list) throws DukeException {","lastModifiedDate":"2024-01-23"},{"lineNumber":67,"author":{"gitId":"Ragnapop"},"content":" str \u003d str.replace(\"deadline\", \"\");","lastModifiedDate":"2024-01-22"},{"lineNumber":68,"author":{"gitId":"Ragnapop"},"content":" str \u003d str.replace(\"by\", \"\");","lastModifiedDate":"2024-01-22"},{"lineNumber":69,"author":{"gitId":"Ragnapop"},"content":" String[] deadlinetokens \u003d str.split(\"/\");","lastModifiedDate":"2024-01-22"},{"lineNumber":70,"author":{"gitId":"Ragnapop"},"content":" if(deadlinetokens.length \u003c 1) {","lastModifiedDate":"2024-01-23"},{"lineNumber":71,"author":{"gitId":"Ragnapop"},"content":" throw new DukeException(\"OOPS!!! The description of a deadline cannot be empty.\" +","lastModifiedDate":"2024-01-23"},{"lineNumber":72,"author":{"gitId":"Ragnapop"},"content":" \"Please give this instruction in the following format: deadline [description] / [deadline date]\");","lastModifiedDate":"2024-01-23"},{"lineNumber":73,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":74,"author":{"gitId":"Ragnapop"},"content":" else if(deadlinetokens.length \u003c 2) {","lastModifiedDate":"2024-01-23"},{"lineNumber":75,"author":{"gitId":"Ragnapop"},"content":" throw new DukeException(\"OOPS!!! You must provide a deadline for this task.\" +","lastModifiedDate":"2024-01-23"},{"lineNumber":76,"author":{"gitId":"Ragnapop"},"content":" \"Please give this instruction in the following format: deadline [description] / [deadline date]\");","lastModifiedDate":"2024-01-23"},{"lineNumber":77,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":78,"author":{"gitId":"Ragnapop"},"content":" String subject \u003d deadlinetokens[0];","lastModifiedDate":"2024-01-22"},{"lineNumber":79,"author":{"gitId":"Ragnapop"},"content":" String deadline \u003d deadlinetokens[1];","lastModifiedDate":"2024-01-22"},{"lineNumber":80,"author":{"gitId":"Ragnapop"},"content":" list.add(new Deadline(subject, deadline));","lastModifiedDate":"2024-01-23"},{"lineNumber":81,"author":{"gitId":"Ragnapop"},"content":" return list;","lastModifiedDate":"2024-01-23"},{"lineNumber":82,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":83,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":84,"author":{"gitId":"Ragnapop"},"content":" public static ArrayList\u003cTask\u003e todocase(String str, int n, ArrayList\u003cTask\u003e list) throws DukeException {","lastModifiedDate":"2024-01-23"},{"lineNumber":85,"author":{"gitId":"Ragnapop"},"content":" str \u003d str.replace(\"todo\", \"\");","lastModifiedDate":"2024-01-22"},{"lineNumber":86,"author":{"gitId":"Ragnapop"},"content":" int strcount \u003d str.split(\"\\\\s\").length;","lastModifiedDate":"2024-01-23"},{"lineNumber":87,"author":{"gitId":"Ragnapop"},"content":" ","lastModifiedDate":"2024-01-24"},{"lineNumber":88,"author":{"gitId":"Ragnapop"},"content":" if(strcount \u003d\u003d 1) {","lastModifiedDate":"2024-01-24"},{"lineNumber":89,"author":{"gitId":"Ragnapop"},"content":" throw new DukeException(\"OOPS!!! The description of a todo cannot be empty. \" +","lastModifiedDate":"2024-01-23"},{"lineNumber":90,"author":{"gitId":"Ragnapop"},"content":" \" Please give this instruction in the following format: todo [description]\");","lastModifiedDate":"2024-01-23"},{"lineNumber":91,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":92,"author":{"gitId":"Ragnapop"},"content":" list.add(new Task(str));","lastModifiedDate":"2024-01-23"},{"lineNumber":93,"author":{"gitId":"Ragnapop"},"content":" return list;","lastModifiedDate":"2024-01-23"},{"lineNumber":94,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":95,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":96,"author":{"gitId":"Ragnapop"},"content":" public static void markcase(String[] tokens, ArrayList\u003cTask\u003e list) throws DukeException{","lastModifiedDate":"2024-01-23"},{"lineNumber":97,"author":{"gitId":"Ragnapop"},"content":" if(tokens.length !\u003d 2) {","lastModifiedDate":"2024-01-23"},{"lineNumber":98,"author":{"gitId":"Ragnapop"},"content":" throw new DukeException(\"please give this instruction in the following format: mark [task number]\");","lastModifiedDate":"2024-01-23"},{"lineNumber":99,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":100,"author":{"gitId":"Ragnapop"},"content":" int no \u003d Integer.parseInt(tokens[1]) - 1;","lastModifiedDate":"2024-01-23"},{"lineNumber":101,"author":{"gitId":"Ragnapop"},"content":" list.get(no).markAsDone();","lastModifiedDate":"2024-01-30"},{"lineNumber":102,"author":{"gitId":"Ragnapop"},"content":" System.out.println(\"Nice! I\u0027ve marked this task as done:\\n\");","lastModifiedDate":"2024-01-23"},{"lineNumber":103,"author":{"gitId":"Ragnapop"},"content":" System.out.println(list.get(no).ToString());","lastModifiedDate":"2024-01-23"},{"lineNumber":104,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":105,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":106,"author":{"gitId":"Ragnapop"},"content":" public static void unmarkcase(String[] tokens, ArrayList\u003cTask\u003e list) throws DukeException{","lastModifiedDate":"2024-01-23"},{"lineNumber":107,"author":{"gitId":"Ragnapop"},"content":" if(tokens.length !\u003d 2) {","lastModifiedDate":"2024-01-23"},{"lineNumber":108,"author":{"gitId":"Ragnapop"},"content":" throw new DukeException(\"please give this instruction in the following format: unmark [task number]\");","lastModifiedDate":"2024-01-23"},{"lineNumber":109,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":110,"author":{"gitId":"Ragnapop"},"content":" int no \u003d Integer.parseInt(tokens[1]) - 1;","lastModifiedDate":"2024-01-23"},{"lineNumber":111,"author":{"gitId":"Ragnapop"},"content":" list.get(no).unmarkAsDone();","lastModifiedDate":"2024-01-30"},{"lineNumber":112,"author":{"gitId":"Ragnapop"},"content":" System.out.println(\"OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2024-01-23"},{"lineNumber":113,"author":{"gitId":"Ragnapop"},"content":" System.out.println(list.get(no).ToString());","lastModifiedDate":"2024-01-23"},{"lineNumber":114,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":115,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":116,"author":{"gitId":"Ragnapop"},"content":" public static ArrayList\u003cTask\u003e removecase(String[] tokens, ArrayList\u003cTask\u003e list, int n) throws DukeException{","lastModifiedDate":"2024-01-23"},{"lineNumber":117,"author":{"gitId":"Ragnapop"},"content":" if(tokens.length !\u003d 2) {","lastModifiedDate":"2024-01-23"},{"lineNumber":118,"author":{"gitId":"Ragnapop"},"content":" throw new DukeException(\"please give this instruction in the following format: delete [task number]\");","lastModifiedDate":"2024-01-23"},{"lineNumber":119,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":120,"author":{"gitId":"Ragnapop"},"content":" System.out.println(\"Noted. I\u0027ve removed this task:\\n\");","lastModifiedDate":"2024-01-23"},{"lineNumber":121,"author":{"gitId":"Ragnapop"},"content":" int no \u003d Integer.parseInt(tokens[1])-1;","lastModifiedDate":"2024-01-23"},{"lineNumber":122,"author":{"gitId":"Ragnapop"},"content":" System.out.println(list.get(no).ToString());","lastModifiedDate":"2024-01-23"},{"lineNumber":123,"author":{"gitId":"Ragnapop"},"content":" list.remove(no);","lastModifiedDate":"2024-01-23"},{"lineNumber":124,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":125,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":126,"author":{"gitId":"Ragnapop"},"content":" n--;","lastModifiedDate":"2024-01-23"},{"lineNumber":127,"author":{"gitId":"Ragnapop"},"content":" System.out.println(\"Now you have \" + n + \" tasks in the list.\");","lastModifiedDate":"2024-01-23"},{"lineNumber":128,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":129,"author":{"gitId":"Ragnapop"},"content":" return list;","lastModifiedDate":"2024-01-23"},{"lineNumber":130,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":131,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":132,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":133,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":134,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":135,"author":{"gitId":"Ragnapop"},"content":" public static void printlist(){","lastModifiedDate":"2024-01-30"},{"lineNumber":136,"author":{"gitId":"Ragnapop"},"content":" System.out.println(\"Here are the tasks in your list:\\n\");","lastModifiedDate":"2024-01-30"},{"lineNumber":137,"author":{"gitId":"Ragnapop"},"content":" for (int a \u003d 0; a \u003c list.size(); a++) {","lastModifiedDate":"2024-01-30"},{"lineNumber":138,"author":{"gitId":"Ragnapop"},"content":" System.out.println(a + 1 + \". \" + list.get(a).ToString());","lastModifiedDate":"2024-01-30"},{"lineNumber":139,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":140,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":141,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":142,"author":{"gitId":"Ragnapop"},"content":" public static void main(String[] args) throws IOException, DukeException {","lastModifiedDate":"2024-01-23"},{"lineNumber":143,"author":{"gitId":"-"},"content":" String logo \u003d \" ____ _ \\n\"","lastModifiedDate":"2024-01-23"},{"lineNumber":144,"author":{"gitId":"-"},"content":" + \"| _ \\\\ _ _| | _____ \\n\"","lastModifiedDate":"2024-01-23"},{"lineNumber":145,"author":{"gitId":"-"},"content":" + \"| | | | | | | |/ / _ \\\\\\n\"","lastModifiedDate":"2024-01-23"},{"lineNumber":146,"author":{"gitId":"-"},"content":" + \"| |_| | |_| | \u003c __/\\n\"","lastModifiedDate":"2024-01-23"},{"lineNumber":147,"author":{"gitId":"-"},"content":" + \"|____/ \\\\__,_|_|\\\\_\\\\___|\\n\";","lastModifiedDate":"2024-01-23"},{"lineNumber":148,"author":{"gitId":"Ragnapop"},"content":" String name \u003d \"Bingus\";","lastModifiedDate":"2024-01-23"},{"lineNumber":149,"author":{"gitId":"Ragnapop"},"content":" intro(name, logo);","lastModifiedDate":"2024-01-23"},{"lineNumber":150,"author":{"gitId":"Ragnapop"},"content":" storage \u003d new Storage(FILE_PATH);","lastModifiedDate":"2024-01-30"},{"lineNumber":151,"author":{"gitId":"Ragnapop"},"content":" list \u003d storage.load();// array to store tasks given","lastModifiedDate":"2024-01-30"},{"lineNumber":152,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":153,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":154,"author":{"gitId":"Ragnapop"},"content":" int n \u003d list.size();","lastModifiedDate":"2024-01-30"},{"lineNumber":155,"author":{"gitId":"Ragnapop"},"content":" Scanner bfn \u003d new Scanner(","lastModifiedDate":"2024-01-23"},{"lineNumber":156,"author":{"gitId":"Ragnapop"},"content":" new InputStreamReader(System.in));// scanner to read user input","lastModifiedDate":"2024-01-23"},{"lineNumber":157,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":158,"author":{"gitId":"Ragnapop"},"content":" String str \u003d bfn.nextLine();","lastModifiedDate":"2024-01-23"},{"lineNumber":159,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":160,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":161,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":162,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":163,"author":{"gitId":"Ragnapop"},"content":" while (true) {","lastModifiedDate":"2024-01-23"},{"lineNumber":164,"author":{"gitId":"Ragnapop"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":165,"author":{"gitId":"Ragnapop"},"content":" String[] tokens \u003d str.split(\"\\\\s+\");// split read string into individual components to read keywords","lastModifiedDate":"2024-01-23"},{"lineNumber":166,"author":{"gitId":"Ragnapop"},"content":" String identifier \u003d tokens[0];// store keywords","lastModifiedDate":"2024-01-23"},{"lineNumber":167,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":168,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":169,"author":{"gitId":"Ragnapop"},"content":" if (str.equals(\"list\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":170,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":171,"author":{"gitId":"Ragnapop"},"content":" printlist();","lastModifiedDate":"2024-01-30"},{"lineNumber":172,"author":{"gitId":"Ragnapop"},"content":" }// if keyword is list, open list","lastModifiedDate":"2024-01-23"},{"lineNumber":173,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":174,"author":{"gitId":"Ragnapop"},"content":" else if (str.equals(\"bye\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":175,"author":{"gitId":"Ragnapop"},"content":" bye();","lastModifiedDate":"2024-01-23"},{"lineNumber":176,"author":{"gitId":"Ragnapop"},"content":" } else if (identifier.equals(\"mark\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":177,"author":{"gitId":"Ragnapop"},"content":" markcase(tokens, list);","lastModifiedDate":"2024-01-23"},{"lineNumber":178,"author":{"gitId":"Ragnapop"},"content":" } else if (identifier.equals(\"unmark\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":179,"author":{"gitId":"Ragnapop"},"content":" int no \u003d Integer.parseInt(tokens[1]) - 1;","lastModifiedDate":"2024-01-23"},{"lineNumber":180,"author":{"gitId":"Ragnapop"},"content":" unmarkcase(tokens, list);","lastModifiedDate":"2024-01-23"},{"lineNumber":181,"author":{"gitId":"Ragnapop"},"content":" } else if (identifier.equals(\"event\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":182,"author":{"gitId":"Ragnapop"},"content":" list \u003d eventcase(str, n, list);","lastModifiedDate":"2024-01-23"},{"lineNumber":183,"author":{"gitId":"Ragnapop"},"content":" addtask(n, list);","lastModifiedDate":"2024-01-30"},{"lineNumber":184,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":185,"author":{"gitId":"Ragnapop"},"content":" } else if (identifier.equals(\"deadline\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":186,"author":{"gitId":"Ragnapop"},"content":" list \u003d deadlinecase(str, n, list);","lastModifiedDate":"2024-01-23"},{"lineNumber":187,"author":{"gitId":"Ragnapop"},"content":" addtask(n, list);","lastModifiedDate":"2024-01-30"},{"lineNumber":188,"author":{"gitId":"Ragnapop"},"content":" } else if (identifier.equals(\"todo\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":189,"author":{"gitId":"Ragnapop"},"content":" list \u003d todocase(str, n, list);","lastModifiedDate":"2024-01-23"},{"lineNumber":190,"author":{"gitId":"Ragnapop"},"content":" addtask(n, list);","lastModifiedDate":"2024-01-30"},{"lineNumber":191,"author":{"gitId":"Ragnapop"},"content":" } else if (identifier.equals(\"delete\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":192,"author":{"gitId":"Ragnapop"},"content":" list \u003d removecase(tokens, list, n);","lastModifiedDate":"2024-01-23"},{"lineNumber":193,"author":{"gitId":"Ragnapop"},"content":" n--;","lastModifiedDate":"2024-01-23"},{"lineNumber":194,"author":{"gitId":"Ragnapop"},"content":" } else {","lastModifiedDate":"2024-01-23"},{"lineNumber":195,"author":{"gitId":"Ragnapop"},"content":" throw new DukeException(\"OOPS!!! I\u0027m sorry, but I don\u0027t know what that means :-(\\n\");","lastModifiedDate":"2024-01-23"},{"lineNumber":196,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":197,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":198,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":199,"author":{"gitId":"Ragnapop"},"content":" str \u003d bfn.nextLine();","lastModifiedDate":"2024-01-22"},{"lineNumber":200,"author":{"gitId":"Ragnapop"},"content":" }catch(DukeException ex){","lastModifiedDate":"2024-01-24"},{"lineNumber":201,"author":{"gitId":"Ragnapop"},"content":" System.out.println(\"Exception occured: \" + ex);","lastModifiedDate":"2024-01-23"},{"lineNumber":202,"author":{"gitId":"Ragnapop"},"content":" str \u003d bfn.nextLine();","lastModifiedDate":"2024-01-24"},{"lineNumber":203,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":204,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":205,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":206,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":207,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":208,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":209,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2024-01-23"},{"lineNumber":210,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"Ragnapop":200,"-":10}},{"path":"src/main/java/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Ragnapop"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"Ragnapop"},"content":"public class DukeException extends Exception {","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"Ragnapop"},"content":" public DukeException(String errorMessage) {","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"Ragnapop"},"content":" super(errorMessage);","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"Ragnapop"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"Ragnapop":7}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Ragnapop"},"content":"public class Event extends Task{","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"Ragnapop"},"content":" protected String from;","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"Ragnapop"},"content":" protected String to;","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"Ragnapop"},"content":" public Event(String description, String from, String to) {","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"Ragnapop"},"content":" super(description);","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"Ragnapop"},"content":" this.from \u003d from;","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"Ragnapop"},"content":" this.to \u003d to;","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"Ragnapop"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":13,"author":{"gitId":"Ragnapop"},"content":" public String getTaskIcon() {","lastModifiedDate":"2024-01-22"},{"lineNumber":14,"author":{"gitId":"Ragnapop"},"content":" return \"E\";","lastModifiedDate":"2024-01-22"},{"lineNumber":15,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":16,"author":{"gitId":"Ragnapop"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":17,"author":{"gitId":"Ragnapop"},"content":" public String ToString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":18,"author":{"gitId":"Ragnapop"},"content":" return super.ToString() + \" (from: \" + from + \"to: \" + to + \")\";","lastModifiedDate":"2024-01-22"},{"lineNumber":19,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":20,"author":{"gitId":"Ragnapop"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"Ragnapop"},"content":" public String toStore() {","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"Ragnapop"},"content":" if (isDone) {","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"Ragnapop"},"content":" return getTaskIcon() + \"/\" + \"1\" + \"/\" + description + \"/\" + from + \"/\" + to;","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"Ragnapop"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"Ragnapop"},"content":" return getTaskIcon() + \"/\" + \"0\" + \"/\" + description + \"/\" + from + \"/\" + to;","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"Ragnapop"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"Ragnapop":28}},{"path":"src/main/java/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Ragnapop"},"content":"import java.io.File;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Ragnapop"},"content":"import java.io.FileReader;","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"Ragnapop"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"Ragnapop"},"content":"import java.io.BufferedReader;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"Ragnapop"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"Ragnapop"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"Ragnapop"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"Ragnapop"},"content":"public class Storage {","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"Ragnapop"},"content":" private File file;","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"Ragnapop"},"content":" private ArrayList\u003cTask\u003e list \u003d new ArrayList\u003c\u003e(100);","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"Ragnapop"},"content":" public Storage(String filePath) throws DukeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"Ragnapop"},"content":" this.file \u003d new File(filePath);","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"Ragnapop"},"content":" if (!this.file.exists()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"Ragnapop"},"content":" this.file.getParentFile().mkdirs();","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"Ragnapop"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"Ragnapop"},"content":" this.file.createNewFile();","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"Ragnapop"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"Ragnapop"},"content":" throw new DukeException(\"Error creating new file\");","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"Ragnapop"},"content":" public void save() throws DukeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"Ragnapop"},"content":" try{","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"Ragnapop"},"content":" FileWriter writer \u003d new FileWriter(file);","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"Ragnapop"},"content":" for(int a \u003d 0; a \u003c list.size(); a++ ) {","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"Ragnapop"},"content":" Task task \u003d list.get(a);","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"Ragnapop"},"content":" String taskString \u003d task.toStore();","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"Ragnapop"},"content":" writer.write(taskString + \"\\n\");","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"Ragnapop"},"content":" writer.close();","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"Ragnapop"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"Ragnapop"},"content":" throw new DukeException(\"Error saving file\");","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"Ragnapop"},"content":" public ArrayList\u003cTask\u003e load() throws DukeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"Ragnapop"},"content":" try{","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"Ragnapop"},"content":" BufferedReader bufferedReader \u003d new BufferedReader(new FileReader(file));","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"Ragnapop"},"content":" String str \u003d bufferedReader.readLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"Ragnapop"},"content":" //System.out.println(str);","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"Ragnapop"},"content":" while (str !\u003d null){","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"Ragnapop"},"content":" String[] loadtokens \u003d str.split(\"/\");","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"Ragnapop"},"content":" //for(int a \u003d 0; a\u003c loadtokens.length; a++){System.out.println(loadtokens[a]);}","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"Ragnapop"},"content":" String type \u003d loadtokens[0];","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"Ragnapop"},"content":" String status \u003d loadtokens[1];","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"Ragnapop"},"content":" String desc \u003d loadtokens[2];","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"Ragnapop"},"content":" Task task;","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"Ragnapop"},"content":" switch (type) {","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"Ragnapop"},"content":" case \"T\":","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"Ragnapop"},"content":" task \u003d new Task(desc);","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"Ragnapop"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"Ragnapop"},"content":" case \"E\":","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"Ragnapop"},"content":" String to \u003d loadtokens[3];","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"Ragnapop"},"content":" String from \u003d loadtokens[4];","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"Ragnapop"},"content":" task \u003d new Event(desc, to, from);","lastModifiedDate":"2024-01-30"},{"lineNumber":59,"author":{"gitId":"Ragnapop"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":60,"author":{"gitId":"Ragnapop"},"content":" case \"D\":","lastModifiedDate":"2024-01-30"},{"lineNumber":61,"author":{"gitId":"Ragnapop"},"content":" String duedate \u003d loadtokens[3];","lastModifiedDate":"2024-01-30"},{"lineNumber":62,"author":{"gitId":"Ragnapop"},"content":" task \u003d new Deadline(desc, duedate);","lastModifiedDate":"2024-01-30"},{"lineNumber":63,"author":{"gitId":"Ragnapop"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":64,"author":{"gitId":"Ragnapop"},"content":" default:","lastModifiedDate":"2024-01-30"},{"lineNumber":65,"author":{"gitId":"Ragnapop"},"content":" throw new DukeException(\"File corrupted.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":66,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":67,"author":{"gitId":"Ragnapop"},"content":" if(status.equals(\"1\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":68,"author":{"gitId":"Ragnapop"},"content":" task.markAsDone();","lastModifiedDate":"2024-01-30"},{"lineNumber":69,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":70,"author":{"gitId":"Ragnapop"},"content":" list.add(task);","lastModifiedDate":"2024-01-30"},{"lineNumber":71,"author":{"gitId":"Ragnapop"},"content":" str \u003d bufferedReader.readLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":72,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":73,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":74,"author":{"gitId":"Ragnapop"},"content":" bufferedReader.close();","lastModifiedDate":"2024-01-30"},{"lineNumber":75,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":76,"author":{"gitId":"Ragnapop"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":77,"author":{"gitId":"Ragnapop"},"content":" throw new DukeException(\"Error loading tasks from file\");","lastModifiedDate":"2024-01-30"},{"lineNumber":78,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":79,"author":{"gitId":"Ragnapop"},"content":" catch (IOException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":80,"author":{"gitId":"Ragnapop"},"content":" throw new DukeException(\"Error saving file\");","lastModifiedDate":"2024-01-30"},{"lineNumber":81,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":82,"author":{"gitId":"Ragnapop"},"content":" return list;","lastModifiedDate":"2024-01-30"},{"lineNumber":83,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":84,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":85,"author":{"gitId":"Ragnapop"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"Ragnapop":85}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Ragnapop"},"content":"public class Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"Ragnapop"},"content":" protected String description;","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"Ragnapop"},"content":" protected boolean isDone;","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"Ragnapop"},"content":" public Task(String description) {","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"Ragnapop"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"Ragnapop"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"Ragnapop"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"Ragnapop"},"content":" return (isDone ? \"X\" : \" \"); // mark done task with X","lastModifiedDate":"2024-01-22"},{"lineNumber":13,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":14,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":15,"author":{"gitId":"Ragnapop"},"content":" public String getTaskIcon() {","lastModifiedDate":"2024-01-22"},{"lineNumber":16,"author":{"gitId":"Ragnapop"},"content":" return \"T\";","lastModifiedDate":"2024-01-22"},{"lineNumber":17,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":18,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":19,"author":{"gitId":"Ragnapop"},"content":" public String ToString(){","lastModifiedDate":"2024-01-22"},{"lineNumber":20,"author":{"gitId":"Ragnapop"},"content":" return \"[\" + getTaskIcon() + \"] \" + \"[\" + getStatusIcon() + \"] \"+ description;","lastModifiedDate":"2024-01-22"},{"lineNumber":21,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":22,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":23,"author":{"gitId":"Ragnapop"},"content":" public void markAsDone(){","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"Ragnapop"},"content":" isDone \u003d true;","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"Ragnapop"},"content":" public void unmarkAsDone(){","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"Ragnapop"},"content":" isDone \u003d false;","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"Ragnapop"},"content":" public String toStore(){","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"Ragnapop"},"content":" if(isDone) {","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"Ragnapop"},"content":" return getTaskIcon() + \"/\" + \"1\" + \"/\" + description;","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"Ragnapop"},"content":" } else{","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"Ragnapop"},"content":" return getTaskIcon() + \"/\" + \"0\" + \"/\" + description;","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"Ragnapop"},"content":" //...","lastModifiedDate":"2024-01-22"},{"lineNumber":41,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":42,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"Ragnapop":42}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"Ragnapop"},"content":"todo","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"Ragnapop"},"content":"todo homework","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"Ragnapop"},"content":"deadline","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"Ragnapop"},"content":"deadline homework / tuesday","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"Ragnapop"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"Ragnapop"},"content":"delete","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"Ragnapop"},"content":"delete 1","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"Ragnapop"},"content":"mark 1","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"Ragnapop"},"content":"unmark 1","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"Ragnapop"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"Ragnapop"},"content":"mark 2","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"Ragnapop"},"content":"bye","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"Ragnapop":12}}] +[{"path":"data/duke.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"Ragnapop"},"content":"D/0/ return book / 2019-10-15","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Ragnapop"},"content":"D/0/ return book / 2019-10-15","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"Ragnapop"},"content":"D/1/ return book / 2019-10-15","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"Ragnapop"},"content":"D/0/ return book / 2019-10-15","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"Ragnapop"},"content":"E/0/ read book/ 2019-10-13/ 2019-10-14","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"Ragnapop"},"content":"E/0/ fight/2000-01-20/2000-11-20","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"Ragnapop"},"content":"D/0/ fight / 2001-11-11","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"Ragnapop"},"content":"T/0/ me","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"Ragnapop":8}},{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Ragnapop"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Ragnapop"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"Ragnapop"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"Ragnapop"},"content":" protected LocalDate by;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"Ragnapop"},"content":" public Deadline(String description, String by) {","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"Ragnapop"},"content":" super(description);","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"Ragnapop"},"content":" this.by \u003d LocalDate.parse(by, DateTimeFormatter.ofPattern(\" yyyy-MM-dd\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":13,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":14,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":15,"author":{"gitId":"Ragnapop"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":16,"author":{"gitId":"Ragnapop"},"content":" public String getTaskIcon() {","lastModifiedDate":"2024-01-22"},{"lineNumber":17,"author":{"gitId":"Ragnapop"},"content":" return \"D\";","lastModifiedDate":"2024-01-22"},{"lineNumber":18,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":19,"author":{"gitId":"Ragnapop"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":20,"author":{"gitId":"Ragnapop"},"content":" public String ToString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":21,"author":{"gitId":"Ragnapop"},"content":" return super.ToString() + \" (by: \" + by.format(DateTimeFormatter.ofPattern(\"MMM d yyyy\")) + \")\";","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":23,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"Ragnapop"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"Ragnapop"},"content":" public String toStore() {","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"Ragnapop"},"content":" if (isDone) {","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"Ragnapop"},"content":" return getTaskIcon() + \"/\" + \"1\" + \"/\" + description + \"/ \" + by;","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"Ragnapop"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"Ragnapop"},"content":" return getTaskIcon() + \"/\" + \"0\" + \"/\" + description + \"/ \" + by;","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"Ragnapop"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"Ragnapop":32}},{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Ragnapop"},"content":"import java.io.InputStreamReader;","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"Ragnapop"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":7,"author":{"gitId":"Ragnapop"},"content":" //private static ArrayList\u003cTask\u003e list;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"Ragnapop"},"content":" private static Storage storage;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"Ragnapop"},"content":" private static TaskList list;","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"Ragnapop"},"content":" private static Ui ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"Ragnapop"},"content":" private static Parser parser;","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"Ragnapop"},"content":" private static final String FILE_PATH \u003d \"data/duke.txt\";","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":14,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":15,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":17,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":18,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":20,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":21,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":22,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":23,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"Ragnapop"},"content":" public static void main(String[] args) throws DukeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"Ragnapop"},"content":" ui \u003d new Ui();","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"Ragnapop"},"content":" ui.intro();","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":28,"author":{"gitId":"Ragnapop"},"content":" storage \u003d new Storage(FILE_PATH);","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"Ragnapop"},"content":" list \u003d new TaskList(storage.load());// array to store tasks given","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"Ragnapop"},"content":" parser \u003d new Parser(list, storage);","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":33,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":34,"author":{"gitId":"Ragnapop"},"content":" ","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"Ragnapop"},"content":" ui.read_commands(parser);","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":37,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":38,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":40,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":41,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":42,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":43,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":44,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"Ragnapop":42,"-":2}},{"path":"src/main/java/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Ragnapop"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"Ragnapop"},"content":"public class DukeException extends Exception {","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"Ragnapop"},"content":" public DukeException(String errorMessage) {","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"Ragnapop"},"content":" super(errorMessage);","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"Ragnapop"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"Ragnapop":7}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Ragnapop"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Ragnapop"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"Ragnapop"},"content":"public class Event extends Task{","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"Ragnapop"},"content":" protected LocalDate from;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"Ragnapop"},"content":" protected LocalDate to;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"Ragnapop"},"content":" public Event(String description, String from, String to) {","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"Ragnapop"},"content":" super(description);","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"Ragnapop"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd\");","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"Ragnapop"},"content":" this.from \u003d LocalDate.parse(from, formatter);","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"Ragnapop"},"content":" this.to \u003d LocalDate.parse(to, formatter);","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":15,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":16,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":17,"author":{"gitId":"Ragnapop"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":18,"author":{"gitId":"Ragnapop"},"content":" public String getTaskIcon() {","lastModifiedDate":"2024-01-22"},{"lineNumber":19,"author":{"gitId":"Ragnapop"},"content":" return \"E\";","lastModifiedDate":"2024-01-22"},{"lineNumber":20,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":21,"author":{"gitId":"Ragnapop"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":22,"author":{"gitId":"Ragnapop"},"content":" public String ToString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":23,"author":{"gitId":"Ragnapop"},"content":" return super.ToString() + \" (from: \" + from.format(DateTimeFormatter.ofPattern(\"MMM d yyyy\")) + \" to: \" + to.format(DateTimeFormatter.ofPattern(\"MMM d yyyy\")) + \")\";","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":25,"author":{"gitId":"Ragnapop"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"Ragnapop"},"content":" public String toStore() {","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"Ragnapop"},"content":" if (isDone) {","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"Ragnapop"},"content":" return getTaskIcon() + \"/\" + \"1\" + \"/\" + description + \"/ \" + from + \"/ \" + to;","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"Ragnapop"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"Ragnapop"},"content":" return getTaskIcon() + \"/\" + \"0\" + \"/\" + description + \"/ \" + from + \"/ \" + to;","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"Ragnapop"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"Ragnapop":33}},{"path":"src/main/java/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Ragnapop"},"content":"public class Parser {","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"Ragnapop"},"content":" static TaskList list;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"Ragnapop"},"content":" static Storage storage;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"Ragnapop"},"content":" public Parser(TaskList list, Storage storage){","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"Ragnapop"},"content":" this.list \u003d list;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"Ragnapop"},"content":" this.storage \u003d storage;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"Ragnapop"},"content":" public static void parse(String str) throws DukeException{","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"Ragnapop"},"content":" String[] tokens \u003d str.split(\"\\\\s+\");// split read string into individual components to read keywords","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"Ragnapop"},"content":" String identifier \u003d tokens[0];// store keywords","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"Ragnapop"},"content":" if (str.equals(\"list\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"Ragnapop"},"content":" list.printlist();","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"Ragnapop"},"content":" }// if keyword is list, open list","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"Ragnapop"},"content":" else if (str.equals(\"bye\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"Ragnapop"},"content":" Ui.bye(storage);","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"Ragnapop"},"content":" } else if (identifier.equals(\"mark\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"Ragnapop"},"content":" list.markcase(tokens);","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"Ragnapop"},"content":" } else if (identifier.equals(\"unmark\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"Ragnapop"},"content":" int no \u003d Integer.parseInt(tokens[1]) - 1;","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"Ragnapop"},"content":" list.unmarkcase(tokens);","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"Ragnapop"},"content":" } else if (identifier.equals(\"event\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"Ragnapop"},"content":" list.eventcase(str);","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"Ragnapop"},"content":" list.addtask();","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"Ragnapop"},"content":" } else if (identifier.equals(\"deadline\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"Ragnapop"},"content":" list.deadlinecase(str);","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"Ragnapop"},"content":" list.addtask();","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"Ragnapop"},"content":" } else if (identifier.equals(\"todo\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"Ragnapop"},"content":" list.todocase(str);","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"Ragnapop"},"content":" list.addtask();","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"Ragnapop"},"content":" } else if (identifier.equals(\"delete\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"Ragnapop"},"content":" list.removecase(tokens);","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"Ragnapop"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"Ragnapop"},"content":" throw new DukeException(\"OOPS!!! I\u0027m sorry, but I don\u0027t know what that means :-(\\n\");","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"Ragnapop"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"Ragnapop":43}},{"path":"src/main/java/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Ragnapop"},"content":"import java.io.File;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Ragnapop"},"content":"import java.io.FileReader;","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"Ragnapop"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"Ragnapop"},"content":"import java.io.BufferedReader;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"Ragnapop"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"Ragnapop"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"Ragnapop"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"Ragnapop"},"content":"public class Storage {","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"Ragnapop"},"content":" private File file;","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"Ragnapop"},"content":" private ArrayList\u003cTask\u003e list \u003d new ArrayList\u003c\u003e(100);","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"Ragnapop"},"content":" public Storage(String filePath) throws DukeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"Ragnapop"},"content":" this.file \u003d new File(filePath);","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"Ragnapop"},"content":" if (!this.file.exists()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"Ragnapop"},"content":" this.file.getParentFile().mkdirs();","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"Ragnapop"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"Ragnapop"},"content":" this.file.createNewFile();","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"Ragnapop"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"Ragnapop"},"content":" throw new DukeException(\"Error creating new file\");","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"Ragnapop"},"content":" public void save() throws DukeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"Ragnapop"},"content":" try{","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"Ragnapop"},"content":" FileWriter writer \u003d new FileWriter(file);","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"Ragnapop"},"content":" for(int a \u003d 0; a \u003c list.size(); a++ ) {","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"Ragnapop"},"content":" Task task \u003d list.get(a);","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"Ragnapop"},"content":" String taskString \u003d task.toStore();","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"Ragnapop"},"content":" writer.write(taskString + \"\\n\");","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"Ragnapop"},"content":" writer.close();","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"Ragnapop"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"Ragnapop"},"content":" throw new DukeException(\"Error saving file\");","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"Ragnapop"},"content":" public ArrayList\u003cTask\u003e load() throws DukeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"Ragnapop"},"content":" try{","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"Ragnapop"},"content":" BufferedReader bufferedReader \u003d new BufferedReader(new FileReader(file));","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"Ragnapop"},"content":" String str \u003d bufferedReader.readLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"Ragnapop"},"content":" //System.out.println(str);","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"Ragnapop"},"content":" while (str !\u003d null){","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"Ragnapop"},"content":" String[] loadtokens \u003d str.split(\"/\");","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"Ragnapop"},"content":" //for(int a \u003d 0; a\u003c loadtokens.length; a++){System.out.println(loadtokens[a]);}","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"Ragnapop"},"content":" String type \u003d loadtokens[0];","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"Ragnapop"},"content":" String status \u003d loadtokens[1];","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"Ragnapop"},"content":" String desc \u003d loadtokens[2];","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"Ragnapop"},"content":" Task task;","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"Ragnapop"},"content":" switch (type) {","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"Ragnapop"},"content":" case \"T\":","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"Ragnapop"},"content":" task \u003d new Task(desc);","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"Ragnapop"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"Ragnapop"},"content":" case \"E\":","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"Ragnapop"},"content":" String to \u003d loadtokens[3];","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"Ragnapop"},"content":" String from \u003d loadtokens[4];","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"Ragnapop"},"content":" task \u003d new Event(desc, to, from);","lastModifiedDate":"2024-01-30"},{"lineNumber":59,"author":{"gitId":"Ragnapop"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":60,"author":{"gitId":"Ragnapop"},"content":" case \"D\":","lastModifiedDate":"2024-01-30"},{"lineNumber":61,"author":{"gitId":"Ragnapop"},"content":" String duedate \u003d loadtokens[3];","lastModifiedDate":"2024-01-30"},{"lineNumber":62,"author":{"gitId":"Ragnapop"},"content":" task \u003d new Deadline(desc, duedate);","lastModifiedDate":"2024-01-30"},{"lineNumber":63,"author":{"gitId":"Ragnapop"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":64,"author":{"gitId":"Ragnapop"},"content":" default:","lastModifiedDate":"2024-01-30"},{"lineNumber":65,"author":{"gitId":"Ragnapop"},"content":" throw new DukeException(\"File corrupted.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":66,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":67,"author":{"gitId":"Ragnapop"},"content":" if(status.equals(\"1\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":68,"author":{"gitId":"Ragnapop"},"content":" task.markAsDone();","lastModifiedDate":"2024-01-30"},{"lineNumber":69,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":70,"author":{"gitId":"Ragnapop"},"content":" list.add(task);","lastModifiedDate":"2024-01-30"},{"lineNumber":71,"author":{"gitId":"Ragnapop"},"content":" str \u003d bufferedReader.readLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":72,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":73,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":74,"author":{"gitId":"Ragnapop"},"content":" bufferedReader.close();","lastModifiedDate":"2024-01-30"},{"lineNumber":75,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":76,"author":{"gitId":"Ragnapop"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":77,"author":{"gitId":"Ragnapop"},"content":" throw new DukeException(\"Error loading tasks from file\");","lastModifiedDate":"2024-01-30"},{"lineNumber":78,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":79,"author":{"gitId":"Ragnapop"},"content":" catch (IOException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":80,"author":{"gitId":"Ragnapop"},"content":" throw new DukeException(\"Error saving file\");","lastModifiedDate":"2024-01-30"},{"lineNumber":81,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":82,"author":{"gitId":"Ragnapop"},"content":" return list;","lastModifiedDate":"2024-01-30"},{"lineNumber":83,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":84,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":85,"author":{"gitId":"Ragnapop"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"Ragnapop":85}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Ragnapop"},"content":"public class Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"Ragnapop"},"content":" protected String description;","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"Ragnapop"},"content":" protected boolean isDone;","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"Ragnapop"},"content":" public Task(String description) {","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"Ragnapop"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"Ragnapop"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"Ragnapop"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"Ragnapop"},"content":" return (isDone ? \"X\" : \" \"); // mark done task with X","lastModifiedDate":"2024-01-22"},{"lineNumber":13,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":14,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":15,"author":{"gitId":"Ragnapop"},"content":" public String getTaskIcon() {","lastModifiedDate":"2024-01-22"},{"lineNumber":16,"author":{"gitId":"Ragnapop"},"content":" return \"T\";","lastModifiedDate":"2024-01-22"},{"lineNumber":17,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":18,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":19,"author":{"gitId":"Ragnapop"},"content":" public String ToString(){","lastModifiedDate":"2024-01-22"},{"lineNumber":20,"author":{"gitId":"Ragnapop"},"content":" return \"[\" + getTaskIcon() + \"] \" + \"[\" + getStatusIcon() + \"] \"+ description;","lastModifiedDate":"2024-01-22"},{"lineNumber":21,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":22,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":23,"author":{"gitId":"Ragnapop"},"content":" public void markAsDone(){","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"Ragnapop"},"content":" isDone \u003d true;","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"Ragnapop"},"content":" public void unmarkAsDone(){","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"Ragnapop"},"content":" isDone \u003d false;","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"Ragnapop"},"content":" public String toStore(){","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"Ragnapop"},"content":" if(isDone) {","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"Ragnapop"},"content":" return getTaskIcon() + \"/\" + \"1\" + \"/\" + description;","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"Ragnapop"},"content":" } else{","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"Ragnapop"},"content":" return getTaskIcon() + \"/\" + \"0\" + \"/\" + description;","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"Ragnapop"},"content":" //...","lastModifiedDate":"2024-01-22"},{"lineNumber":41,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":42,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"Ragnapop":42}},{"path":"src/main/java/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Ragnapop"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"Ragnapop"},"content":"public class TaskList {","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"Ragnapop"},"content":" private static ArrayList\u003cTask\u003e list;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"Ragnapop"},"content":" public TaskList(ArrayList\u003cTask\u003e list){","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"Ragnapop"},"content":" this.list \u003d list;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"Ragnapop"},"content":" public static void addtask() {","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"Ragnapop"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\\n\");","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"Ragnapop"},"content":" System.out.println(list.get(list.size()-1).ToString());","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"Ragnapop"},"content":" System.out.println(\"Now you have \" + list.size() + \" tasks in the list.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"Ragnapop"},"content":" public static void eventcase(String str) throws DukeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"Ragnapop"},"content":" str \u003d str.replace(\"event\", \"\");","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"Ragnapop"},"content":" //str \u003d str.replace(\"from\", \"\");","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"Ragnapop"},"content":" //str \u003d str.replace(\"to\", \"\");","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"Ragnapop"},"content":" String[] eventtokens \u003d str.split(\" ((/from)|(/to)) \");","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"Ragnapop"},"content":" if(eventtokens.length \u003c 1) {","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"Ragnapop"},"content":" throw new DukeException(\"OOPS!!! The description of a event cannot be empty.\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"Ragnapop"},"content":" \"Please give this instruction in the following format: event [description] / [event starting date] / [event ending date]\");","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"Ragnapop"},"content":" else if(eventtokens.length \u003c 2) {","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"Ragnapop"},"content":" throw new DukeException(\"OOPS!!! The beginning date of a event cannot be empty.\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"Ragnapop"},"content":" \"Please give this instruction in the following format: event [description] / [event starting date] / [event ending date]\");","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"Ragnapop"},"content":" else if(eventtokens.length \u003c 3) {","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"Ragnapop"},"content":" throw new DukeException(\"OOPS!!! The ending date of a event cannot be empty.\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"Ragnapop"},"content":" \"Please give this instruction in the following format: event [description] / [event starting date] / [event ending date]\");","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"Ragnapop"},"content":" String subject \u003d eventtokens[0];","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"Ragnapop"},"content":" String to \u003d eventtokens[1];","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"Ragnapop"},"content":" String from \u003d eventtokens[2];","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"Ragnapop"},"content":" list.add(new Event(subject, to, from));","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"Ragnapop"},"content":" public static void deadlinecase(String str) throws DukeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"Ragnapop"},"content":" str \u003d str.replace(\"deadline\", \"\");","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"Ragnapop"},"content":" //str \u003d str.replace(\"by\", \"\");","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"Ragnapop"},"content":" String[] deadlinetokens \u003d str.split(\"/by\");","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"Ragnapop"},"content":" if(deadlinetokens.length \u003c 1) {","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"Ragnapop"},"content":" throw new DukeException(\"OOPS!!! The description of a deadline cannot be empty.\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"Ragnapop"},"content":" \"Please give this instruction in the following format: deadline [description] / [deadline date]\");","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"Ragnapop"},"content":" else if(deadlinetokens.length \u003c 2) {","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"Ragnapop"},"content":" throw new DukeException(\"OOPS!!! You must provide a deadline for this task.\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"Ragnapop"},"content":" \"Please give this instruction in the following format: deadline [description] / [deadline date]\");","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"Ragnapop"},"content":" String subject \u003d deadlinetokens[0];","lastModifiedDate":"2024-01-30"},{"lineNumber":59,"author":{"gitId":"Ragnapop"},"content":" String deadline \u003d deadlinetokens[1];","lastModifiedDate":"2024-01-30"},{"lineNumber":60,"author":{"gitId":"Ragnapop"},"content":" list.add(new Deadline(subject, deadline));","lastModifiedDate":"2024-01-30"},{"lineNumber":61,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":62,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":63,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":64,"author":{"gitId":"Ragnapop"},"content":" public static void todocase(String str) throws DukeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":65,"author":{"gitId":"Ragnapop"},"content":" str \u003d str.replace(\"todo\", \"\");","lastModifiedDate":"2024-01-30"},{"lineNumber":66,"author":{"gitId":"Ragnapop"},"content":" int strcount \u003d str.split(\"\\\\s\").length;","lastModifiedDate":"2024-01-30"},{"lineNumber":67,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":68,"author":{"gitId":"Ragnapop"},"content":" if(strcount \u003d\u003d 1) {","lastModifiedDate":"2024-01-30"},{"lineNumber":69,"author":{"gitId":"Ragnapop"},"content":" throw new DukeException(\"OOPS!!! The description of a todo cannot be empty. \" +","lastModifiedDate":"2024-01-30"},{"lineNumber":70,"author":{"gitId":"Ragnapop"},"content":" \" Please give this instruction in the following format: todo [description]\");","lastModifiedDate":"2024-01-30"},{"lineNumber":71,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":72,"author":{"gitId":"Ragnapop"},"content":" list.add(new Task(str));","lastModifiedDate":"2024-01-30"},{"lineNumber":73,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":74,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":75,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":76,"author":{"gitId":"Ragnapop"},"content":" public static void markcase(String[] tokens) throws DukeException{","lastModifiedDate":"2024-01-30"},{"lineNumber":77,"author":{"gitId":"Ragnapop"},"content":" if(tokens.length !\u003d 2) {","lastModifiedDate":"2024-01-30"},{"lineNumber":78,"author":{"gitId":"Ragnapop"},"content":" throw new DukeException(\"please give this instruction in the following format: mark [task number]\");","lastModifiedDate":"2024-01-30"},{"lineNumber":79,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":80,"author":{"gitId":"Ragnapop"},"content":" int no \u003d Integer.parseInt(tokens[1]) - 1;","lastModifiedDate":"2024-01-30"},{"lineNumber":81,"author":{"gitId":"Ragnapop"},"content":" list.get(no).markAsDone();","lastModifiedDate":"2024-01-30"},{"lineNumber":82,"author":{"gitId":"Ragnapop"},"content":" System.out.println(\"Nice! I\u0027ve marked this task as done:\\n\");","lastModifiedDate":"2024-01-30"},{"lineNumber":83,"author":{"gitId":"Ragnapop"},"content":" System.out.println(list.get(no).ToString());","lastModifiedDate":"2024-01-30"},{"lineNumber":84,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":85,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":86,"author":{"gitId":"Ragnapop"},"content":" public static void unmarkcase(String[] tokens) throws DukeException{","lastModifiedDate":"2024-01-30"},{"lineNumber":87,"author":{"gitId":"Ragnapop"},"content":" if(tokens.length !\u003d 2) {","lastModifiedDate":"2024-01-30"},{"lineNumber":88,"author":{"gitId":"Ragnapop"},"content":" throw new DukeException(\"please give this instruction in the following format: unmark [task number]\");","lastModifiedDate":"2024-01-30"},{"lineNumber":89,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":90,"author":{"gitId":"Ragnapop"},"content":" int no \u003d Integer.parseInt(tokens[1]) - 1;","lastModifiedDate":"2024-01-30"},{"lineNumber":91,"author":{"gitId":"Ragnapop"},"content":" list.get(no).unmarkAsDone();","lastModifiedDate":"2024-01-30"},{"lineNumber":92,"author":{"gitId":"Ragnapop"},"content":" System.out.println(\"OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2024-01-30"},{"lineNumber":93,"author":{"gitId":"Ragnapop"},"content":" System.out.println(list.get(no).ToString());","lastModifiedDate":"2024-01-30"},{"lineNumber":94,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":95,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":96,"author":{"gitId":"Ragnapop"},"content":" public static ArrayList\u003cTask\u003e removecase(String[] tokens) throws DukeException{","lastModifiedDate":"2024-01-30"},{"lineNumber":97,"author":{"gitId":"Ragnapop"},"content":" if(tokens.length !\u003d 2) {","lastModifiedDate":"2024-01-30"},{"lineNumber":98,"author":{"gitId":"Ragnapop"},"content":" throw new DukeException(\"please give this instruction in the following format: delete [task number]\");","lastModifiedDate":"2024-01-30"},{"lineNumber":99,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":100,"author":{"gitId":"Ragnapop"},"content":" System.out.println(\"Noted. I\u0027ve removed this task:\\n\");","lastModifiedDate":"2024-01-30"},{"lineNumber":101,"author":{"gitId":"Ragnapop"},"content":" int no \u003d Integer.parseInt(tokens[1])-1;","lastModifiedDate":"2024-01-30"},{"lineNumber":102,"author":{"gitId":"Ragnapop"},"content":" System.out.println(list.get(no).ToString());","lastModifiedDate":"2024-01-30"},{"lineNumber":103,"author":{"gitId":"Ragnapop"},"content":" list.remove(no);","lastModifiedDate":"2024-01-30"},{"lineNumber":104,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":105,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":106,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":107,"author":{"gitId":"Ragnapop"},"content":" System.out.println(\"Now you have \" + list.size() + \" tasks in the list.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":108,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":109,"author":{"gitId":"Ragnapop"},"content":" return list;","lastModifiedDate":"2024-01-30"},{"lineNumber":110,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":111,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":112,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":113,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":114,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":115,"author":{"gitId":"Ragnapop"},"content":" public static void printlist(){","lastModifiedDate":"2024-01-30"},{"lineNumber":116,"author":{"gitId":"Ragnapop"},"content":" System.out.println(\"Here are the tasks in your list:\\n\");","lastModifiedDate":"2024-01-30"},{"lineNumber":117,"author":{"gitId":"Ragnapop"},"content":" for (int a \u003d 0; a \u003c list.size(); a++) {","lastModifiedDate":"2024-01-30"},{"lineNumber":118,"author":{"gitId":"Ragnapop"},"content":" System.out.println(a + 1 + \". \" + list.get(a).ToString());","lastModifiedDate":"2024-01-30"},{"lineNumber":119,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":120,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":121,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":122,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":123,"author":{"gitId":"Ragnapop"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"Ragnapop":123}},{"path":"src/main/java/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Ragnapop"},"content":"import java.io.InputStreamReader;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Ragnapop"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"Ragnapop"},"content":"public class Ui {","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"Ragnapop"},"content":"final static String bingus_logo \u003d \" B i n g u s \";","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"Ragnapop"},"content":" final static String name \u003d \"Bingus\";","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"Ragnapop"},"content":" public static void intro() {","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"Ragnapop"},"content":" System.out.println(\"Hello from\\n\" + bingus_logo);","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"Ragnapop"},"content":" System.out.println(\"Hello! I\u0027m \\n\" + name);","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"Ragnapop"},"content":" System.out.println(\"What can I do for you?\\n\");// initial introductory message","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"Ragnapop"},"content":" public static void bye(Storage storage) throws DukeException{","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"Ragnapop"},"content":" System.out.println(\"Bye. Hope to see you again soon!\\n\");","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"Ragnapop"},"content":" storage.save();","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"Ragnapop"},"content":" System.exit(1);// if keyword is bye, exit the program","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"Ragnapop"},"content":" public static void read_commands(Parser parser) throws DukeException{","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"Ragnapop"},"content":" Scanner bfn \u003d new Scanner(","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"Ragnapop"},"content":" new InputStreamReader(System.in));// scanner to read user input","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"Ragnapop"},"content":" String str \u003d bfn.nextLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"Ragnapop"},"content":" while (true) {","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"Ragnapop"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"Ragnapop"},"content":" parser.parse(str);","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"Ragnapop"},"content":" str \u003d bfn.nextLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"Ragnapop"},"content":" }catch(DukeException ex){","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"Ragnapop"},"content":" System.out.println(\"Exception occured: \" + ex);","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"Ragnapop"},"content":" str \u003d bfn.nextLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"Ragnapop"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"Ragnapop":41}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"Ragnapop"},"content":"todo","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"Ragnapop"},"content":"todo homework","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"Ragnapop"},"content":"deadline","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"Ragnapop"},"content":"deadline homework / tuesday","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"Ragnapop"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"Ragnapop"},"content":"delete","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"Ragnapop"},"content":"delete 1","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"Ragnapop"},"content":"mark 1","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"Ragnapop"},"content":"unmark 1","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"Ragnapop"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"Ragnapop"},"content":"mark 2","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"Ragnapop"},"content":"bye","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"Ragnapop":12}}] diff --git a/Ragnapop_ip_master/commits.json b/Ragnapop_ip_master/commits.json index d07d6778..3b7141c2 100644 --- a/Ragnapop_ip_master/commits.json +++ b/Ragnapop_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"Ragnapop":[{"date":"2024-01-22","commitResults":[{"hash":"2bf549a08de984bfc17f30cfcfbcd62a7abd0d0c","isMergeCommit":false,"messageTitle":"Level 0. Rename, Greet, Exit","messageBody":"","tags":["Level-0.-Rename,-Greet,-Exit"],"fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":0}}},{"hash":"143b6bb9a1632144e97871ac683ef61c29e798f1","isMergeCommit":false,"messageTitle":"Level 1. Echo","messageBody":"","tags":["Level-1.-Echo"],"fileTypesAndContributionMap":{"java":{"insertions":21,"deletions":2}}},{"hash":"adc3aa433e26ba8341cd67afceb0020059e88eb6","isMergeCommit":false,"messageTitle":"Level 3. Mark as Done","messageBody":"","tags":["Level-3","Level-2-Level-2.-Add,-List"],"fileTypesAndContributionMap":{"java":{"insertions":93,"deletions":9}}},{"hash":"636fafd14b61f6bd4994845ff8c7e164a82da0da","isMergeCommit":false,"messageTitle":"Level 4. ToDos, Events, Deadlines","messageBody":"","tags":["Level-4.-ToDos,-Events,-Deadlines"],"fileTypesAndContributionMap":{"java":{"insertions":67,"deletions":4}}}]},{"date":"2024-01-23","commitResults":[{"hash":"f772a90f4492ceb35cdecb13ab9bc4b06d17f790","isMergeCommit":false,"messageTitle":"Level 5. Handle Errors","messageBody":"","tags":["Level-5.-Handle-Errors"],"fileTypesAndContributionMap":{"java":{"insertions":136,"deletions":80}}},{"hash":"244501d0146763a4bbba950c8042d6774072e603","isMergeCommit":false,"messageTitle":"Level 6. Delete","messageBody":"","tags":["Level-6.-Delete"],"fileTypesAndContributionMap":{"java":{"insertions":49,"deletions":22}}}]},{"date":"2024-01-24","commitResults":[{"hash":"5676b4c2cd93be15a5ac19059ac3608e7c300390","isMergeCommit":false,"messageTitle":"Update Duke.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":1}}},{"hash":"ea1c9e2abb740f9ec385cf3124095e561dd73c8d","isMergeCommit":false,"messageTitle":"update","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":5,"deletions":0},"java":{"insertions":9,"deletions":5}}},{"hash":"0f137decbbe13a531b979f0b0580dfc789435dc1","isMergeCommit":false,"messageTitle":"UI Testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":9,"deletions":2}}}]},{"date":"2024-01-30","commitResults":[{"hash":"b2e7e712dbd99dbdf80b12578618e46bf1ebeec5","isMergeCommit":false,"messageTitle":"Level 7. Save","messageBody":"","tags":["Level-7.-Save"],"fileTypesAndContributionMap":{"txt":{"insertions":5,"deletions":0},"java":{"insertions":149,"deletions":17}}},{"hash":"a7a4bf9dafc29e69f1da9f7be67a3cb8586cde39","isMergeCommit":true,"messageTitle":"Merge pull request #1 from Ragnapop/branch-Level-7","messageBody":"Level 7. Save","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"Ragnapop":{"java":390,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":0,"txt":17}},"authorContributionVariance":{"Ragnapop":9409.079},"authorDisplayNameMap":{"Ragnapop":"CS2103T-T15-2 LOH .. HUN"}} +{"authorDailyContributionsMap":{"Ragnapop":[{"date":"2024-01-22","commitResults":[{"hash":"2bf549a08de984bfc17f30cfcfbcd62a7abd0d0c","isMergeCommit":false,"messageTitle":"Level 0. Rename, Greet, Exit","messageBody":"","tags":["Level-0.-Rename,-Greet,-Exit"],"fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":0}}},{"hash":"143b6bb9a1632144e97871ac683ef61c29e798f1","isMergeCommit":false,"messageTitle":"Level 1. Echo","messageBody":"","tags":["Level-1.-Echo"],"fileTypesAndContributionMap":{"java":{"insertions":21,"deletions":2}}},{"hash":"adc3aa433e26ba8341cd67afceb0020059e88eb6","isMergeCommit":false,"messageTitle":"Level 3. Mark as Done","messageBody":"","tags":["Level-3","Level-2-Level-2.-Add,-List"],"fileTypesAndContributionMap":{"java":{"insertions":93,"deletions":9}}},{"hash":"636fafd14b61f6bd4994845ff8c7e164a82da0da","isMergeCommit":false,"messageTitle":"Level 4. ToDos, Events, Deadlines","messageBody":"","tags":["Level-4.-ToDos,-Events,-Deadlines"],"fileTypesAndContributionMap":{"java":{"insertions":67,"deletions":4}}}]},{"date":"2024-01-23","commitResults":[{"hash":"f772a90f4492ceb35cdecb13ab9bc4b06d17f790","isMergeCommit":false,"messageTitle":"Level 5. Handle Errors","messageBody":"","tags":["Level-5.-Handle-Errors"],"fileTypesAndContributionMap":{"java":{"insertions":136,"deletions":80}}},{"hash":"244501d0146763a4bbba950c8042d6774072e603","isMergeCommit":false,"messageTitle":"Level 6. Delete","messageBody":"","tags":["Level-6.-Delete"],"fileTypesAndContributionMap":{"java":{"insertions":49,"deletions":22}}}]},{"date":"2024-01-24","commitResults":[{"hash":"5676b4c2cd93be15a5ac19059ac3608e7c300390","isMergeCommit":false,"messageTitle":"Update Duke.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":1}}},{"hash":"ea1c9e2abb740f9ec385cf3124095e561dd73c8d","isMergeCommit":false,"messageTitle":"update","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":5,"deletions":0},"java":{"insertions":9,"deletions":5}}},{"hash":"0f137decbbe13a531b979f0b0580dfc789435dc1","isMergeCommit":false,"messageTitle":"UI Testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":9,"deletions":2}}}]},{"date":"2024-01-30","commitResults":[{"hash":"b2e7e712dbd99dbdf80b12578618e46bf1ebeec5","isMergeCommit":false,"messageTitle":"Level 7. Save","messageBody":"","tags":["Level-7.-Save"],"fileTypesAndContributionMap":{"txt":{"insertions":5,"deletions":0},"java":{"insertions":149,"deletions":17}}},{"hash":"a7a4bf9dafc29e69f1da9f7be67a3cb8586cde39","isMergeCommit":true,"messageTitle":"Merge pull request #1 from Ragnapop/branch-Level-7","messageBody":"Level 7. Save","fileTypesAndContributionMap":{}},{"hash":"9ca747e31789c0f25ab25e93e00d7da6b34bb430","isMergeCommit":false,"messageTitle":"Level 8. Dates and Times","messageBody":"","tags":["Level-8.-Dates-and-Times"],"fileTypesAndContributionMap":{"txt":{"insertions":5,"deletions":5},"java":{"insertions":45,"deletions":36}}},{"hash":"ea577c725ae230557a9797f81ed7c9b6d3c3eb3b","isMergeCommit":false,"messageTitle":"OOP changes","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":10,"deletions":0},"java":{"insertions":239,"deletions":9}}},{"hash":"54c6bc23b42368eee8b9695020094b98248fdc04","isMergeCommit":true,"messageTitle":"Merge pull request #2 from Ragnapop/branch-OOP","messageBody":"OOP changes","fileTypesAndContributionMap":{}},{"hash":"5c44f9991d7e6d0ce56722907d8940e09859dc5c","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-level-8","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"a9fe526c8151d9c7a7e642a6a53ba509bcd3b96e","isMergeCommit":true,"messageTitle":"Merge pull request #3 from Ragnapop/branch-level-8","messageBody":"Level 8. Dates and Times \u0026 OOP changes","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"Ragnapop":{"java":448,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":0,"txt":20}},"authorContributionVariance":{"Ragnapop":25310.389},"authorDisplayNameMap":{"Ragnapop":"CS2103T-T15-2 LOH .. HUN"}} diff --git a/ReflectiveObsidian_ip_master/authorship.json b/ReflectiveObsidian_ip_master/authorship.json index daf44b6e..afbe3320 100644 --- a/ReflectiveObsidian_ip_master/authorship.json +++ b/ReflectiveObsidian_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ReflectiveObsidian"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"ReflectiveObsidian"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"ReflectiveObsidian"},"content":" protected String by;","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"ReflectiveObsidian"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"ReflectiveObsidian"},"content":" public Deadline(String description, String by) {","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"ReflectiveObsidian"},"content":" super(description);","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"ReflectiveObsidian"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"ReflectiveObsidian"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"ReflectiveObsidian"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"ReflectiveObsidian"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"ReflectiveObsidian"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"ReflectiveObsidian"},"content":" return \"[D]\" + super.toString() + \" (by: \" + by + \")\";","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"ReflectiveObsidian"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"ReflectiveObsidian"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"ReflectiveObsidian":14}},{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ReflectiveObsidian"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":3,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2019-07-29"},{"lineNumber":4,"author":{"gitId":"ReflectiveObsidian"},"content":" Pyrite toDoList \u003d new Pyrite();","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"ReflectiveObsidian"},"content":" toDoList.begin();","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":7,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"ReflectiveObsidian":3,"-":4}},{"path":"src/main/java/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ReflectiveObsidian"},"content":"public class DukeException extends UnsupportedOperationException{","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"ReflectiveObsidian"},"content":" private String error;","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"ReflectiveObsidian"},"content":" public DukeException(String error) {","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"ReflectiveObsidian"},"content":" this.error \u003d error;","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"ReflectiveObsidian"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"ReflectiveObsidian"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"ReflectiveObsidian"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"ReflectiveObsidian"},"content":" return error;","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"ReflectiveObsidian"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"ReflectiveObsidian"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"ReflectiveObsidian":10}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ReflectiveObsidian"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"ReflectiveObsidian"},"content":" protected String start;","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"ReflectiveObsidian"},"content":" protected String end;","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"ReflectiveObsidian"},"content":" public Event(String description, String start, String end) {","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"ReflectiveObsidian"},"content":" super(description);","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"ReflectiveObsidian"},"content":" this.start \u003d start;","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"ReflectiveObsidian"},"content":" this.end \u003d end;","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"ReflectiveObsidian"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"ReflectiveObsidian"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"ReflectiveObsidian"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"ReflectiveObsidian"},"content":" return \"[E]\" + super.toString() + \" (from: \" + start + \" to: \" + end + \")\";","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"ReflectiveObsidian"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"ReflectiveObsidian"},"content":"}","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"ReflectiveObsidian"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"ReflectiveObsidian"},"content":"","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"ReflectiveObsidian":15}},{"path":"src/main/java/Pyrite.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ReflectiveObsidian"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"ReflectiveObsidian"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"ReflectiveObsidian"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"ReflectiveObsidian"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"ReflectiveObsidian"},"content":"public class Pyrite {","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"ReflectiveObsidian"},"content":" static String name \u003d \"Pyrite\";","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"ReflectiveObsidian"},"content":" static String horizontal_line \u003d \"\\t____________________________________________________________\";","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"ReflectiveObsidian"},"content":" static String greeting \u003d \"\\tHello! I\u0027m \" + name + \"\\n\"","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"ReflectiveObsidian"},"content":" + \"\\tWhat can I do for you?\";","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"ReflectiveObsidian"},"content":" static String farewell \u003d \"\\tBye. Hope to see you again soon!\";","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"ReflectiveObsidian"},"content":" static String taskAddedAcknowledgement \u003d \"\\t\" + \"Got it. I\u0027ve added this task: \";","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"ReflectiveObsidian"},"content":" ArrayList\u003cTask\u003e list \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"ReflectiveObsidian"},"content":" private void printList(ArrayList\u003cTask\u003e list) {","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"ReflectiveObsidian"},"content":" System.out.println(\"\\t\" + \"Here are the tasks in your list:\");","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"ReflectiveObsidian"},"content":" for (Task t : list) {","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"ReflectiveObsidian"},"content":" System.out.println(\"\\t\" + (list.indexOf(t) + 1) + \". \" + t.toString());","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"ReflectiveObsidian"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"ReflectiveObsidian"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"ReflectiveObsidian"},"content":" private int findCommand(String[] toSearch, String toFind) {","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"ReflectiveObsidian"},"content":" for (int i \u003d 0; i \u003c toSearch.length; i++) {","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"ReflectiveObsidian"},"content":" if (toSearch[i].equals(toFind)) {","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"ReflectiveObsidian"},"content":" return i;","lastModifiedDate":"2024-01-24"},{"lineNumber":23,"author":{"gitId":"ReflectiveObsidian"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"ReflectiveObsidian"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":25,"author":{"gitId":"ReflectiveObsidian"},"content":" return -1;","lastModifiedDate":"2024-01-24"},{"lineNumber":26,"author":{"gitId":"ReflectiveObsidian"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":27,"author":{"gitId":"ReflectiveObsidian"},"content":" private void assertValidId(int id) {","lastModifiedDate":"2024-01-24"},{"lineNumber":28,"author":{"gitId":"ReflectiveObsidian"},"content":" if (id \u003c 0 || id \u003e\u003d list.size()) {","lastModifiedDate":"2024-01-24"},{"lineNumber":29,"author":{"gitId":"ReflectiveObsidian"},"content":" throw new DukeException(\"Task to mark/unmark does not exist.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":30,"author":{"gitId":"ReflectiveObsidian"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":31,"author":{"gitId":"ReflectiveObsidian"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":32,"author":{"gitId":"ReflectiveObsidian"},"content":" private int parseID(String parameters[]) {","lastModifiedDate":"2024-01-24"},{"lineNumber":33,"author":{"gitId":"ReflectiveObsidian"},"content":" int id;","lastModifiedDate":"2024-01-24"},{"lineNumber":34,"author":{"gitId":"ReflectiveObsidian"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":35,"author":{"gitId":"ReflectiveObsidian"},"content":" id \u003d Integer.parseInt(parameters[1]) - 1;","lastModifiedDate":"2024-01-24"},{"lineNumber":36,"author":{"gitId":"ReflectiveObsidian"},"content":" } catch (ArrayIndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":37,"author":{"gitId":"ReflectiveObsidian"},"content":" throw new DukeException(\"Provide a valid id to mark/unmark.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":38,"author":{"gitId":"ReflectiveObsidian"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":39,"author":{"gitId":"ReflectiveObsidian"},"content":" return id;","lastModifiedDate":"2024-01-24"},{"lineNumber":40,"author":{"gitId":"ReflectiveObsidian"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":41,"author":{"gitId":"ReflectiveObsidian"},"content":" public void begin() {","lastModifiedDate":"2024-01-24"},{"lineNumber":42,"author":{"gitId":"ReflectiveObsidian"},"content":" System.out.println(this.horizontal_line);","lastModifiedDate":"2024-01-24"},{"lineNumber":43,"author":{"gitId":"ReflectiveObsidian"},"content":" System.out.println(this.greeting);","lastModifiedDate":"2024-01-24"},{"lineNumber":44,"author":{"gitId":"ReflectiveObsidian"},"content":" System.out.println(this.horizontal_line);","lastModifiedDate":"2024-01-24"},{"lineNumber":45,"author":{"gitId":"ReflectiveObsidian"},"content":" Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-24"},{"lineNumber":46,"author":{"gitId":"ReflectiveObsidian"},"content":" String input;","lastModifiedDate":"2024-01-24"},{"lineNumber":47,"author":{"gitId":"ReflectiveObsidian"},"content":" // Solution below inspired by","lastModifiedDate":"2024-01-24"},{"lineNumber":48,"author":{"gitId":"ReflectiveObsidian"},"content":" // https://stackoverflow.com/questions/31690570/java-scanner-command-system","lastModifiedDate":"2024-01-24"},{"lineNumber":49,"author":{"gitId":"ReflectiveObsidian"},"content":" // https://stackoverflow.com/questions/4822256/java-is-there-an-easy-way-to-select-a-subset-of-an-array","lastModifiedDate":"2024-01-24"},{"lineNumber":50,"author":{"gitId":"ReflectiveObsidian"},"content":" while (true) {","lastModifiedDate":"2024-01-24"},{"lineNumber":51,"author":{"gitId":"ReflectiveObsidian"},"content":" System.out.println();","lastModifiedDate":"2024-01-24"},{"lineNumber":52,"author":{"gitId":"ReflectiveObsidian"},"content":" input \u003d scanner.nextLine();","lastModifiedDate":"2024-01-24"},{"lineNumber":53,"author":{"gitId":"ReflectiveObsidian"},"content":" System.out.println(this.horizontal_line);","lastModifiedDate":"2024-01-24"},{"lineNumber":54,"author":{"gitId":"ReflectiveObsidian"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":55,"author":{"gitId":"ReflectiveObsidian"},"content":" if (input.equals(\"bye\")) {","lastModifiedDate":"2024-01-24"},{"lineNumber":56,"author":{"gitId":"ReflectiveObsidian"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":57,"author":{"gitId":"ReflectiveObsidian"},"content":" } else if (input.equals(\"list\")) {","lastModifiedDate":"2024-01-24"},{"lineNumber":58,"author":{"gitId":"ReflectiveObsidian"},"content":" printList(this.list);","lastModifiedDate":"2024-01-24"},{"lineNumber":59,"author":{"gitId":"ReflectiveObsidian"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":60,"author":{"gitId":"ReflectiveObsidian"},"content":" boolean added_task \u003d false;","lastModifiedDate":"2024-01-24"},{"lineNumber":61,"author":{"gitId":"ReflectiveObsidian"},"content":" // Commands with parameters","lastModifiedDate":"2024-01-24"},{"lineNumber":62,"author":{"gitId":"ReflectiveObsidian"},"content":" String parameters[] \u003d input.split(\" \");","lastModifiedDate":"2024-01-24"},{"lineNumber":63,"author":{"gitId":"ReflectiveObsidian"},"content":" if (parameters[0].equals(\"mark\")) {","lastModifiedDate":"2024-01-24"},{"lineNumber":64,"author":{"gitId":"ReflectiveObsidian"},"content":" int id \u003d parseID(parameters);","lastModifiedDate":"2024-01-24"},{"lineNumber":65,"author":{"gitId":"ReflectiveObsidian"},"content":" assertValidId(id);","lastModifiedDate":"2024-01-24"},{"lineNumber":66,"author":{"gitId":"ReflectiveObsidian"},"content":" list.get(id).setDone(true);","lastModifiedDate":"2024-01-24"},{"lineNumber":67,"author":{"gitId":"ReflectiveObsidian"},"content":" System.out.println(\"\\t\"","lastModifiedDate":"2024-01-24"},{"lineNumber":68,"author":{"gitId":"ReflectiveObsidian"},"content":" + \"Nice! I\u0027ve marked this task as done:\\n\"","lastModifiedDate":"2024-01-24"},{"lineNumber":69,"author":{"gitId":"ReflectiveObsidian"},"content":" + \"\\t\\t\"","lastModifiedDate":"2024-01-24"},{"lineNumber":70,"author":{"gitId":"ReflectiveObsidian"},"content":" + list.get(id).toString());","lastModifiedDate":"2024-01-24"},{"lineNumber":71,"author":{"gitId":"ReflectiveObsidian"},"content":" } else if (parameters[0].equals(\"unmark\")) {","lastModifiedDate":"2024-01-24"},{"lineNumber":72,"author":{"gitId":"ReflectiveObsidian"},"content":" int id \u003d parseID(parameters);","lastModifiedDate":"2024-01-24"},{"lineNumber":73,"author":{"gitId":"ReflectiveObsidian"},"content":" assertValidId(id);","lastModifiedDate":"2024-01-24"},{"lineNumber":74,"author":{"gitId":"ReflectiveObsidian"},"content":" list.get(id).setDone(false);","lastModifiedDate":"2024-01-24"},{"lineNumber":75,"author":{"gitId":"ReflectiveObsidian"},"content":" System.out.println(\"\\t\"","lastModifiedDate":"2024-01-24"},{"lineNumber":76,"author":{"gitId":"ReflectiveObsidian"},"content":" + \"OK, I\u0027ve marked this task as not done yet:\\n\"","lastModifiedDate":"2024-01-24"},{"lineNumber":77,"author":{"gitId":"ReflectiveObsidian"},"content":" + \"\\t\\t\"","lastModifiedDate":"2024-01-24"},{"lineNumber":78,"author":{"gitId":"ReflectiveObsidian"},"content":" + list.get(id).toString());","lastModifiedDate":"2024-01-24"},{"lineNumber":79,"author":{"gitId":"ReflectiveObsidian"},"content":" // 3 types of tasks","lastModifiedDate":"2024-01-24"},{"lineNumber":80,"author":{"gitId":"ReflectiveObsidian"},"content":" // Solution below inspired by","lastModifiedDate":"2024-01-24"},{"lineNumber":81,"author":{"gitId":"ReflectiveObsidian"},"content":" // https://stackoverflow.com/questions/11001720/get-only-part-of-an-array-in-java","lastModifiedDate":"2024-01-24"},{"lineNumber":82,"author":{"gitId":"ReflectiveObsidian"},"content":" } else if (parameters[0].equals(\"delete\")) {","lastModifiedDate":"2024-01-24"},{"lineNumber":83,"author":{"gitId":"ReflectiveObsidian"},"content":" int id \u003d parseID(parameters);","lastModifiedDate":"2024-01-24"},{"lineNumber":84,"author":{"gitId":"ReflectiveObsidian"},"content":" assertValidId(id);","lastModifiedDate":"2024-01-24"},{"lineNumber":85,"author":{"gitId":"ReflectiveObsidian"},"content":" System.out.println(\"\\t\"","lastModifiedDate":"2024-01-24"},{"lineNumber":86,"author":{"gitId":"ReflectiveObsidian"},"content":" + \"Noted. I\u0027ve removed this task:\\n\"","lastModifiedDate":"2024-01-24"},{"lineNumber":87,"author":{"gitId":"ReflectiveObsidian"},"content":" + \"\\t\\t\"","lastModifiedDate":"2024-01-24"},{"lineNumber":88,"author":{"gitId":"ReflectiveObsidian"},"content":" + list.get(id).toString());","lastModifiedDate":"2024-01-24"},{"lineNumber":89,"author":{"gitId":"ReflectiveObsidian"},"content":" list.remove(id);","lastModifiedDate":"2024-01-24"},{"lineNumber":90,"author":{"gitId":"ReflectiveObsidian"},"content":" } else if (parameters[0].equals(\"todo\")) {","lastModifiedDate":"2024-01-24"},{"lineNumber":91,"author":{"gitId":"ReflectiveObsidian"},"content":" String description \u003d String.join(","lastModifiedDate":"2024-01-24"},{"lineNumber":92,"author":{"gitId":"ReflectiveObsidian"},"content":" \" \",","lastModifiedDate":"2024-01-24"},{"lineNumber":93,"author":{"gitId":"ReflectiveObsidian"},"content":" Arrays.copyOfRange(parameters, 1, parameters.length)","lastModifiedDate":"2024-01-24"},{"lineNumber":94,"author":{"gitId":"ReflectiveObsidian"},"content":" );","lastModifiedDate":"2024-01-24"},{"lineNumber":95,"author":{"gitId":"ReflectiveObsidian"},"content":" if (description.equals(\"\")) {","lastModifiedDate":"2024-01-24"},{"lineNumber":96,"author":{"gitId":"ReflectiveObsidian"},"content":" throw new DukeException(","lastModifiedDate":"2024-01-24"},{"lineNumber":97,"author":{"gitId":"ReflectiveObsidian"},"content":" \"The description of a todo cannot be empty. Add the description after \u0027todo\u0027.\"","lastModifiedDate":"2024-01-24"},{"lineNumber":98,"author":{"gitId":"ReflectiveObsidian"},"content":" );","lastModifiedDate":"2024-01-24"},{"lineNumber":99,"author":{"gitId":"ReflectiveObsidian"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":100,"author":{"gitId":"ReflectiveObsidian"},"content":" list.add(new ToDo(description));","lastModifiedDate":"2024-01-24"},{"lineNumber":101,"author":{"gitId":"ReflectiveObsidian"},"content":" added_task \u003d true;","lastModifiedDate":"2024-01-24"},{"lineNumber":102,"author":{"gitId":"ReflectiveObsidian"},"content":" } else if (parameters[0].equals(\"deadline\")) {","lastModifiedDate":"2024-01-24"},{"lineNumber":103,"author":{"gitId":"ReflectiveObsidian"},"content":" int descEnd \u003d findCommand(parameters, \"/by\");","lastModifiedDate":"2024-01-24"},{"lineNumber":104,"author":{"gitId":"ReflectiveObsidian"},"content":" if (descEnd !\u003d -1){","lastModifiedDate":"2024-01-24"},{"lineNumber":105,"author":{"gitId":"ReflectiveObsidian"},"content":" String description \u003d String.join(\" \",","lastModifiedDate":"2024-01-24"},{"lineNumber":106,"author":{"gitId":"ReflectiveObsidian"},"content":" Arrays.copyOfRange(parameters, 1, descEnd));","lastModifiedDate":"2024-01-24"},{"lineNumber":107,"author":{"gitId":"ReflectiveObsidian"},"content":" if (description.equals(\"\")) {","lastModifiedDate":"2024-01-24"},{"lineNumber":108,"author":{"gitId":"ReflectiveObsidian"},"content":" throw new DukeException(","lastModifiedDate":"2024-01-24"},{"lineNumber":109,"author":{"gitId":"ReflectiveObsidian"},"content":" \"The description of a deadline cannot be empty. \" +","lastModifiedDate":"2024-01-24"},{"lineNumber":110,"author":{"gitId":"ReflectiveObsidian"},"content":" \"Add the description after \u0027deadline\u0027.\"","lastModifiedDate":"2024-01-24"},{"lineNumber":111,"author":{"gitId":"ReflectiveObsidian"},"content":" );","lastModifiedDate":"2024-01-24"},{"lineNumber":112,"author":{"gitId":"ReflectiveObsidian"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":113,"author":{"gitId":"ReflectiveObsidian"},"content":" list.add(new Deadline(","lastModifiedDate":"2024-01-24"},{"lineNumber":114,"author":{"gitId":"ReflectiveObsidian"},"content":" description,","lastModifiedDate":"2024-01-24"},{"lineNumber":115,"author":{"gitId":"ReflectiveObsidian"},"content":" String.join(\" \",","lastModifiedDate":"2024-01-24"},{"lineNumber":116,"author":{"gitId":"ReflectiveObsidian"},"content":" Arrays.copyOfRange(parameters, descEnd + 1, parameters.length))","lastModifiedDate":"2024-01-24"},{"lineNumber":117,"author":{"gitId":"ReflectiveObsidian"},"content":" ));","lastModifiedDate":"2024-01-24"},{"lineNumber":118,"author":{"gitId":"ReflectiveObsidian"},"content":" added_task \u003d true;","lastModifiedDate":"2024-01-24"},{"lineNumber":119,"author":{"gitId":"ReflectiveObsidian"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":120,"author":{"gitId":"ReflectiveObsidian"},"content":" throw new DukeException(\"Incomplete Command. Add deadline using \u0027/by\u0027.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":121,"author":{"gitId":"ReflectiveObsidian"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":122,"author":{"gitId":"ReflectiveObsidian"},"content":" } else if (parameters[0].equals(\"event\")) {","lastModifiedDate":"2024-01-24"},{"lineNumber":123,"author":{"gitId":"ReflectiveObsidian"},"content":" int fromID \u003d findCommand(parameters, \"/from\");","lastModifiedDate":"2024-01-24"},{"lineNumber":124,"author":{"gitId":"ReflectiveObsidian"},"content":" int toID \u003d findCommand(parameters, \"/to\");","lastModifiedDate":"2024-01-24"},{"lineNumber":125,"author":{"gitId":"ReflectiveObsidian"},"content":" if (fromID !\u003d -1 \u0026\u0026 toID !\u003d -1) {","lastModifiedDate":"2024-01-24"},{"lineNumber":126,"author":{"gitId":"ReflectiveObsidian"},"content":" String description \u003d String.join(","lastModifiedDate":"2024-01-24"},{"lineNumber":127,"author":{"gitId":"ReflectiveObsidian"},"content":" \" \", Arrays.copyOfRange(parameters, 1, (fromID \u003c toID ? fromID : toID))","lastModifiedDate":"2024-01-24"},{"lineNumber":128,"author":{"gitId":"ReflectiveObsidian"},"content":" );","lastModifiedDate":"2024-01-24"},{"lineNumber":129,"author":{"gitId":"ReflectiveObsidian"},"content":" if (description.equals(\"\")) {","lastModifiedDate":"2024-01-24"},{"lineNumber":130,"author":{"gitId":"ReflectiveObsidian"},"content":" throw new DukeException(","lastModifiedDate":"2024-01-24"},{"lineNumber":131,"author":{"gitId":"ReflectiveObsidian"},"content":" \"The description of a event cannot be empty. \" +","lastModifiedDate":"2024-01-24"},{"lineNumber":132,"author":{"gitId":"ReflectiveObsidian"},"content":" \"Add the description after \u0027event\u0027.\"","lastModifiedDate":"2024-01-24"},{"lineNumber":133,"author":{"gitId":"ReflectiveObsidian"},"content":" );","lastModifiedDate":"2024-01-24"},{"lineNumber":134,"author":{"gitId":"ReflectiveObsidian"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":135,"author":{"gitId":"ReflectiveObsidian"},"content":" if (fromID \u003c toID) {","lastModifiedDate":"2024-01-24"},{"lineNumber":136,"author":{"gitId":"ReflectiveObsidian"},"content":" list.add( new Event(","lastModifiedDate":"2024-01-24"},{"lineNumber":137,"author":{"gitId":"ReflectiveObsidian"},"content":" description,","lastModifiedDate":"2024-01-24"},{"lineNumber":138,"author":{"gitId":"ReflectiveObsidian"},"content":" String.join(\" \", Arrays.copyOfRange(parameters, fromID + 1, toID)),","lastModifiedDate":"2024-01-24"},{"lineNumber":139,"author":{"gitId":"ReflectiveObsidian"},"content":" String.join(\" \",","lastModifiedDate":"2024-01-24"},{"lineNumber":140,"author":{"gitId":"ReflectiveObsidian"},"content":" Arrays.copyOfRange(parameters, toID + 1, parameters.length))","lastModifiedDate":"2024-01-24"},{"lineNumber":141,"author":{"gitId":"ReflectiveObsidian"},"content":" ));","lastModifiedDate":"2024-01-24"},{"lineNumber":142,"author":{"gitId":"ReflectiveObsidian"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":143,"author":{"gitId":"ReflectiveObsidian"},"content":" list.add( new Event(","lastModifiedDate":"2024-01-24"},{"lineNumber":144,"author":{"gitId":"ReflectiveObsidian"},"content":" description,","lastModifiedDate":"2024-01-24"},{"lineNumber":145,"author":{"gitId":"ReflectiveObsidian"},"content":" String.join(\" \",","lastModifiedDate":"2024-01-24"},{"lineNumber":146,"author":{"gitId":"ReflectiveObsidian"},"content":" Arrays.copyOfRange(parameters, fromID + 1, parameters.length)),","lastModifiedDate":"2024-01-24"},{"lineNumber":147,"author":{"gitId":"ReflectiveObsidian"},"content":" String.join(\" \",","lastModifiedDate":"2024-01-24"},{"lineNumber":148,"author":{"gitId":"ReflectiveObsidian"},"content":" Arrays.copyOfRange(parameters, toID + 1, fromID))","lastModifiedDate":"2024-01-24"},{"lineNumber":149,"author":{"gitId":"ReflectiveObsidian"},"content":" ));","lastModifiedDate":"2024-01-24"},{"lineNumber":150,"author":{"gitId":"ReflectiveObsidian"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":151,"author":{"gitId":"ReflectiveObsidian"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":152,"author":{"gitId":"ReflectiveObsidian"},"content":" throw new DukeException(\"Incomplete Command. \" +","lastModifiedDate":"2024-01-24"},{"lineNumber":153,"author":{"gitId":"ReflectiveObsidian"},"content":" \"Add start and end dates using \u0027/from\u0027 and \u0027/to\u0027.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":154,"author":{"gitId":"ReflectiveObsidian"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":155,"author":{"gitId":"ReflectiveObsidian"},"content":" added_task \u003d true;","lastModifiedDate":"2024-01-24"},{"lineNumber":156,"author":{"gitId":"ReflectiveObsidian"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":157,"author":{"gitId":"ReflectiveObsidian"},"content":" throw new DukeException(\"Unknown Command.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":158,"author":{"gitId":"ReflectiveObsidian"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":159,"author":{"gitId":"ReflectiveObsidian"},"content":" if (added_task) {","lastModifiedDate":"2024-01-24"},{"lineNumber":160,"author":{"gitId":"ReflectiveObsidian"},"content":" System.out.println(taskAddedAcknowledgement);","lastModifiedDate":"2024-01-24"},{"lineNumber":161,"author":{"gitId":"ReflectiveObsidian"},"content":" System.out.println(\"\\t\\t\" + list.get(list.size()-1).toString());","lastModifiedDate":"2024-01-24"},{"lineNumber":162,"author":{"gitId":"ReflectiveObsidian"},"content":" System.out.println(\"\\t\" + \"Now you have \" + list.size() + \" tasks in the list.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":163,"author":{"gitId":"ReflectiveObsidian"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":164,"author":{"gitId":"ReflectiveObsidian"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":165,"author":{"gitId":"ReflectiveObsidian"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":166,"author":{"gitId":"ReflectiveObsidian"},"content":" System.out.println(\"\\t\" + e);","lastModifiedDate":"2024-01-24"},{"lineNumber":167,"author":{"gitId":"ReflectiveObsidian"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":168,"author":{"gitId":"ReflectiveObsidian"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":169,"author":{"gitId":"ReflectiveObsidian"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":170,"author":{"gitId":"ReflectiveObsidian"},"content":" System.out.println(this.horizontal_line);","lastModifiedDate":"2024-01-24"},{"lineNumber":171,"author":{"gitId":"ReflectiveObsidian"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":172,"author":{"gitId":"ReflectiveObsidian"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":173,"author":{"gitId":"ReflectiveObsidian"},"content":" System.out.println(this.farewell);","lastModifiedDate":"2024-01-24"},{"lineNumber":174,"author":{"gitId":"ReflectiveObsidian"},"content":" System.out.println(this.horizontal_line);","lastModifiedDate":"2024-01-24"},{"lineNumber":175,"author":{"gitId":"ReflectiveObsidian"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":176,"author":{"gitId":"ReflectiveObsidian"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"ReflectiveObsidian":176}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ReflectiveObsidian"},"content":"public class Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"ReflectiveObsidian"},"content":" enum Status {","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"ReflectiveObsidian"},"content":" DONE,","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"ReflectiveObsidian"},"content":" NOT_DONE","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"ReflectiveObsidian"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"ReflectiveObsidian"},"content":" protected String description;","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"ReflectiveObsidian"},"content":" protected Status status;","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"ReflectiveObsidian"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"ReflectiveObsidian"},"content":" public Task(String description) {","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"ReflectiveObsidian"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"ReflectiveObsidian"},"content":" this.status \u003d Status.NOT_DONE;","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"ReflectiveObsidian"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"ReflectiveObsidian"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"ReflectiveObsidian"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"ReflectiveObsidian"},"content":" return (status \u003d\u003d Status.DONE ? \"X\" : \" \"); // mark done task with X","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"ReflectiveObsidian"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"ReflectiveObsidian"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"ReflectiveObsidian"},"content":" public String getDescription() {","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"ReflectiveObsidian"},"content":" return description;","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"ReflectiveObsidian"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"ReflectiveObsidian"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"ReflectiveObsidian"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":23,"author":{"gitId":"ReflectiveObsidian"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"ReflectiveObsidian"},"content":" return \"[\" + getStatusIcon() + \"] \" + getDescription();","lastModifiedDate":"2024-01-24"},{"lineNumber":25,"author":{"gitId":"ReflectiveObsidian"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":26,"author":{"gitId":"ReflectiveObsidian"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":27,"author":{"gitId":"ReflectiveObsidian"},"content":" public void setDone(boolean done) {","lastModifiedDate":"2024-01-24"},{"lineNumber":28,"author":{"gitId":"ReflectiveObsidian"},"content":" this.status \u003d (done ? Status.DONE : Status.NOT_DONE);","lastModifiedDate":"2024-01-24"},{"lineNumber":29,"author":{"gitId":"ReflectiveObsidian"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":30,"author":{"gitId":"ReflectiveObsidian"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":31,"author":{"gitId":"ReflectiveObsidian"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"ReflectiveObsidian":31}},{"path":"src/main/java/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ReflectiveObsidian"},"content":"public class ToDo extends Task{","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"ReflectiveObsidian"},"content":" public ToDo(String description) {","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"ReflectiveObsidian"},"content":" super(description);","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"ReflectiveObsidian"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"ReflectiveObsidian"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"ReflectiveObsidian"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"ReflectiveObsidian"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"ReflectiveObsidian"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"ReflectiveObsidian"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"ReflectiveObsidian":9}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"ReflectiveObsidian"},"content":"todo borrow book","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"ReflectiveObsidian"},"content":"deadline return book /by Sunday","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"ReflectiveObsidian"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"ReflectiveObsidian"},"content":"event project meeting 2 /to 4pm /from Mon 2pm","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"ReflectiveObsidian"},"content":"mark 1","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"ReflectiveObsidian"},"content":"mark 2","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"ReflectiveObsidian"},"content":"unmark 1","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"ReflectiveObsidian"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"ReflectiveObsidian"},"content":"delete 1","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"ReflectiveObsidian"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"ReflectiveObsidian"},"content":"bye","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"ReflectiveObsidian":11}}] +[{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ReflectiveObsidian"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"ReflectiveObsidian"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"ReflectiveObsidian"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"ReflectiveObsidian"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"ReflectiveObsidian"},"content":" protected LocalDateTime by;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"ReflectiveObsidian"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"ReflectiveObsidian"},"content":" public Deadline(String description, LocalDateTime by) {","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"ReflectiveObsidian"},"content":" super(description);","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"ReflectiveObsidian"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"ReflectiveObsidian"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"ReflectiveObsidian"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"ReflectiveObsidian"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"ReflectiveObsidian"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"ReflectiveObsidian"},"content":" return \"[D]\"","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"ReflectiveObsidian"},"content":" + super.toString()","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"ReflectiveObsidian"},"content":" + \" (by: \"","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"ReflectiveObsidian"},"content":" + by.format(DateTimeFormatter.ofPattern(\"MMM d yyyy, HH:mm\"))","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"ReflectiveObsidian"},"content":" + \")\";","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"ReflectiveObsidian"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"ReflectiveObsidian"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"ReflectiveObsidian":20}},{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ReflectiveObsidian"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":3,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2019-07-29"},{"lineNumber":4,"author":{"gitId":"ReflectiveObsidian"},"content":" Pyrite toDoList \u003d new Pyrite();","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"ReflectiveObsidian"},"content":" toDoList.begin();","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":7,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"ReflectiveObsidian":3,"-":4}},{"path":"src/main/java/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ReflectiveObsidian"},"content":"public class DukeException extends UnsupportedOperationException{","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"ReflectiveObsidian"},"content":" private String error;","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"ReflectiveObsidian"},"content":" public DukeException(String error) {","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"ReflectiveObsidian"},"content":" this.error \u003d error;","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"ReflectiveObsidian"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"ReflectiveObsidian"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"ReflectiveObsidian"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"ReflectiveObsidian"},"content":" return error;","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"ReflectiveObsidian"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"ReflectiveObsidian"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"ReflectiveObsidian":10}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ReflectiveObsidian"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"ReflectiveObsidian"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"ReflectiveObsidian"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"ReflectiveObsidian"},"content":" protected LocalDateTime start;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"ReflectiveObsidian"},"content":" protected LocalDateTime end;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"ReflectiveObsidian"},"content":" public Event(String description, LocalDateTime start, LocalDateTime end) {","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"ReflectiveObsidian"},"content":" super(description);","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"ReflectiveObsidian"},"content":" this.start \u003d start;","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"ReflectiveObsidian"},"content":" this.end \u003d end;","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"ReflectiveObsidian"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"ReflectiveObsidian"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"ReflectiveObsidian"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"ReflectiveObsidian"},"content":" return \"[E]\"","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"ReflectiveObsidian"},"content":" + super.toString()","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"ReflectiveObsidian"},"content":" + \" (from: \"","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"ReflectiveObsidian"},"content":" + start.format(DateTimeFormatter.ofPattern(\"MMM d yyyy, HH:mm\"))","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"ReflectiveObsidian"},"content":" + \" to: \"","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"ReflectiveObsidian"},"content":" + end.format(DateTimeFormatter.ofPattern(\"MMM d yyyy, HH:mm\"))","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"ReflectiveObsidian"},"content":" + \")\";","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"ReflectiveObsidian"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"ReflectiveObsidian"},"content":"}","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"ReflectiveObsidian"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":23,"author":{"gitId":"ReflectiveObsidian"},"content":"","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"ReflectiveObsidian":23}},{"path":"src/main/java/Pyrite.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ReflectiveObsidian"},"content":"import javax.imageio.IIOException;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"ReflectiveObsidian"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"ReflectiveObsidian"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"ReflectiveObsidian"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"ReflectiveObsidian"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"ReflectiveObsidian"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"ReflectiveObsidian"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"ReflectiveObsidian"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"ReflectiveObsidian"},"content":"public class Pyrite {","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"ReflectiveObsidian"},"content":" static String name \u003d \"Pyrite\";","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"ReflectiveObsidian"},"content":" static String horizontal_line \u003d \"\\t____________________________________________________________\";","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"ReflectiveObsidian"},"content":" static String greeting \u003d \"\\tHello! I\u0027m \" + name + \"\\n\"","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"ReflectiveObsidian"},"content":" + \"\\tWhat can I do for you?\";","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"ReflectiveObsidian"},"content":" static String farewell \u003d \"\\tBye. Hope to see you again soon!\";","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"ReflectiveObsidian"},"content":" static String taskAddedAcknowledgement \u003d \"\\t\" + \"Got it. I\u0027ve added this task: \";","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"ReflectiveObsidian"},"content":" ArrayList\u003cTask\u003e list \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"ReflectiveObsidian"},"content":" StateFile file \u003d new StateFile();","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"ReflectiveObsidian"},"content":" private void printList(ArrayList\u003cTask\u003e list) {","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"ReflectiveObsidian"},"content":" System.out.println(\"\\t\" + \"Here are the tasks in your list:\");","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"ReflectiveObsidian"},"content":" for (Task t : list) {","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"ReflectiveObsidian"},"content":" System.out.println(\"\\t\" + (list.indexOf(t) + 1) + \". \" + t.toString());","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"ReflectiveObsidian"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":23,"author":{"gitId":"ReflectiveObsidian"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"ReflectiveObsidian"},"content":" private int findCommand(String[] toSearch, String toFind) {","lastModifiedDate":"2024-01-24"},{"lineNumber":25,"author":{"gitId":"ReflectiveObsidian"},"content":" for (int i \u003d 0; i \u003c toSearch.length; i++) {","lastModifiedDate":"2024-01-24"},{"lineNumber":26,"author":{"gitId":"ReflectiveObsidian"},"content":" if (toSearch[i].equals(toFind)) {","lastModifiedDate":"2024-01-24"},{"lineNumber":27,"author":{"gitId":"ReflectiveObsidian"},"content":" return i;","lastModifiedDate":"2024-01-24"},{"lineNumber":28,"author":{"gitId":"ReflectiveObsidian"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":29,"author":{"gitId":"ReflectiveObsidian"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":30,"author":{"gitId":"ReflectiveObsidian"},"content":" return -1;","lastModifiedDate":"2024-01-24"},{"lineNumber":31,"author":{"gitId":"ReflectiveObsidian"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":32,"author":{"gitId":"ReflectiveObsidian"},"content":" private void assertValidId(int id) {","lastModifiedDate":"2024-01-24"},{"lineNumber":33,"author":{"gitId":"ReflectiveObsidian"},"content":" if (id \u003c 0 || id \u003e\u003d list.size()) {","lastModifiedDate":"2024-01-24"},{"lineNumber":34,"author":{"gitId":"ReflectiveObsidian"},"content":" throw new DukeException(\"Task to mark/unmark does not exist.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":35,"author":{"gitId":"ReflectiveObsidian"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":36,"author":{"gitId":"ReflectiveObsidian"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":37,"author":{"gitId":"ReflectiveObsidian"},"content":" private int parseID(String parameters[]) {","lastModifiedDate":"2024-01-24"},{"lineNumber":38,"author":{"gitId":"ReflectiveObsidian"},"content":" int id;","lastModifiedDate":"2024-01-24"},{"lineNumber":39,"author":{"gitId":"ReflectiveObsidian"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":40,"author":{"gitId":"ReflectiveObsidian"},"content":" id \u003d Integer.parseInt(parameters[1]) - 1;","lastModifiedDate":"2024-01-24"},{"lineNumber":41,"author":{"gitId":"ReflectiveObsidian"},"content":" } catch (ArrayIndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":42,"author":{"gitId":"ReflectiveObsidian"},"content":" throw new DukeException(\"Provide a valid id to mark/unmark.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":43,"author":{"gitId":"ReflectiveObsidian"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":44,"author":{"gitId":"ReflectiveObsidian"},"content":" return id;","lastModifiedDate":"2024-01-24"},{"lineNumber":45,"author":{"gitId":"ReflectiveObsidian"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":46,"author":{"gitId":"ReflectiveObsidian"},"content":" private void loadState() {","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"ReflectiveObsidian"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"ReflectiveObsidian"},"content":" this.list \u003d file.loadObject();","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"ReflectiveObsidian"},"content":" } catch (IOException | ClassNotFoundException e){","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"ReflectiveObsidian"},"content":" // File issue, try to save blank state","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"ReflectiveObsidian"},"content":" System.out.println(\"\\tUnable to read saved state, creating new file...\");","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"ReflectiveObsidian"},"content":" this.saveState();","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"ReflectiveObsidian"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"ReflectiveObsidian"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"ReflectiveObsidian"},"content":" private void saveState() {","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"ReflectiveObsidian"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"ReflectiveObsidian"},"content":" file.saveObject(this.list);","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"ReflectiveObsidian"},"content":" } catch (IOException e){","lastModifiedDate":"2024-01-30"},{"lineNumber":59,"author":{"gitId":"ReflectiveObsidian"},"content":" System.out.println(\"\\tUnable to save state: \" + e.toString());","lastModifiedDate":"2024-01-30"},{"lineNumber":60,"author":{"gitId":"ReflectiveObsidian"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":61,"author":{"gitId":"ReflectiveObsidian"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":62,"author":{"gitId":"ReflectiveObsidian"},"content":" public void begin() {","lastModifiedDate":"2024-01-24"},{"lineNumber":63,"author":{"gitId":"ReflectiveObsidian"},"content":" System.out.println(this.horizontal_line);","lastModifiedDate":"2024-01-24"},{"lineNumber":64,"author":{"gitId":"ReflectiveObsidian"},"content":" System.out.println(this.greeting);","lastModifiedDate":"2024-01-24"},{"lineNumber":65,"author":{"gitId":"ReflectiveObsidian"},"content":" // Load list from file","lastModifiedDate":"2024-01-30"},{"lineNumber":66,"author":{"gitId":"ReflectiveObsidian"},"content":" this.loadState();","lastModifiedDate":"2024-01-30"},{"lineNumber":67,"author":{"gitId":"ReflectiveObsidian"},"content":" System.out.println(this.horizontal_line);","lastModifiedDate":"2024-01-24"},{"lineNumber":68,"author":{"gitId":"ReflectiveObsidian"},"content":" Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-24"},{"lineNumber":69,"author":{"gitId":"ReflectiveObsidian"},"content":" String input;","lastModifiedDate":"2024-01-24"},{"lineNumber":70,"author":{"gitId":"ReflectiveObsidian"},"content":" // Solution below inspired by","lastModifiedDate":"2024-01-24"},{"lineNumber":71,"author":{"gitId":"ReflectiveObsidian"},"content":" // https://stackoverflow.com/questions/31690570/java-scanner-command-system","lastModifiedDate":"2024-01-24"},{"lineNumber":72,"author":{"gitId":"ReflectiveObsidian"},"content":" // https://stackoverflow.com/questions/4822256/java-is-there-an-easy-way-to-select-a-subset-of-an-array","lastModifiedDate":"2024-01-24"},{"lineNumber":73,"author":{"gitId":"ReflectiveObsidian"},"content":" while (true) {","lastModifiedDate":"2024-01-24"},{"lineNumber":74,"author":{"gitId":"ReflectiveObsidian"},"content":" System.out.println();","lastModifiedDate":"2024-01-24"},{"lineNumber":75,"author":{"gitId":"ReflectiveObsidian"},"content":" input \u003d scanner.nextLine();","lastModifiedDate":"2024-01-24"},{"lineNumber":76,"author":{"gitId":"ReflectiveObsidian"},"content":" System.out.println(this.horizontal_line);","lastModifiedDate":"2024-01-24"},{"lineNumber":77,"author":{"gitId":"ReflectiveObsidian"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":78,"author":{"gitId":"ReflectiveObsidian"},"content":" if (input.equals(\"bye\")) {","lastModifiedDate":"2024-01-24"},{"lineNumber":79,"author":{"gitId":"ReflectiveObsidian"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":80,"author":{"gitId":"ReflectiveObsidian"},"content":" } else if (input.equals(\"list\")) {","lastModifiedDate":"2024-01-24"},{"lineNumber":81,"author":{"gitId":"ReflectiveObsidian"},"content":" printList(this.list);","lastModifiedDate":"2024-01-24"},{"lineNumber":82,"author":{"gitId":"ReflectiveObsidian"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":83,"author":{"gitId":"ReflectiveObsidian"},"content":" boolean added_task \u003d false;","lastModifiedDate":"2024-01-24"},{"lineNumber":84,"author":{"gitId":"ReflectiveObsidian"},"content":" // Commands with parameters","lastModifiedDate":"2024-01-24"},{"lineNumber":85,"author":{"gitId":"ReflectiveObsidian"},"content":" String parameters[] \u003d input.split(\" \");","lastModifiedDate":"2024-01-24"},{"lineNumber":86,"author":{"gitId":"ReflectiveObsidian"},"content":" if (parameters[0].equals(\"mark\")) {","lastModifiedDate":"2024-01-24"},{"lineNumber":87,"author":{"gitId":"ReflectiveObsidian"},"content":" int id \u003d parseID(parameters);","lastModifiedDate":"2024-01-24"},{"lineNumber":88,"author":{"gitId":"ReflectiveObsidian"},"content":" assertValidId(id);","lastModifiedDate":"2024-01-24"},{"lineNumber":89,"author":{"gitId":"ReflectiveObsidian"},"content":" list.get(id).setDone(true);","lastModifiedDate":"2024-01-24"},{"lineNumber":90,"author":{"gitId":"ReflectiveObsidian"},"content":" System.out.println(\"\\t\"","lastModifiedDate":"2024-01-24"},{"lineNumber":91,"author":{"gitId":"ReflectiveObsidian"},"content":" + \"Nice! I\u0027ve marked this task as done:\\n\"","lastModifiedDate":"2024-01-24"},{"lineNumber":92,"author":{"gitId":"ReflectiveObsidian"},"content":" + \"\\t\\t\"","lastModifiedDate":"2024-01-24"},{"lineNumber":93,"author":{"gitId":"ReflectiveObsidian"},"content":" + list.get(id).toString());","lastModifiedDate":"2024-01-24"},{"lineNumber":94,"author":{"gitId":"ReflectiveObsidian"},"content":" } else if (parameters[0].equals(\"unmark\")) {","lastModifiedDate":"2024-01-24"},{"lineNumber":95,"author":{"gitId":"ReflectiveObsidian"},"content":" int id \u003d parseID(parameters);","lastModifiedDate":"2024-01-24"},{"lineNumber":96,"author":{"gitId":"ReflectiveObsidian"},"content":" assertValidId(id);","lastModifiedDate":"2024-01-24"},{"lineNumber":97,"author":{"gitId":"ReflectiveObsidian"},"content":" list.get(id).setDone(false);","lastModifiedDate":"2024-01-24"},{"lineNumber":98,"author":{"gitId":"ReflectiveObsidian"},"content":" System.out.println(\"\\t\"","lastModifiedDate":"2024-01-24"},{"lineNumber":99,"author":{"gitId":"ReflectiveObsidian"},"content":" + \"OK, I\u0027ve marked this task as not done yet:\\n\"","lastModifiedDate":"2024-01-24"},{"lineNumber":100,"author":{"gitId":"ReflectiveObsidian"},"content":" + \"\\t\\t\"","lastModifiedDate":"2024-01-24"},{"lineNumber":101,"author":{"gitId":"ReflectiveObsidian"},"content":" + list.get(id).toString());","lastModifiedDate":"2024-01-24"},{"lineNumber":102,"author":{"gitId":"ReflectiveObsidian"},"content":" // 3 types of tasks","lastModifiedDate":"2024-01-24"},{"lineNumber":103,"author":{"gitId":"ReflectiveObsidian"},"content":" // Solution below inspired by","lastModifiedDate":"2024-01-24"},{"lineNumber":104,"author":{"gitId":"ReflectiveObsidian"},"content":" // https://stackoverflow.com/questions/11001720/get-only-part-of-an-array-in-java","lastModifiedDate":"2024-01-24"},{"lineNumber":105,"author":{"gitId":"ReflectiveObsidian"},"content":" } else if (parameters[0].equals(\"delete\")) {","lastModifiedDate":"2024-01-24"},{"lineNumber":106,"author":{"gitId":"ReflectiveObsidian"},"content":" int id \u003d parseID(parameters);","lastModifiedDate":"2024-01-24"},{"lineNumber":107,"author":{"gitId":"ReflectiveObsidian"},"content":" assertValidId(id);","lastModifiedDate":"2024-01-24"},{"lineNumber":108,"author":{"gitId":"ReflectiveObsidian"},"content":" System.out.println(\"\\t\"","lastModifiedDate":"2024-01-24"},{"lineNumber":109,"author":{"gitId":"ReflectiveObsidian"},"content":" + \"Noted. I\u0027ve removed this task:\\n\"","lastModifiedDate":"2024-01-24"},{"lineNumber":110,"author":{"gitId":"ReflectiveObsidian"},"content":" + \"\\t\\t\"","lastModifiedDate":"2024-01-24"},{"lineNumber":111,"author":{"gitId":"ReflectiveObsidian"},"content":" + list.get(id).toString());","lastModifiedDate":"2024-01-24"},{"lineNumber":112,"author":{"gitId":"ReflectiveObsidian"},"content":" list.remove(id);","lastModifiedDate":"2024-01-24"},{"lineNumber":113,"author":{"gitId":"ReflectiveObsidian"},"content":" } else if (parameters[0].equals(\"todo\")) {","lastModifiedDate":"2024-01-24"},{"lineNumber":114,"author":{"gitId":"ReflectiveObsidian"},"content":" String description \u003d String.join(","lastModifiedDate":"2024-01-24"},{"lineNumber":115,"author":{"gitId":"ReflectiveObsidian"},"content":" \" \",","lastModifiedDate":"2024-01-24"},{"lineNumber":116,"author":{"gitId":"ReflectiveObsidian"},"content":" Arrays.copyOfRange(parameters, 1, parameters.length)","lastModifiedDate":"2024-01-24"},{"lineNumber":117,"author":{"gitId":"ReflectiveObsidian"},"content":" );","lastModifiedDate":"2024-01-24"},{"lineNumber":118,"author":{"gitId":"ReflectiveObsidian"},"content":" if (description.equals(\"\")) {","lastModifiedDate":"2024-01-24"},{"lineNumber":119,"author":{"gitId":"ReflectiveObsidian"},"content":" throw new DukeException(","lastModifiedDate":"2024-01-24"},{"lineNumber":120,"author":{"gitId":"ReflectiveObsidian"},"content":" \"The description of a todo cannot be empty. Add the description after \u0027todo\u0027.\"","lastModifiedDate":"2024-01-24"},{"lineNumber":121,"author":{"gitId":"ReflectiveObsidian"},"content":" );","lastModifiedDate":"2024-01-24"},{"lineNumber":122,"author":{"gitId":"ReflectiveObsidian"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":123,"author":{"gitId":"ReflectiveObsidian"},"content":" list.add(new ToDo(description));","lastModifiedDate":"2024-01-24"},{"lineNumber":124,"author":{"gitId":"ReflectiveObsidian"},"content":" added_task \u003d true;","lastModifiedDate":"2024-01-24"},{"lineNumber":125,"author":{"gitId":"ReflectiveObsidian"},"content":" } else if (parameters[0].equals(\"deadline\")) {","lastModifiedDate":"2024-01-24"},{"lineNumber":126,"author":{"gitId":"ReflectiveObsidian"},"content":" int descEnd \u003d findCommand(parameters, \"/by\");","lastModifiedDate":"2024-01-24"},{"lineNumber":127,"author":{"gitId":"ReflectiveObsidian"},"content":" if (descEnd !\u003d -1){","lastModifiedDate":"2024-01-24"},{"lineNumber":128,"author":{"gitId":"ReflectiveObsidian"},"content":" String description \u003d String.join(\" \",","lastModifiedDate":"2024-01-24"},{"lineNumber":129,"author":{"gitId":"ReflectiveObsidian"},"content":" Arrays.copyOfRange(parameters, 1, descEnd));","lastModifiedDate":"2024-01-24"},{"lineNumber":130,"author":{"gitId":"ReflectiveObsidian"},"content":" if (description.equals(\"\")) {","lastModifiedDate":"2024-01-24"},{"lineNumber":131,"author":{"gitId":"ReflectiveObsidian"},"content":" throw new DukeException(","lastModifiedDate":"2024-01-24"},{"lineNumber":132,"author":{"gitId":"ReflectiveObsidian"},"content":" \"The description of a deadline cannot be empty. \" +","lastModifiedDate":"2024-01-24"},{"lineNumber":133,"author":{"gitId":"ReflectiveObsidian"},"content":" \"Add the description after \u0027deadline\u0027.\"","lastModifiedDate":"2024-01-24"},{"lineNumber":134,"author":{"gitId":"ReflectiveObsidian"},"content":" );","lastModifiedDate":"2024-01-24"},{"lineNumber":135,"author":{"gitId":"ReflectiveObsidian"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":136,"author":{"gitId":"ReflectiveObsidian"},"content":" list.add(new Deadline(description,","lastModifiedDate":"2024-01-30"},{"lineNumber":137,"author":{"gitId":"ReflectiveObsidian"},"content":" LocalDateTime.parse(String.join(\"\", Arrays.copyOfRange(parameters,","lastModifiedDate":"2024-01-30"},{"lineNumber":138,"author":{"gitId":"ReflectiveObsidian"},"content":" descEnd + 1,","lastModifiedDate":"2024-01-30"},{"lineNumber":139,"author":{"gitId":"ReflectiveObsidian"},"content":" parameters.length)))","lastModifiedDate":"2024-01-30"},{"lineNumber":140,"author":{"gitId":"ReflectiveObsidian"},"content":" ));","lastModifiedDate":"2024-01-24"},{"lineNumber":141,"author":{"gitId":"ReflectiveObsidian"},"content":" added_task \u003d true;","lastModifiedDate":"2024-01-24"},{"lineNumber":142,"author":{"gitId":"ReflectiveObsidian"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":143,"author":{"gitId":"ReflectiveObsidian"},"content":" throw new DukeException(\"Incomplete Command. Add deadline using \u0027/by\u0027.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":144,"author":{"gitId":"ReflectiveObsidian"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":145,"author":{"gitId":"ReflectiveObsidian"},"content":" } else if (parameters[0].equals(\"event\")) {","lastModifiedDate":"2024-01-24"},{"lineNumber":146,"author":{"gitId":"ReflectiveObsidian"},"content":" int fromID \u003d findCommand(parameters, \"/from\");","lastModifiedDate":"2024-01-24"},{"lineNumber":147,"author":{"gitId":"ReflectiveObsidian"},"content":" int toID \u003d findCommand(parameters, \"/to\");","lastModifiedDate":"2024-01-24"},{"lineNumber":148,"author":{"gitId":"ReflectiveObsidian"},"content":" if (fromID !\u003d -1 \u0026\u0026 toID !\u003d -1) {","lastModifiedDate":"2024-01-24"},{"lineNumber":149,"author":{"gitId":"ReflectiveObsidian"},"content":" String description \u003d String.join(","lastModifiedDate":"2024-01-24"},{"lineNumber":150,"author":{"gitId":"ReflectiveObsidian"},"content":" \" \", Arrays.copyOfRange(parameters, 1, (fromID \u003c toID ? fromID : toID))","lastModifiedDate":"2024-01-24"},{"lineNumber":151,"author":{"gitId":"ReflectiveObsidian"},"content":" );","lastModifiedDate":"2024-01-24"},{"lineNumber":152,"author":{"gitId":"ReflectiveObsidian"},"content":" if (description.equals(\"\")) {","lastModifiedDate":"2024-01-24"},{"lineNumber":153,"author":{"gitId":"ReflectiveObsidian"},"content":" throw new DukeException(","lastModifiedDate":"2024-01-24"},{"lineNumber":154,"author":{"gitId":"ReflectiveObsidian"},"content":" \"The description of a event cannot be empty. \" +","lastModifiedDate":"2024-01-24"},{"lineNumber":155,"author":{"gitId":"ReflectiveObsidian"},"content":" \"Add the description after \u0027event\u0027.\"","lastModifiedDate":"2024-01-24"},{"lineNumber":156,"author":{"gitId":"ReflectiveObsidian"},"content":" );","lastModifiedDate":"2024-01-24"},{"lineNumber":157,"author":{"gitId":"ReflectiveObsidian"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":158,"author":{"gitId":"ReflectiveObsidian"},"content":" if (fromID \u003c toID) {","lastModifiedDate":"2024-01-24"},{"lineNumber":159,"author":{"gitId":"ReflectiveObsidian"},"content":" list.add( new Event(","lastModifiedDate":"2024-01-24"},{"lineNumber":160,"author":{"gitId":"ReflectiveObsidian"},"content":" description,","lastModifiedDate":"2024-01-24"},{"lineNumber":161,"author":{"gitId":"ReflectiveObsidian"},"content":" LocalDateTime.parse(String.join(\"\", Arrays.copyOfRange(parameters,","lastModifiedDate":"2024-01-30"},{"lineNumber":162,"author":{"gitId":"ReflectiveObsidian"},"content":" fromID + 1,","lastModifiedDate":"2024-01-30"},{"lineNumber":163,"author":{"gitId":"ReflectiveObsidian"},"content":" toID))),","lastModifiedDate":"2024-01-30"},{"lineNumber":164,"author":{"gitId":"ReflectiveObsidian"},"content":" LocalDateTime.parse(String.join(\"\", Arrays.copyOfRange(parameters,","lastModifiedDate":"2024-01-30"},{"lineNumber":165,"author":{"gitId":"ReflectiveObsidian"},"content":" toID + 1,","lastModifiedDate":"2024-01-30"},{"lineNumber":166,"author":{"gitId":"ReflectiveObsidian"},"content":" parameters.length)))","lastModifiedDate":"2024-01-30"},{"lineNumber":167,"author":{"gitId":"ReflectiveObsidian"},"content":" ));","lastModifiedDate":"2024-01-24"},{"lineNumber":168,"author":{"gitId":"ReflectiveObsidian"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":169,"author":{"gitId":"ReflectiveObsidian"},"content":" list.add( new Event(","lastModifiedDate":"2024-01-24"},{"lineNumber":170,"author":{"gitId":"ReflectiveObsidian"},"content":" description,","lastModifiedDate":"2024-01-24"},{"lineNumber":171,"author":{"gitId":"ReflectiveObsidian"},"content":" LocalDateTime.parse(String.join(\"\", Arrays.copyOfRange(parameters,","lastModifiedDate":"2024-01-30"},{"lineNumber":172,"author":{"gitId":"ReflectiveObsidian"},"content":" fromID + 1,","lastModifiedDate":"2024-01-30"},{"lineNumber":173,"author":{"gitId":"ReflectiveObsidian"},"content":" parameters.length))),","lastModifiedDate":"2024-01-30"},{"lineNumber":174,"author":{"gitId":"ReflectiveObsidian"},"content":" LocalDateTime.parse(String.join(\"\", Arrays.copyOfRange(parameters,","lastModifiedDate":"2024-01-30"},{"lineNumber":175,"author":{"gitId":"ReflectiveObsidian"},"content":" toID + 1,","lastModifiedDate":"2024-01-30"},{"lineNumber":176,"author":{"gitId":"ReflectiveObsidian"},"content":" fromID)))","lastModifiedDate":"2024-01-30"},{"lineNumber":177,"author":{"gitId":"ReflectiveObsidian"},"content":" ));","lastModifiedDate":"2024-01-24"},{"lineNumber":178,"author":{"gitId":"ReflectiveObsidian"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":179,"author":{"gitId":"ReflectiveObsidian"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":180,"author":{"gitId":"ReflectiveObsidian"},"content":" throw new DukeException(\"Incomplete Command. \" +","lastModifiedDate":"2024-01-24"},{"lineNumber":181,"author":{"gitId":"ReflectiveObsidian"},"content":" \"Add start and end dates using \u0027/from\u0027 and \u0027/to\u0027.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":182,"author":{"gitId":"ReflectiveObsidian"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":183,"author":{"gitId":"ReflectiveObsidian"},"content":" added_task \u003d true;","lastModifiedDate":"2024-01-24"},{"lineNumber":184,"author":{"gitId":"ReflectiveObsidian"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":185,"author":{"gitId":"ReflectiveObsidian"},"content":" throw new DukeException(\"Unknown Command.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":186,"author":{"gitId":"ReflectiveObsidian"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":187,"author":{"gitId":"ReflectiveObsidian"},"content":" if (added_task) {","lastModifiedDate":"2024-01-24"},{"lineNumber":188,"author":{"gitId":"ReflectiveObsidian"},"content":" System.out.println(taskAddedAcknowledgement);","lastModifiedDate":"2024-01-24"},{"lineNumber":189,"author":{"gitId":"ReflectiveObsidian"},"content":" System.out.println(\"\\t\\t\" + list.get(list.size()-1).toString());","lastModifiedDate":"2024-01-24"},{"lineNumber":190,"author":{"gitId":"ReflectiveObsidian"},"content":" System.out.println(\"\\t\" + \"Now you have \" + list.size() + \" tasks in the list.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":191,"author":{"gitId":"ReflectiveObsidian"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":192,"author":{"gitId":"ReflectiveObsidian"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":193,"author":{"gitId":"ReflectiveObsidian"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":194,"author":{"gitId":"ReflectiveObsidian"},"content":" System.out.println(\"\\t\" + e);","lastModifiedDate":"2024-01-24"},{"lineNumber":195,"author":{"gitId":"ReflectiveObsidian"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":196,"author":{"gitId":"ReflectiveObsidian"},"content":" System.out.println(\"\\t\" + \"Invalid datetime format. Use yyyy-mm-ddThh:mm.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":197,"author":{"gitId":"ReflectiveObsidian"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":198,"author":{"gitId":"ReflectiveObsidian"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":199,"author":{"gitId":"ReflectiveObsidian"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":200,"author":{"gitId":"ReflectiveObsidian"},"content":" System.out.println(this.horizontal_line);","lastModifiedDate":"2024-01-24"},{"lineNumber":201,"author":{"gitId":"ReflectiveObsidian"},"content":" // Save state","lastModifiedDate":"2024-01-30"},{"lineNumber":202,"author":{"gitId":"ReflectiveObsidian"},"content":" this.saveState();","lastModifiedDate":"2024-01-30"},{"lineNumber":203,"author":{"gitId":"ReflectiveObsidian"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":204,"author":{"gitId":"ReflectiveObsidian"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":205,"author":{"gitId":"ReflectiveObsidian"},"content":" System.out.println(this.farewell);","lastModifiedDate":"2024-01-24"},{"lineNumber":206,"author":{"gitId":"ReflectiveObsidian"},"content":" System.out.println(this.horizontal_line);","lastModifiedDate":"2024-01-24"},{"lineNumber":207,"author":{"gitId":"ReflectiveObsidian"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":208,"author":{"gitId":"ReflectiveObsidian"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"ReflectiveObsidian":208}},{"path":"src/main/java/StateFile.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ReflectiveObsidian"},"content":"import java.io.FileInputStream;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"ReflectiveObsidian"},"content":"import java.io.File;","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"ReflectiveObsidian"},"content":"import java.io.FileOutputStream;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"ReflectiveObsidian"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"ReflectiveObsidian"},"content":"import java.io.ObjectInputStream;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"ReflectiveObsidian"},"content":"import java.io.ObjectOutputStream;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"ReflectiveObsidian"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"ReflectiveObsidian"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"ReflectiveObsidian"},"content":"public class StateFile {","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"ReflectiveObsidian"},"content":" private static String FILE_PATH \u003d \"saves/state.txt\";","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"ReflectiveObsidian"},"content":" // Solution below (use of ObjectOutputStream and FileOutputStream) inspired by ChatGPT","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"ReflectiveObsidian"},"content":" public void saveObject(ArrayList\u003cTask\u003e object) throws IOException {","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"ReflectiveObsidian"},"content":" // Create directory if it does not exist","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"ReflectiveObsidian"},"content":" File file \u003d new File(FILE_PATH);","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"ReflectiveObsidian"},"content":" File parentDir \u003d file.getParentFile();","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"ReflectiveObsidian"},"content":" if (!parentDir.exists()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"ReflectiveObsidian"},"content":" parentDir.mkdirs();","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"ReflectiveObsidian"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"ReflectiveObsidian"},"content":" FileOutputStream fileStream \u003d new FileOutputStream(FILE_PATH);","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"ReflectiveObsidian"},"content":" ObjectOutputStream objectStream \u003d new ObjectOutputStream(fileStream);","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"ReflectiveObsidian"},"content":" objectStream.writeObject(object);","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"ReflectiveObsidian"},"content":" objectStream.close();","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"ReflectiveObsidian"},"content":" fileStream.close();","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"ReflectiveObsidian"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"ReflectiveObsidian"},"content":" public ArrayList\u003cTask\u003e loadObject() throws IOException, ClassNotFoundException {","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"ReflectiveObsidian"},"content":" FileInputStream fileStream \u003d new FileInputStream(FILE_PATH);","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"ReflectiveObsidian"},"content":" ObjectInputStream objectStream \u003d new ObjectInputStream(fileStream);","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"ReflectiveObsidian"},"content":" ArrayList\u003cTask\u003e list;","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"ReflectiveObsidian"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"ReflectiveObsidian"},"content":" list \u003d (ArrayList\u003cTask\u003e) objectStream.readObject();","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"ReflectiveObsidian"},"content":" } finally {","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"ReflectiveObsidian"},"content":" objectStream.close();","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"ReflectiveObsidian"},"content":" fileStream.close();","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"ReflectiveObsidian"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"ReflectiveObsidian"},"content":" return list;","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"ReflectiveObsidian"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"ReflectiveObsidian"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"ReflectiveObsidian":37}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ReflectiveObsidian"},"content":"import java.io.Serializable;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"ReflectiveObsidian"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"ReflectiveObsidian"},"content":"public class Task implements Serializable {","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"ReflectiveObsidian"},"content":" enum Status {","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"ReflectiveObsidian"},"content":" DONE,","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"ReflectiveObsidian"},"content":" NOT_DONE","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"ReflectiveObsidian"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"ReflectiveObsidian"},"content":" protected String description;","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"ReflectiveObsidian"},"content":" protected Status status;","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"ReflectiveObsidian"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"ReflectiveObsidian"},"content":" public Task(String description) {","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"ReflectiveObsidian"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"ReflectiveObsidian"},"content":" this.status \u003d Status.NOT_DONE;","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"ReflectiveObsidian"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"ReflectiveObsidian"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"ReflectiveObsidian"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"ReflectiveObsidian"},"content":" return (status \u003d\u003d Status.DONE ? \"X\" : \" \"); // mark done task with X","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"ReflectiveObsidian"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"ReflectiveObsidian"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"ReflectiveObsidian"},"content":" public String getDescription() {","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"ReflectiveObsidian"},"content":" return description;","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"ReflectiveObsidian"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":23,"author":{"gitId":"ReflectiveObsidian"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"ReflectiveObsidian"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":25,"author":{"gitId":"ReflectiveObsidian"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":26,"author":{"gitId":"ReflectiveObsidian"},"content":" return \"[\" + getStatusIcon() + \"] \" + getDescription();","lastModifiedDate":"2024-01-24"},{"lineNumber":27,"author":{"gitId":"ReflectiveObsidian"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":28,"author":{"gitId":"ReflectiveObsidian"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":29,"author":{"gitId":"ReflectiveObsidian"},"content":" public void setDone(boolean done) {","lastModifiedDate":"2024-01-24"},{"lineNumber":30,"author":{"gitId":"ReflectiveObsidian"},"content":" this.status \u003d (done ? Status.DONE : Status.NOT_DONE);","lastModifiedDate":"2024-01-24"},{"lineNumber":31,"author":{"gitId":"ReflectiveObsidian"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":32,"author":{"gitId":"ReflectiveObsidian"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":33,"author":{"gitId":"ReflectiveObsidian"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"ReflectiveObsidian":33}},{"path":"src/main/java/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ReflectiveObsidian"},"content":"public class ToDo extends Task{","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"ReflectiveObsidian"},"content":" public ToDo(String description) {","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"ReflectiveObsidian"},"content":" super(description);","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"ReflectiveObsidian"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"ReflectiveObsidian"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"ReflectiveObsidian"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"ReflectiveObsidian"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"ReflectiveObsidian"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"ReflectiveObsidian"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"ReflectiveObsidian":9}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"ReflectiveObsidian"},"content":"todo borrow book","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"ReflectiveObsidian"},"content":"deadline return book /by Sunday","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"ReflectiveObsidian"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"ReflectiveObsidian"},"content":"event project meeting 2 /to 4pm /from Mon 2pm","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"ReflectiveObsidian"},"content":"mark 1","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"ReflectiveObsidian"},"content":"mark 2","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"ReflectiveObsidian"},"content":"unmark 1","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"ReflectiveObsidian"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"ReflectiveObsidian"},"content":"delete 1","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"ReflectiveObsidian"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"ReflectiveObsidian"},"content":"bye","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"ReflectiveObsidian":11}}] diff --git a/ReflectiveObsidian_ip_master/commits.json b/ReflectiveObsidian_ip_master/commits.json index 036fbd79..dd9b4b87 100644 --- a/ReflectiveObsidian_ip_master/commits.json +++ b/ReflectiveObsidian_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"ReflectiveObsidian":[{"date":"2024-01-24","commitResults":[{"hash":"53af075fec256ebaba39943239918d592c2f8ac7","isMergeCommit":false,"messageTitle":"Replaced old greeting","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":11,"deletions":6}}},{"hash":"d895b0a969739dca01fce03f9aa749a1277383cd","isMergeCommit":false,"messageTitle":"Implemented command echoing, with exit word.","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":22,"deletions":4}}},{"hash":"1458d8681ecd4ddbcf3d3dcbf2e9a8009a607219","isMergeCommit":false,"messageTitle":"Add the ability to store whatever text entered by the user and display them back to the user when requested.","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":16,"deletions":2}}},{"hash":"e515ca36e47fe6b5f03ed2e7447a10b7416e87ab","isMergeCommit":false,"messageTitle":"Moved to-do list into separate class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":47,"deletions":42}}},{"hash":"bc6d49da7899f158d85f387e88674e7491af21e4","isMergeCommit":false,"messageTitle":"Added task class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":18,"deletions":0}}},{"hash":"54e5c7d9f4f75ddba07d737448cabffcfaa9bbd9","isMergeCommit":false,"messageTitle":"Implement task status generation","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":0}}},{"hash":"002be94f2d962d1856dbd129f1eac97b96072a00","isMergeCommit":false,"messageTitle":"Switch from list of string to list of Task in Pyrite","messageBody":"","tags":["A-Classes"],"fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":4}}},{"hash":"020d7475e924c614c3092defee4fa211331998ab","isMergeCommit":false,"messageTitle":"Add the ability to mark tasks as done. Optionally, add the ability to change the status back to not done.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":25,"deletions":8}}},{"hash":"9ea9232b051465f05f6f10bb5acc7fa43bf75ebb","isMergeCommit":false,"messageTitle":"Add \"Here are the tasks in your list:\" to task list printing","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":0}}},{"hash":"a503c61ccec1b868ef9afafe98e4e9070bf9e559","isMergeCommit":false,"messageTitle":"Fixed off-by-1 bug in mark/unmark","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":2}}},{"hash":"c4e83cc271be3fa7eb0ad1cb2799781180d3036a","isMergeCommit":false,"messageTitle":"convert getFullStatusString into toString","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":3}}},{"hash":"109216ccaaa0cbf282a3cee6e3b467a1dc87c732","isMergeCommit":false,"messageTitle":"override toString in Task instead of implementing getFullStatusString()","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":1}}},{"hash":"44e29e4ce63bc6e1d668f31f075e240fd0be2e1b","isMergeCommit":false,"messageTitle":"Create 3 types of tasks, ToDo, Deadline, Event","messageBody":"","tags":["A-Inheritance"],"fileTypesAndContributionMap":{"java":{"insertions":38,"deletions":0}}},{"hash":"3f37747f4fe0129b9d7e50ec39e45930dd4c73af","isMergeCommit":false,"messageTitle":"Integrate ToDos, Deadlines, Events","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":65,"deletions":5}}},{"hash":"75e780393c138c5ddc4a3073b05a34de0d02318d","isMergeCommit":false,"messageTitle":"fix indentation in mark/unmark","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":2}}},{"hash":"d03061d58e3c57d2f34ff234c585c4bd5d4b86c7","isMergeCommit":false,"messageTitle":"Fix bug parsing event when order of parameters are swapped","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":2}}},{"hash":"5e3769d2af794c478427ee4380cbdb2c62d81adb","isMergeCommit":false,"messageTitle":"Implemented Automated Testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":9,"deletions":0}}},{"hash":"2466c5d7bc50709a94da145e0029943552ff0cef","isMergeCommit":false,"messageTitle":"Remove extra horizontal line from bye command","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":2}}},{"hash":"3528784054af6f779ff3ea96879776bfad3554c7","isMergeCommit":false,"messageTitle":"Implement exception error handling.","messageBody":"","tags":["Level-5","A-Exceptions"],"fileTypesAndContributionMap":{"java":{"insertions":125,"deletions":65}}},{"hash":"412fc7ac86748550e797fa8208fdf58461349e15","isMergeCommit":false,"messageTitle":"Use ArrayList to store tasks","messageBody":"","tags":["A-Collections"],"fileTypesAndContributionMap":{"java":{"insertions":20,"deletions":24}}},{"hash":"3e8325093c9a9265bdce8b3d545fd1d5bdda17d2","isMergeCommit":false,"messageTitle":"Implement delete","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":0}}},{"hash":"b9eedd69f97635f4efeea03cbb42bd620ba8a996","isMergeCommit":false,"messageTitle":"Update test cases","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":0}}},{"hash":"e4dcd6de9542e6f7fa4865e32d0f3f071783d197","isMergeCommit":false,"messageTitle":"Use enums to track whether task is done or not","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":4}}},{"hash":"a45fe4bcb9b8156e886f5c1cf9d4e238027e9f33","isMergeCommit":false,"messageTitle":"Make some variables in Pyrite static","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":5,"deletions":5}}}]}]},"authorFileTypeContributionMap":{"ReflectiveObsidian":{"java":258,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":0,"txt":11}},"authorContributionVariance":{"ReflectiveObsidian":54253.47},"authorDisplayNameMap":{"ReflectiveObsidian":"CS2103T-T11-1 NG W..MING"}} +{"authorDailyContributionsMap":{"ReflectiveObsidian":[{"date":"2024-01-24","commitResults":[{"hash":"53af075fec256ebaba39943239918d592c2f8ac7","isMergeCommit":false,"messageTitle":"Replaced old greeting","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":11,"deletions":6}}},{"hash":"d895b0a969739dca01fce03f9aa749a1277383cd","isMergeCommit":false,"messageTitle":"Implemented command echoing, with exit word.","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":22,"deletions":4}}},{"hash":"1458d8681ecd4ddbcf3d3dcbf2e9a8009a607219","isMergeCommit":false,"messageTitle":"Add the ability to store whatever text entered by the user and display them back to the user when requested.","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":16,"deletions":2}}},{"hash":"e515ca36e47fe6b5f03ed2e7447a10b7416e87ab","isMergeCommit":false,"messageTitle":"Moved to-do list into separate class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":47,"deletions":42}}},{"hash":"bc6d49da7899f158d85f387e88674e7491af21e4","isMergeCommit":false,"messageTitle":"Added task class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":18,"deletions":0}}},{"hash":"54e5c7d9f4f75ddba07d737448cabffcfaa9bbd9","isMergeCommit":false,"messageTitle":"Implement task status generation","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":0}}},{"hash":"002be94f2d962d1856dbd129f1eac97b96072a00","isMergeCommit":false,"messageTitle":"Switch from list of string to list of Task in Pyrite","messageBody":"","tags":["A-Classes"],"fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":4}}},{"hash":"020d7475e924c614c3092defee4fa211331998ab","isMergeCommit":false,"messageTitle":"Add the ability to mark tasks as done. Optionally, add the ability to change the status back to not done.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":25,"deletions":8}}},{"hash":"9ea9232b051465f05f6f10bb5acc7fa43bf75ebb","isMergeCommit":false,"messageTitle":"Add \"Here are the tasks in your list:\" to task list printing","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":0}}},{"hash":"a503c61ccec1b868ef9afafe98e4e9070bf9e559","isMergeCommit":false,"messageTitle":"Fixed off-by-1 bug in mark/unmark","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":2}}},{"hash":"c4e83cc271be3fa7eb0ad1cb2799781180d3036a","isMergeCommit":false,"messageTitle":"convert getFullStatusString into toString","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":3}}},{"hash":"109216ccaaa0cbf282a3cee6e3b467a1dc87c732","isMergeCommit":false,"messageTitle":"override toString in Task instead of implementing getFullStatusString()","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":1}}},{"hash":"44e29e4ce63bc6e1d668f31f075e240fd0be2e1b","isMergeCommit":false,"messageTitle":"Create 3 types of tasks, ToDo, Deadline, Event","messageBody":"","tags":["A-Inheritance"],"fileTypesAndContributionMap":{"java":{"insertions":38,"deletions":0}}},{"hash":"3f37747f4fe0129b9d7e50ec39e45930dd4c73af","isMergeCommit":false,"messageTitle":"Integrate ToDos, Deadlines, Events","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":65,"deletions":5}}},{"hash":"75e780393c138c5ddc4a3073b05a34de0d02318d","isMergeCommit":false,"messageTitle":"fix indentation in mark/unmark","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":2}}},{"hash":"d03061d58e3c57d2f34ff234c585c4bd5d4b86c7","isMergeCommit":false,"messageTitle":"Fix bug parsing event when order of parameters are swapped","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":2}}},{"hash":"5e3769d2af794c478427ee4380cbdb2c62d81adb","isMergeCommit":false,"messageTitle":"Implemented Automated Testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":9,"deletions":0}}},{"hash":"2466c5d7bc50709a94da145e0029943552ff0cef","isMergeCommit":false,"messageTitle":"Remove extra horizontal line from bye command","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":2}}},{"hash":"3528784054af6f779ff3ea96879776bfad3554c7","isMergeCommit":false,"messageTitle":"Implement exception error handling.","messageBody":"","tags":["Level-5","A-Exceptions"],"fileTypesAndContributionMap":{"java":{"insertions":125,"deletions":65}}},{"hash":"412fc7ac86748550e797fa8208fdf58461349e15","isMergeCommit":false,"messageTitle":"Use ArrayList to store tasks","messageBody":"","tags":["A-Collections"],"fileTypesAndContributionMap":{"java":{"insertions":20,"deletions":24}}},{"hash":"3e8325093c9a9265bdce8b3d545fd1d5bdda17d2","isMergeCommit":false,"messageTitle":"Implement delete","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":0}}},{"hash":"b9eedd69f97635f4efeea03cbb42bd620ba8a996","isMergeCommit":false,"messageTitle":"Update test cases","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":0}}},{"hash":"e4dcd6de9542e6f7fa4865e32d0f3f071783d197","isMergeCommit":false,"messageTitle":"Use enums to track whether task is done or not","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":4}}},{"hash":"a45fe4bcb9b8156e886f5c1cf9d4e238027e9f33","isMergeCommit":false,"messageTitle":"Make some variables in Pyrite static","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":5,"deletions":5}}}]},{"date":"2024-01-30","commitResults":[{"hash":"1298bbc6673ea5bc19b0d658df96f293680eb255","isMergeCommit":false,"messageTitle":"Add save to file feature","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":63,"deletions":1}}},{"hash":"4f32c4f0e823fb0f67ca97456fdd2a3e4c56d240","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027 into master","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}},{"hash":"bc7c611b01ac1f77180a6bc791bd26e63833bc3a","isMergeCommit":false,"messageTitle":"Store dates as a java.time.LocalDateTime object in Task Objects","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":42,"deletions":19}}},{"hash":"7ca8f5d6fdf7ee208de30b021bbc2e630c97e402","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027 into master","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"ReflectiveObsidian":{"java":343,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":0,"txt":11}},"authorContributionVariance":{"ReflectiveObsidian":29947.916},"authorDisplayNameMap":{"ReflectiveObsidian":"CS2103T-T11-1 NG W..MING"}} diff --git a/ReganChoy_ip_master/authorship.json b/ReganChoy_ip_master/authorship.json index 9769ec86..17c99026 100644 --- a/ReganChoy_ip_master/authorship.json +++ b/ReganChoy_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ReganChoy"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"ReganChoy"},"content":" private String deadline;","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"ReganChoy"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"ReganChoy"},"content":" public Deadline(String task, String taskType, String deadline) {","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"ReganChoy"},"content":" super(task, taskType);","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"ReganChoy"},"content":" this.deadline \u003d deadline;","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"ReganChoy"},"content":" public String toString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"ReganChoy"},"content":" return this.getTaskType() + this.getStatus() + \" \" + this.getTask() + getPeriod();","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"ReganChoy"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"ReganChoy"},"content":" public String getPeriod() {","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"ReganChoy"},"content":" return \"(by: \" + this.deadline + \")\";","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"ReganChoy"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"ReganChoy"},"content":" public String announcement() {","lastModifiedDate":"2024-01-23"},{"lineNumber":17,"author":{"gitId":"ReganChoy"},"content":" return \"New Deadline created!\";","lastModifiedDate":"2024-01-23"},{"lineNumber":18,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":19,"author":{"gitId":"ReganChoy"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"ReganChoy":19}},{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ReganChoy"},"content":"import java.util.InputMismatchException;","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"ReganChoy"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"ReganChoy"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":5,"author":{"gitId":"ReganChoy"},"content":" String name \u003d \"XVX-016 Aerial\";","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"ReganChoy"},"content":" String command \u003d \"\";","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"ReganChoy"},"content":" String secondaryInput \u003d \"\";","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"ReganChoy"},"content":" Scanner scanner1;","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"ReganChoy"},"content":" ArrayList\u003cTask\u003e taskList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"ReganChoy"},"content":" String[] commandList \u003d new String[] {\"bye\", \"mark\", \"unmark\", \"todo\", \"deadline\", \"event\", \"list\"};","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"ReganChoy"},"content":" public Duke() {","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":13,"author":{"gitId":"ReganChoy"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":14,"author":{"gitId":"ReganChoy"},"content":" public void greeting() {","lastModifiedDate":"2024-01-22"},{"lineNumber":15,"author":{"gitId":"ReganChoy"},"content":" horizontalLines();","lastModifiedDate":"2024-01-22"},{"lineNumber":16,"author":{"gitId":"ReganChoy"},"content":" indent();","lastModifiedDate":"2024-01-22"},{"lineNumber":17,"author":{"gitId":"ReganChoy"},"content":" System.out.println(\"HELLO, Nice to meet you. I am \" + this.name + \"! \\uD83E\\uDD16\");","lastModifiedDate":"2024-01-22"},{"lineNumber":18,"author":{"gitId":"ReganChoy"},"content":" indent();","lastModifiedDate":"2024-01-22"},{"lineNumber":19,"author":{"gitId":"ReganChoy"},"content":" System.out.println(\"What are we doing today?\");","lastModifiedDate":"2024-01-22"},{"lineNumber":20,"author":{"gitId":"ReganChoy"},"content":" horizontalLines();","lastModifiedDate":"2024-01-22"},{"lineNumber":21,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":22,"author":{"gitId":"ReganChoy"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":23,"author":{"gitId":"ReganChoy"},"content":" public void bye() {","lastModifiedDate":"2024-01-22"},{"lineNumber":24,"author":{"gitId":"ReganChoy"},"content":" horizontalLines();","lastModifiedDate":"2024-01-23"},{"lineNumber":25,"author":{"gitId":"ReganChoy"},"content":" indent();","lastModifiedDate":"2024-01-22"},{"lineNumber":26,"author":{"gitId":"ReganChoy"},"content":" System.out.println(\"See you next time! ♥( ˆ⌣ ˆԅ)\");","lastModifiedDate":"2024-01-22"},{"lineNumber":27,"author":{"gitId":"ReganChoy"},"content":" horizontalLines();","lastModifiedDate":"2024-01-22"},{"lineNumber":28,"author":{"gitId":"ReganChoy"},"content":" this.scanner1.close();","lastModifiedDate":"2024-01-22"},{"lineNumber":29,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":30,"author":{"gitId":"ReganChoy"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":31,"author":{"gitId":"ReganChoy"},"content":" public void horizontalLines() {","lastModifiedDate":"2024-01-22"},{"lineNumber":32,"author":{"gitId":"ReganChoy"},"content":" System.out.println(\"\\n ____________________________________________________________\");","lastModifiedDate":"2024-01-22"},{"lineNumber":33,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":34,"author":{"gitId":"ReganChoy"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":35,"author":{"gitId":"ReganChoy"},"content":" public void echo() {","lastModifiedDate":"2024-01-22"},{"lineNumber":36,"author":{"gitId":"ReganChoy"},"content":" horizontalLines();","lastModifiedDate":"2024-01-22"},{"lineNumber":37,"author":{"gitId":"ReganChoy"},"content":" indent();","lastModifiedDate":"2024-01-22"},{"lineNumber":38,"author":{"gitId":"ReganChoy"},"content":" System.out.println(\"╭( ๐ _๐)╮\");","lastModifiedDate":"2024-01-22"},{"lineNumber":39,"author":{"gitId":"ReganChoy"},"content":" indent();","lastModifiedDate":"2024-01-22"},{"lineNumber":40,"author":{"gitId":"ReganChoy"},"content":" System.out.println(\"\\uD83D\\uDDE8️ You said THIS: \");","lastModifiedDate":"2024-01-22"},{"lineNumber":41,"author":{"gitId":"ReganChoy"},"content":" indent();","lastModifiedDate":"2024-01-22"},{"lineNumber":42,"author":{"gitId":"ReganChoy"},"content":" System.out.println(this.command);","lastModifiedDate":"2024-01-22"},{"lineNumber":43,"author":{"gitId":"ReganChoy"},"content":" horizontalLines();","lastModifiedDate":"2024-01-22"},{"lineNumber":44,"author":{"gitId":"ReganChoy"},"content":" input();","lastModifiedDate":"2024-01-22"},{"lineNumber":45,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":46,"author":{"gitId":"ReganChoy"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":47,"author":{"gitId":"ReganChoy"},"content":" public void markTask(int index) {","lastModifiedDate":"2024-01-23"},{"lineNumber":48,"author":{"gitId":"ReganChoy"},"content":" horizontalLines();","lastModifiedDate":"2024-01-23"},{"lineNumber":49,"author":{"gitId":"ReganChoy"},"content":" Task currentTask \u003d taskList.get(index);","lastModifiedDate":"2024-01-23"},{"lineNumber":50,"author":{"gitId":"ReganChoy"},"content":" indent();","lastModifiedDate":"2024-01-23"},{"lineNumber":51,"author":{"gitId":"ReganChoy"},"content":" System.out.println(\"We have completed this task!\");","lastModifiedDate":"2024-01-23"},{"lineNumber":52,"author":{"gitId":"ReganChoy"},"content":" currentTask.mark();","lastModifiedDate":"2024-01-23"},{"lineNumber":53,"author":{"gitId":"ReganChoy"},"content":" indent();","lastModifiedDate":"2024-01-23"},{"lineNumber":54,"author":{"gitId":"ReganChoy"},"content":" System.out.println(currentTask.getTaskType() + \" \" + currentTask.getStatus() + \" \" + currentTask.getTask());","lastModifiedDate":"2024-01-23"},{"lineNumber":55,"author":{"gitId":"ReganChoy"},"content":" horizontalLines();","lastModifiedDate":"2024-01-23"},{"lineNumber":56,"author":{"gitId":"ReganChoy"},"content":" input();","lastModifiedDate":"2024-01-23"},{"lineNumber":57,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":58,"author":{"gitId":"ReganChoy"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":59,"author":{"gitId":"ReganChoy"},"content":" public void deleteTask(int index) {","lastModifiedDate":"2024-01-23"},{"lineNumber":60,"author":{"gitId":"ReganChoy"},"content":" horizontalLines();","lastModifiedDate":"2024-01-23"},{"lineNumber":61,"author":{"gitId":"ReganChoy"},"content":" Task currentTask \u003d taskList.get(index);","lastModifiedDate":"2024-01-23"},{"lineNumber":62,"author":{"gitId":"ReganChoy"},"content":" indent();","lastModifiedDate":"2024-01-23"},{"lineNumber":63,"author":{"gitId":"ReganChoy"},"content":" System.out.println(\"Task has been deleted!\");","lastModifiedDate":"2024-01-23"},{"lineNumber":64,"author":{"gitId":"ReganChoy"},"content":" indent();","lastModifiedDate":"2024-01-23"},{"lineNumber":65,"author":{"gitId":"ReganChoy"},"content":" System.out.println(currentTask.getTaskType() + \" \" + currentTask.getStatus() + \" \" + currentTask.getTask());","lastModifiedDate":"2024-01-23"},{"lineNumber":66,"author":{"gitId":"ReganChoy"},"content":" horizontalLines();","lastModifiedDate":"2024-01-23"},{"lineNumber":67,"author":{"gitId":"ReganChoy"},"content":" taskList.remove(index);","lastModifiedDate":"2024-01-23"},{"lineNumber":68,"author":{"gitId":"ReganChoy"},"content":" input();","lastModifiedDate":"2024-01-23"},{"lineNumber":69,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":70,"author":{"gitId":"ReganChoy"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":71,"author":{"gitId":"ReganChoy"},"content":" public void unmarkTask(int index) {","lastModifiedDate":"2024-01-23"},{"lineNumber":72,"author":{"gitId":"ReganChoy"},"content":" horizontalLines();","lastModifiedDate":"2024-01-23"},{"lineNumber":73,"author":{"gitId":"ReganChoy"},"content":" Task currentTask \u003d taskList.get(index);","lastModifiedDate":"2024-01-23"},{"lineNumber":74,"author":{"gitId":"ReganChoy"},"content":" indent();","lastModifiedDate":"2024-01-23"},{"lineNumber":75,"author":{"gitId":"ReganChoy"},"content":" System.out.println(\"Oops, task unmarked!\");","lastModifiedDate":"2024-01-23"},{"lineNumber":76,"author":{"gitId":"ReganChoy"},"content":" currentTask.unmark();","lastModifiedDate":"2024-01-23"},{"lineNumber":77,"author":{"gitId":"ReganChoy"},"content":" indent();","lastModifiedDate":"2024-01-23"},{"lineNumber":78,"author":{"gitId":"ReganChoy"},"content":" System.out.println(currentTask.getTaskType() + \" \" + currentTask.getStatus() + \" \" + currentTask.getTask());","lastModifiedDate":"2024-01-23"},{"lineNumber":79,"author":{"gitId":"ReganChoy"},"content":" horizontalLines();","lastModifiedDate":"2024-01-23"},{"lineNumber":80,"author":{"gitId":"ReganChoy"},"content":" input();","lastModifiedDate":"2024-01-23"},{"lineNumber":81,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":82,"author":{"gitId":"ReganChoy"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":83,"author":{"gitId":"ReganChoy"},"content":" public void addTask() {","lastModifiedDate":"2024-01-23"},{"lineNumber":84,"author":{"gitId":"ReganChoy"},"content":" horizontalLines();","lastModifiedDate":"2024-01-23"},{"lineNumber":85,"author":{"gitId":"ReganChoy"},"content":" Task newTask;","lastModifiedDate":"2024-01-23"},{"lineNumber":86,"author":{"gitId":"ReganChoy"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":87,"author":{"gitId":"ReganChoy"},"content":" if (this.command.equals(\"todo\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":88,"author":{"gitId":"ReganChoy"},"content":" newTask \u003d new ToDo(secondaryInput, \"T\");","lastModifiedDate":"2024-01-23"},{"lineNumber":89,"author":{"gitId":"ReganChoy"},"content":" this.taskList.add(newTask);","lastModifiedDate":"2024-01-23"},{"lineNumber":90,"author":{"gitId":"ReganChoy"},"content":" indent();","lastModifiedDate":"2024-01-23"},{"lineNumber":91,"author":{"gitId":"ReganChoy"},"content":" System.out.println(newTask.announcement());","lastModifiedDate":"2024-01-23"},{"lineNumber":92,"author":{"gitId":"ReganChoy"},"content":" indent();","lastModifiedDate":"2024-01-23"},{"lineNumber":93,"author":{"gitId":"ReganChoy"},"content":" indent();","lastModifiedDate":"2024-01-23"},{"lineNumber":94,"author":{"gitId":"ReganChoy"},"content":" System.out.println(newTask.toString());","lastModifiedDate":"2024-01-23"},{"lineNumber":95,"author":{"gitId":"ReganChoy"},"content":" horizontalLines();","lastModifiedDate":"2024-01-23"},{"lineNumber":96,"author":{"gitId":"ReganChoy"},"content":" } else if (this.command.equals(\"deadline\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":97,"author":{"gitId":"ReganChoy"},"content":" String[] secondaryInputSplit \u003d secondaryInput.split(\"/\");","lastModifiedDate":"2024-01-23"},{"lineNumber":98,"author":{"gitId":"ReganChoy"},"content":" newTask \u003d new Deadline(secondaryInputSplit[0], \"D\", secondaryInputSplit[1]);","lastModifiedDate":"2024-01-23"},{"lineNumber":99,"author":{"gitId":"ReganChoy"},"content":" this.taskList.add(newTask);","lastModifiedDate":"2024-01-23"},{"lineNumber":100,"author":{"gitId":"ReganChoy"},"content":" indent();","lastModifiedDate":"2024-01-23"},{"lineNumber":101,"author":{"gitId":"ReganChoy"},"content":" System.out.println(newTask.announcement());","lastModifiedDate":"2024-01-23"},{"lineNumber":102,"author":{"gitId":"ReganChoy"},"content":" indent();","lastModifiedDate":"2024-01-23"},{"lineNumber":103,"author":{"gitId":"ReganChoy"},"content":" indent();","lastModifiedDate":"2024-01-23"},{"lineNumber":104,"author":{"gitId":"ReganChoy"},"content":" System.out.println(newTask.toString());","lastModifiedDate":"2024-01-23"},{"lineNumber":105,"author":{"gitId":"ReganChoy"},"content":" horizontalLines();","lastModifiedDate":"2024-01-23"},{"lineNumber":106,"author":{"gitId":"ReganChoy"},"content":" } else if (this.command.equals(\"event\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":107,"author":{"gitId":"ReganChoy"},"content":" String[] secondaryInputSplit \u003d secondaryInput.split(\"/\");","lastModifiedDate":"2024-01-23"},{"lineNumber":108,"author":{"gitId":"ReganChoy"},"content":" newTask \u003d new Event(secondaryInputSplit[0], \"E\", secondaryInputSplit[1],","lastModifiedDate":"2024-01-23"},{"lineNumber":109,"author":{"gitId":"ReganChoy"},"content":" secondaryInputSplit[2]);","lastModifiedDate":"2024-01-23"},{"lineNumber":110,"author":{"gitId":"ReganChoy"},"content":" this.taskList.add(newTask);","lastModifiedDate":"2024-01-23"},{"lineNumber":111,"author":{"gitId":"ReganChoy"},"content":" indent();","lastModifiedDate":"2024-01-23"},{"lineNumber":112,"author":{"gitId":"ReganChoy"},"content":" System.out.println(newTask.announcement());","lastModifiedDate":"2024-01-23"},{"lineNumber":113,"author":{"gitId":"ReganChoy"},"content":" indent();","lastModifiedDate":"2024-01-23"},{"lineNumber":114,"author":{"gitId":"ReganChoy"},"content":" indent();","lastModifiedDate":"2024-01-23"},{"lineNumber":115,"author":{"gitId":"ReganChoy"},"content":" System.out.println(newTask.toString());","lastModifiedDate":"2024-01-23"},{"lineNumber":116,"author":{"gitId":"ReganChoy"},"content":" horizontalLines();","lastModifiedDate":"2024-01-23"},{"lineNumber":117,"author":{"gitId":"ReganChoy"},"content":" } else {","lastModifiedDate":"2024-01-23"},{"lineNumber":118,"author":{"gitId":"ReganChoy"},"content":" indent();","lastModifiedDate":"2024-01-23"},{"lineNumber":119,"author":{"gitId":"ReganChoy"},"content":" System.out.println(\"Invalid Task\");","lastModifiedDate":"2024-01-23"},{"lineNumber":120,"author":{"gitId":"ReganChoy"},"content":" horizontalLines();","lastModifiedDate":"2024-01-23"},{"lineNumber":121,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":122,"author":{"gitId":"ReganChoy"},"content":" input();","lastModifiedDate":"2024-01-23"},{"lineNumber":123,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":124,"author":{"gitId":"ReganChoy"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":125,"author":{"gitId":"ReganChoy"},"content":" public void listTask() {","lastModifiedDate":"2024-01-23"},{"lineNumber":126,"author":{"gitId":"ReganChoy"},"content":" horizontalLines();","lastModifiedDate":"2024-01-23"},{"lineNumber":127,"author":{"gitId":"ReganChoy"},"content":" indent();","lastModifiedDate":"2024-01-23"},{"lineNumber":128,"author":{"gitId":"ReganChoy"},"content":" System.out.println(\"\\uD83D\\uDD6E\");","lastModifiedDate":"2024-01-23"},{"lineNumber":129,"author":{"gitId":"ReganChoy"},"content":" indent();","lastModifiedDate":"2024-01-23"},{"lineNumber":130,"author":{"gitId":"ReganChoy"},"content":" System.out.println(\"\\uD83D\\uDDE8️ These are the tasks we currently have: \");","lastModifiedDate":"2024-01-23"},{"lineNumber":131,"author":{"gitId":"ReganChoy"},"content":" indent();","lastModifiedDate":"2024-01-23"},{"lineNumber":132,"author":{"gitId":"ReganChoy"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":133,"author":{"gitId":"ReganChoy"},"content":" for (int i \u003d 0; i \u003c taskList.size(); i++) {","lastModifiedDate":"2024-01-23"},{"lineNumber":134,"author":{"gitId":"ReganChoy"},"content":" Task currentTask \u003d taskList.get(i);","lastModifiedDate":"2024-01-23"},{"lineNumber":135,"author":{"gitId":"ReganChoy"},"content":" System.out.println((i+1) + \". \" + currentTask.toString());","lastModifiedDate":"2024-01-23"},{"lineNumber":136,"author":{"gitId":"ReganChoy"},"content":" indent();","lastModifiedDate":"2024-01-23"},{"lineNumber":137,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":138,"author":{"gitId":"ReganChoy"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":139,"author":{"gitId":"ReganChoy"},"content":" System.out.println(\"We have \" + (taskList.size()) + \" tasks.\");","lastModifiedDate":"2024-01-23"},{"lineNumber":140,"author":{"gitId":"ReganChoy"},"content":" horizontalLines();","lastModifiedDate":"2024-01-23"},{"lineNumber":141,"author":{"gitId":"ReganChoy"},"content":" input();","lastModifiedDate":"2024-01-23"},{"lineNumber":142,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":143,"author":{"gitId":"ReganChoy"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":144,"author":{"gitId":"ReganChoy"},"content":" public void indent() {","lastModifiedDate":"2024-01-22"},{"lineNumber":145,"author":{"gitId":"ReganChoy"},"content":" System.out.print(\" \");","lastModifiedDate":"2024-01-22"},{"lineNumber":146,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":147,"author":{"gitId":"ReganChoy"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":148,"author":{"gitId":"ReganChoy"},"content":" public void input() {","lastModifiedDate":"2024-01-22"},{"lineNumber":149,"author":{"gitId":"ReganChoy"},"content":" boolean isCommandValid \u003d false;","lastModifiedDate":"2024-01-23"},{"lineNumber":150,"author":{"gitId":"ReganChoy"},"content":" this.command \u003d\"\";","lastModifiedDate":"2024-01-23"},{"lineNumber":151,"author":{"gitId":"ReganChoy"},"content":" this.secondaryInput \u003d\"\";","lastModifiedDate":"2024-01-23"},{"lineNumber":152,"author":{"gitId":"ReganChoy"},"content":" String commandInput \u003d scanner1.nextLine();","lastModifiedDate":"2024-01-22"},{"lineNumber":153,"author":{"gitId":"ReganChoy"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":154,"author":{"gitId":"ReganChoy"},"content":" if (commandInput.equals(\"bye\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":155,"author":{"gitId":"ReganChoy"},"content":" this.command \u003d commandInput;","lastModifiedDate":"2024-01-23"},{"lineNumber":156,"author":{"gitId":"ReganChoy"},"content":" isCommandValid \u003d true;","lastModifiedDate":"2024-01-23"},{"lineNumber":157,"author":{"gitId":"ReganChoy"},"content":" bye();","lastModifiedDate":"2024-01-22"},{"lineNumber":158,"author":{"gitId":"ReganChoy"},"content":" } else if (commandInput.equals(\"list\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":159,"author":{"gitId":"ReganChoy"},"content":" this.command \u003d commandInput;","lastModifiedDate":"2024-01-23"},{"lineNumber":160,"author":{"gitId":"ReganChoy"},"content":" isCommandValid \u003d true;","lastModifiedDate":"2024-01-23"},{"lineNumber":161,"author":{"gitId":"ReganChoy"},"content":" listTask();","lastModifiedDate":"2024-01-23"},{"lineNumber":162,"author":{"gitId":"ReganChoy"},"content":" } else {","lastModifiedDate":"2024-01-23"},{"lineNumber":163,"author":{"gitId":"ReganChoy"},"content":" String[] inputSplit \u003d commandInput.split(\" \", 2);","lastModifiedDate":"2024-01-23"},{"lineNumber":164,"author":{"gitId":"ReganChoy"},"content":" this.command \u003d inputSplit[0];","lastModifiedDate":"2024-01-23"},{"lineNumber":165,"author":{"gitId":"ReganChoy"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":166,"author":{"gitId":"ReganChoy"},"content":" try {","lastModifiedDate":"2024-01-23"},{"lineNumber":167,"author":{"gitId":"ReganChoy"},"content":" if (this.command.equals(\"mark\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":168,"author":{"gitId":"ReganChoy"},"content":" isCommandValid \u003d true;","lastModifiedDate":"2024-01-23"},{"lineNumber":169,"author":{"gitId":"ReganChoy"},"content":" markTask(Integer.valueOf(inputSplit[1]) - 1);","lastModifiedDate":"2024-01-23"},{"lineNumber":170,"author":{"gitId":"ReganChoy"},"content":" } else if (this.command.equals(\"unmark\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":171,"author":{"gitId":"ReganChoy"},"content":" isCommandValid \u003d true;","lastModifiedDate":"2024-01-23"},{"lineNumber":172,"author":{"gitId":"ReganChoy"},"content":" unmarkTask(Integer.valueOf((inputSplit[1])) - 1);","lastModifiedDate":"2024-01-23"},{"lineNumber":173,"author":{"gitId":"ReganChoy"},"content":" } else if (this.command.equals(\"delete\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":174,"author":{"gitId":"ReganChoy"},"content":" isCommandValid \u003d true;","lastModifiedDate":"2024-01-23"},{"lineNumber":175,"author":{"gitId":"ReganChoy"},"content":" deleteTask(Integer.valueOf((inputSplit[1])) - 1);","lastModifiedDate":"2024-01-23"},{"lineNumber":176,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":177,"author":{"gitId":"ReganChoy"},"content":" } catch(IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-23"},{"lineNumber":178,"author":{"gitId":"ReganChoy"},"content":" if (taskList.size() \u003d\u003d 0) {","lastModifiedDate":"2024-01-23"},{"lineNumber":179,"author":{"gitId":"ReganChoy"},"content":" indent();","lastModifiedDate":"2024-01-23"},{"lineNumber":180,"author":{"gitId":"ReganChoy"},"content":" System.out.println(\"You have no task to mark,unmark or delete!\");","lastModifiedDate":"2024-01-23"},{"lineNumber":181,"author":{"gitId":"ReganChoy"},"content":" horizontalLines();","lastModifiedDate":"2024-01-23"},{"lineNumber":182,"author":{"gitId":"ReganChoy"},"content":" input();","lastModifiedDate":"2024-01-23"},{"lineNumber":183,"author":{"gitId":"ReganChoy"},"content":" } else {","lastModifiedDate":"2024-01-23"},{"lineNumber":184,"author":{"gitId":"ReganChoy"},"content":" indent();","lastModifiedDate":"2024-01-23"},{"lineNumber":185,"author":{"gitId":"ReganChoy"},"content":" System.out.println(\"You only have \" + taskList.size() +\" tasks!\");","lastModifiedDate":"2024-01-23"},{"lineNumber":186,"author":{"gitId":"ReganChoy"},"content":" indent();","lastModifiedDate":"2024-01-23"},{"lineNumber":187,"author":{"gitId":"ReganChoy"},"content":" System.out.println(\"Select a number from 1 to \" + taskList.size() + \".\");","lastModifiedDate":"2024-01-23"},{"lineNumber":188,"author":{"gitId":"ReganChoy"},"content":" horizontalLines();","lastModifiedDate":"2024-01-23"},{"lineNumber":189,"author":{"gitId":"ReganChoy"},"content":" input();","lastModifiedDate":"2024-01-23"},{"lineNumber":190,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":191,"author":{"gitId":"ReganChoy"},"content":" } catch(NumberFormatException e) {","lastModifiedDate":"2024-01-23"},{"lineNumber":192,"author":{"gitId":"ReganChoy"},"content":" indent();","lastModifiedDate":"2024-01-23"},{"lineNumber":193,"author":{"gitId":"ReganChoy"},"content":" System.out.println(\"Please input a number.\");","lastModifiedDate":"2024-01-23"},{"lineNumber":194,"author":{"gitId":"ReganChoy"},"content":" horizontalLines();","lastModifiedDate":"2024-01-23"},{"lineNumber":195,"author":{"gitId":"ReganChoy"},"content":" input();","lastModifiedDate":"2024-01-23"},{"lineNumber":196,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":197,"author":{"gitId":"ReganChoy"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":198,"author":{"gitId":"ReganChoy"},"content":" try {","lastModifiedDate":"2024-01-23"},{"lineNumber":199,"author":{"gitId":"ReganChoy"},"content":" if ((this.command.equals(\"todo\")) || (this.command.equals(\"deadline\"))","lastModifiedDate":"2024-01-23"},{"lineNumber":200,"author":{"gitId":"ReganChoy"},"content":" || (this.command.equals(\"event\"))) {","lastModifiedDate":"2024-01-23"},{"lineNumber":201,"author":{"gitId":"ReganChoy"},"content":" this.secondaryInput \u003d inputSplit[1];","lastModifiedDate":"2024-01-23"},{"lineNumber":202,"author":{"gitId":"ReganChoy"},"content":" isCommandValid \u003d true;","lastModifiedDate":"2024-01-23"},{"lineNumber":203,"author":{"gitId":"ReganChoy"},"content":" addTask();","lastModifiedDate":"2024-01-23"},{"lineNumber":204,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":205,"author":{"gitId":"ReganChoy"},"content":" } catch (ArrayIndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-23"},{"lineNumber":206,"author":{"gitId":"ReganChoy"},"content":" if (this.command.equals(\"deadline\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":207,"author":{"gitId":"ReganChoy"},"content":" indent();","lastModifiedDate":"2024-01-23"},{"lineNumber":208,"author":{"gitId":"ReganChoy"},"content":" System.out.println(\"Please input a date or time with a / in front.\");","lastModifiedDate":"2024-01-23"},{"lineNumber":209,"author":{"gitId":"ReganChoy"},"content":" horizontalLines();","lastModifiedDate":"2024-01-23"},{"lineNumber":210,"author":{"gitId":"ReganChoy"},"content":" input();","lastModifiedDate":"2024-01-23"},{"lineNumber":211,"author":{"gitId":"ReganChoy"},"content":" } else if (this.command.equals(\"event\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":212,"author":{"gitId":"ReganChoy"},"content":" indent();","lastModifiedDate":"2024-01-23"},{"lineNumber":213,"author":{"gitId":"ReganChoy"},"content":" System.out.println(\"Please input a start and end time or date with a / in front of both periods.\");","lastModifiedDate":"2024-01-23"},{"lineNumber":214,"author":{"gitId":"ReganChoy"},"content":" horizontalLines();","lastModifiedDate":"2024-01-23"},{"lineNumber":215,"author":{"gitId":"ReganChoy"},"content":" input();","lastModifiedDate":"2024-01-23"},{"lineNumber":216,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":217,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":218,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":219,"author":{"gitId":"ReganChoy"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":220,"author":{"gitId":"ReganChoy"},"content":" if (!isCommandValid) {","lastModifiedDate":"2024-01-23"},{"lineNumber":221,"author":{"gitId":"ReganChoy"},"content":" indent();","lastModifiedDate":"2024-01-23"},{"lineNumber":222,"author":{"gitId":"ReganChoy"},"content":" System.out.println(\"No such command or too many parameters. Please try again\");","lastModifiedDate":"2024-01-23"},{"lineNumber":223,"author":{"gitId":"ReganChoy"},"content":" horizontalLines();","lastModifiedDate":"2024-01-23"},{"lineNumber":224,"author":{"gitId":"ReganChoy"},"content":" input();","lastModifiedDate":"2024-01-23"},{"lineNumber":225,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":226,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":227,"author":{"gitId":"ReganChoy"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":228,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-01-22"},{"lineNumber":229,"author":{"gitId":"ReganChoy"},"content":" Duke Duke1 \u003d new Duke();","lastModifiedDate":"2024-01-22"},{"lineNumber":230,"author":{"gitId":"ReganChoy"},"content":" Duke1.greeting();","lastModifiedDate":"2024-01-22"},{"lineNumber":231,"author":{"gitId":"ReganChoy"},"content":" Duke1.scanner1 \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-22"},{"lineNumber":232,"author":{"gitId":"ReganChoy"},"content":" Duke1.input();","lastModifiedDate":"2024-01-22"},{"lineNumber":233,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":234,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"ReganChoy":229,"-":5}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ReganChoy"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"ReganChoy"},"content":" private String start;","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"ReganChoy"},"content":" private String end;","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"ReganChoy"},"content":" public Event(String Task, String taskType, String start, String end) {","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"ReganChoy"},"content":" super(Task, taskType);","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"ReganChoy"},"content":" this.start \u003d start;","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"ReganChoy"},"content":" this.end \u003d end;","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"ReganChoy"},"content":" public String toString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"ReganChoy"},"content":" return this.getTaskType() + this.getStatus() + \" \" + this.getTask() + getPeriod();","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"ReganChoy"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"ReganChoy"},"content":" public String getPeriod() {","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"ReganChoy"},"content":" return \"(from: \" + this.start + \"to: \" + this.end + \")\";","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"ReganChoy"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":17,"author":{"gitId":"ReganChoy"},"content":" public String announcement() {","lastModifiedDate":"2024-01-23"},{"lineNumber":18,"author":{"gitId":"ReganChoy"},"content":" return \"New Event created!\";","lastModifiedDate":"2024-01-23"},{"lineNumber":19,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":20,"author":{"gitId":"ReganChoy"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"ReganChoy":20}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ReganChoy"},"content":"public class Task {","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"ReganChoy"},"content":" private String task;","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"ReganChoy"},"content":" private boolean isDone \u003d false;","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"ReganChoy"},"content":" private String taskType;","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"ReganChoy"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"ReganChoy"},"content":" public Task(String taskDesc) {","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"ReganChoy"},"content":" this.task \u003d taskDesc;","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"ReganChoy"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"ReganChoy"},"content":" public Task(String taskDesc, String taskType) {","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"ReganChoy"},"content":" this.task \u003d taskDesc;","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"ReganChoy"},"content":" this.taskType \u003d taskType;","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"ReganChoy"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"ReganChoy"},"content":" public void mark(){","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"ReganChoy"},"content":" this.isDone \u003d true;","lastModifiedDate":"2024-01-23"},{"lineNumber":17,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":18,"author":{"gitId":"ReganChoy"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":19,"author":{"gitId":"ReganChoy"},"content":" public void unmark() {","lastModifiedDate":"2024-01-23"},{"lineNumber":20,"author":{"gitId":"ReganChoy"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-23"},{"lineNumber":21,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":22,"author":{"gitId":"ReganChoy"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":23,"author":{"gitId":"ReganChoy"},"content":" public String getStatus() {","lastModifiedDate":"2024-01-23"},{"lineNumber":24,"author":{"gitId":"ReganChoy"},"content":" if (isDone) {","lastModifiedDate":"2024-01-23"},{"lineNumber":25,"author":{"gitId":"ReganChoy"},"content":" return \"[X]\";","lastModifiedDate":"2024-01-23"},{"lineNumber":26,"author":{"gitId":"ReganChoy"},"content":" } else {","lastModifiedDate":"2024-01-23"},{"lineNumber":27,"author":{"gitId":"ReganChoy"},"content":" return \"[]\";","lastModifiedDate":"2024-01-23"},{"lineNumber":28,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":29,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":30,"author":{"gitId":"ReganChoy"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":31,"author":{"gitId":"ReganChoy"},"content":" public String getTask() {","lastModifiedDate":"2024-01-23"},{"lineNumber":32,"author":{"gitId":"ReganChoy"},"content":" return this.task;","lastModifiedDate":"2024-01-23"},{"lineNumber":33,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":34,"author":{"gitId":"ReganChoy"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":35,"author":{"gitId":"ReganChoy"},"content":" public String getTaskType() {","lastModifiedDate":"2024-01-23"},{"lineNumber":36,"author":{"gitId":"ReganChoy"},"content":" return \"[\" + this.taskType + \"]\";","lastModifiedDate":"2024-01-23"},{"lineNumber":37,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":38,"author":{"gitId":"ReganChoy"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":39,"author":{"gitId":"ReganChoy"},"content":" public String announcement() {","lastModifiedDate":"2024-01-23"},{"lineNumber":40,"author":{"gitId":"ReganChoy"},"content":" return \"New task created!\";","lastModifiedDate":"2024-01-23"},{"lineNumber":41,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":42,"author":{"gitId":"ReganChoy"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"ReganChoy":42}},{"path":"src/main/java/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ReganChoy"},"content":"public class ToDo extends Task {","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"ReganChoy"},"content":" public ToDo(String Task, String taskType) {","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"ReganChoy"},"content":" super(Task,taskType);","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"ReganChoy"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"ReganChoy"},"content":" public String announcement() {","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"ReganChoy"},"content":" return \"New ToDo created!\";","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"ReganChoy"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"ReganChoy"},"content":" public String toString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"ReganChoy"},"content":" return this.getTaskType() + this.getStatus() + \" \" + this.getTask();","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"ReganChoy"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"ReganChoy":13}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"ReganChoy"},"content":"todo cake","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"ReganChoy"},"content":"deadline cake /3pm","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"ReganChoy"},"content":"event cake /3pm /4pm","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"ReganChoy"},"content":"list","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"ReganChoy"},"content":"bye","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"ReganChoy":5}}] +[{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ReganChoy"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"ReganChoy"},"content":" private String deadline;","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"ReganChoy"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"ReganChoy"},"content":" public Deadline(String task, String taskType, String deadline) {","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"ReganChoy"},"content":" super(task, taskType);","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"ReganChoy"},"content":" this.deadline \u003d deadline;","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"ReganChoy"},"content":" public String toString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"ReganChoy"},"content":" return this.getTaskType() + this.getStatus() + \" \" + this.getTask() + this.getPeriod();","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"ReganChoy"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"ReganChoy"},"content":" public String getPeriod() {","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"ReganChoy"},"content":" return \"(by: \" + this.deadline + \")\";","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"ReganChoy"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"ReganChoy"},"content":" public String announcement() {","lastModifiedDate":"2024-01-23"},{"lineNumber":17,"author":{"gitId":"ReganChoy"},"content":" return \"New Deadline created!\";","lastModifiedDate":"2024-01-23"},{"lineNumber":18,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":19,"author":{"gitId":"ReganChoy"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"ReganChoy"},"content":" public String saveString() {","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"ReganChoy"},"content":" return this.getTaskTypeSingle() + \"/\" + this.getStatusBinary() + \"/\" + this.getTask() + \"/\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"ReganChoy"},"content":" this.deadline;","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"ReganChoy"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"ReganChoy":24}},{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ReganChoy"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"ReganChoy"},"content":"import java.util.InputMismatchException;","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"ReganChoy"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":5,"author":{"gitId":"ReganChoy"},"content":" Storage storage;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"ReganChoy"},"content":" Ui ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"ReganChoy"},"content":" TaskList taskList;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"ReganChoy"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"ReganChoy"},"content":" String command \u003d \"\";","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"ReganChoy"},"content":" String secondaryInput \u003d \"\";","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"ReganChoy"},"content":" Scanner scanner1;","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"ReganChoy"},"content":" boolean isEnded \u003d false;","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"ReganChoy"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":14,"author":{"gitId":"ReganChoy"},"content":" String[] commandList \u003d new String[] {\"bye\", \"mark\", \"unmark\", \"todo\", \"deadline\", \"event\", \"list\"};","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"ReganChoy"},"content":" public Duke(String filePath) {","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"ReganChoy"},"content":" this.ui \u003d new Ui();","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"ReganChoy"},"content":" this.storage \u003d new Storage(filePath);","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"ReganChoy"},"content":" this.taskList \u003d new TaskList();","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":20,"author":{"gitId":"ReganChoy"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":21,"author":{"gitId":"ReganChoy"},"content":" public void exit() {","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"ReganChoy"},"content":" this.ui.bye();","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"ReganChoy"},"content":" this.scanner1.close();","lastModifiedDate":"2024-01-22"},{"lineNumber":24,"author":{"gitId":"ReganChoy"},"content":" this.storage.saveFile(this.taskList);","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"ReganChoy"},"content":" this.isEnded \u003d true;","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"ReganChoy"},"content":" horizontalLines();","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":28,"author":{"gitId":"ReganChoy"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":29,"author":{"gitId":"ReganChoy"},"content":" public void horizontalLines() {","lastModifiedDate":"2024-01-22"},{"lineNumber":30,"author":{"gitId":"ReganChoy"},"content":" System.out.println(\"\\n ____________________________________________________________\");","lastModifiedDate":"2024-01-22"},{"lineNumber":31,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":32,"author":{"gitId":"ReganChoy"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":33,"author":{"gitId":"ReganChoy"},"content":" public void input() {","lastModifiedDate":"2024-01-22"},{"lineNumber":34,"author":{"gitId":"ReganChoy"},"content":" boolean isCommandValid \u003d false;","lastModifiedDate":"2024-01-23"},{"lineNumber":35,"author":{"gitId":"ReganChoy"},"content":" this.command \u003d\"\";","lastModifiedDate":"2024-01-23"},{"lineNumber":36,"author":{"gitId":"ReganChoy"},"content":" this.secondaryInput \u003d\"\";","lastModifiedDate":"2024-01-23"},{"lineNumber":37,"author":{"gitId":"ReganChoy"},"content":" String commandInput \u003d scanner1.nextLine();","lastModifiedDate":"2024-01-22"},{"lineNumber":38,"author":{"gitId":"ReganChoy"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":39,"author":{"gitId":"ReganChoy"},"content":" if (commandInput.equals(\"bye\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":40,"author":{"gitId":"ReganChoy"},"content":" this.command \u003d commandInput;","lastModifiedDate":"2024-01-23"},{"lineNumber":41,"author":{"gitId":"ReganChoy"},"content":" isCommandValid \u003d true;","lastModifiedDate":"2024-01-23"},{"lineNumber":42,"author":{"gitId":"ReganChoy"},"content":" exit();","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"ReganChoy"},"content":" } else if (commandInput.equals(\"list\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":44,"author":{"gitId":"ReganChoy"},"content":" this.command \u003d commandInput;","lastModifiedDate":"2024-01-23"},{"lineNumber":45,"author":{"gitId":"ReganChoy"},"content":" isCommandValid \u003d true;","lastModifiedDate":"2024-01-23"},{"lineNumber":46,"author":{"gitId":"ReganChoy"},"content":" this.taskList.listTask();","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"ReganChoy"},"content":" } else {","lastModifiedDate":"2024-01-23"},{"lineNumber":48,"author":{"gitId":"ReganChoy"},"content":" String[] inputSplit \u003d commandInput.split(\" \", 2);","lastModifiedDate":"2024-01-23"},{"lineNumber":49,"author":{"gitId":"ReganChoy"},"content":" this.command \u003d inputSplit[0];","lastModifiedDate":"2024-01-23"},{"lineNumber":50,"author":{"gitId":"ReganChoy"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":51,"author":{"gitId":"ReganChoy"},"content":" try {","lastModifiedDate":"2024-01-23"},{"lineNumber":52,"author":{"gitId":"ReganChoy"},"content":" if (this.command.equals(\"mark\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":53,"author":{"gitId":"ReganChoy"},"content":" isCommandValid \u003d true;","lastModifiedDate":"2024-01-23"},{"lineNumber":54,"author":{"gitId":"ReganChoy"},"content":" this.taskList.markTask(Integer.valueOf(inputSplit[1]) - 1);","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"ReganChoy"},"content":" } else if (this.command.equals(\"unmark\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":56,"author":{"gitId":"ReganChoy"},"content":" isCommandValid \u003d true;","lastModifiedDate":"2024-01-23"},{"lineNumber":57,"author":{"gitId":"ReganChoy"},"content":" this.taskList.unmarkTask(Integer.valueOf((inputSplit[1])) - 1);","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"ReganChoy"},"content":" } else if (this.command.equals(\"delete\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":59,"author":{"gitId":"ReganChoy"},"content":" isCommandValid \u003d true;","lastModifiedDate":"2024-01-23"},{"lineNumber":60,"author":{"gitId":"ReganChoy"},"content":" this.taskList.deleteTask(Integer.valueOf((inputSplit[1])) - 1);","lastModifiedDate":"2024-01-30"},{"lineNumber":61,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":62,"author":{"gitId":"ReganChoy"},"content":" } catch(IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-23"},{"lineNumber":63,"author":{"gitId":"ReganChoy"},"content":" if (this.taskList.size() \u003d\u003d 0) {","lastModifiedDate":"2024-01-30"},{"lineNumber":64,"author":{"gitId":"ReganChoy"},"content":" System.out.println(\"\\tYou have no task to mark,unmark or delete!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":65,"author":{"gitId":"ReganChoy"},"content":" } else {","lastModifiedDate":"2024-01-23"},{"lineNumber":66,"author":{"gitId":"ReganChoy"},"content":" System.out.println(\"\\tYou only have \" + taskList.size() +\" tasks!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":67,"author":{"gitId":"ReganChoy"},"content":" System.out.println(\"\\tSelect a number from 1 to \" + taskList.size() + \".\");","lastModifiedDate":"2024-01-30"},{"lineNumber":68,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":69,"author":{"gitId":"ReganChoy"},"content":" } catch(NumberFormatException e) {","lastModifiedDate":"2024-01-23"},{"lineNumber":70,"author":{"gitId":"ReganChoy"},"content":" System.out.println(\"\\tPlease input a number.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":71,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":72,"author":{"gitId":"ReganChoy"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":73,"author":{"gitId":"ReganChoy"},"content":" try {","lastModifiedDate":"2024-01-23"},{"lineNumber":74,"author":{"gitId":"ReganChoy"},"content":" if ((this.command.equals(\"todo\")) || (this.command.equals(\"deadline\"))","lastModifiedDate":"2024-01-23"},{"lineNumber":75,"author":{"gitId":"ReganChoy"},"content":" || (this.command.equals(\"event\"))) {","lastModifiedDate":"2024-01-23"},{"lineNumber":76,"author":{"gitId":"ReganChoy"},"content":" this.secondaryInput \u003d inputSplit[1];","lastModifiedDate":"2024-01-23"},{"lineNumber":77,"author":{"gitId":"ReganChoy"},"content":" isCommandValid \u003d true;","lastModifiedDate":"2024-01-23"},{"lineNumber":78,"author":{"gitId":"ReganChoy"},"content":" this.taskList.addTask(this.command, this.secondaryInput);","lastModifiedDate":"2024-01-30"},{"lineNumber":79,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":80,"author":{"gitId":"ReganChoy"},"content":" } catch (ArrayIndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-23"},{"lineNumber":81,"author":{"gitId":"ReganChoy"},"content":" if (this.command.equals(\"deadline\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":82,"author":{"gitId":"ReganChoy"},"content":" System.out.println(\"\\tPlease input a date or time with a / in front.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":83,"author":{"gitId":"ReganChoy"},"content":" } else if (this.command.equals(\"event\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":84,"author":{"gitId":"ReganChoy"},"content":" System.out.println(\"\\tPlease input a start and end time or date with a / in front of both periods.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":85,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":86,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":87,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":88,"author":{"gitId":"ReganChoy"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":89,"author":{"gitId":"ReganChoy"},"content":" if (!isCommandValid) {","lastModifiedDate":"2024-01-23"},{"lineNumber":90,"author":{"gitId":"ReganChoy"},"content":" System.out.println(\"\\tNo such command or too many parameters. Please try again\");","lastModifiedDate":"2024-01-30"},{"lineNumber":91,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":92,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":93,"author":{"gitId":"ReganChoy"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":94,"author":{"gitId":"ReganChoy"},"content":" public void run() {","lastModifiedDate":"2024-01-30"},{"lineNumber":95,"author":{"gitId":"ReganChoy"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":96,"author":{"gitId":"ReganChoy"},"content":" this.taskList \u003d storage.loadFile();","lastModifiedDate":"2024-01-30"},{"lineNumber":97,"author":{"gitId":"ReganChoy"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":98,"author":{"gitId":"ReganChoy"},"content":" System.out.println(\"Run failed.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":99,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":100,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":101,"author":{"gitId":"ReganChoy"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":102,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-01-22"},{"lineNumber":103,"author":{"gitId":"ReganChoy"},"content":" Duke Duke1 \u003d new Duke(\"data/tasks.txt\");","lastModifiedDate":"2024-01-30"},{"lineNumber":104,"author":{"gitId":"ReganChoy"},"content":" Duke1.run();","lastModifiedDate":"2024-01-30"},{"lineNumber":105,"author":{"gitId":"ReganChoy"},"content":" Duke1.scanner1 \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-22"},{"lineNumber":106,"author":{"gitId":"ReganChoy"},"content":" Duke1.horizontalLines();","lastModifiedDate":"2024-01-30"},{"lineNumber":107,"author":{"gitId":"ReganChoy"},"content":" Duke1.ui.greeting();","lastModifiedDate":"2024-01-30"},{"lineNumber":108,"author":{"gitId":"ReganChoy"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":109,"author":{"gitId":"ReganChoy"},"content":" while (!Duke1.isEnded) {","lastModifiedDate":"2024-01-30"},{"lineNumber":110,"author":{"gitId":"ReganChoy"},"content":" Duke1.horizontalLines();","lastModifiedDate":"2024-01-30"},{"lineNumber":111,"author":{"gitId":"ReganChoy"},"content":" Duke1.input();","lastModifiedDate":"2024-01-22"},{"lineNumber":112,"author":{"gitId":"ReganChoy"},"content":" //Duke1.horizontalLines();","lastModifiedDate":"2024-01-30"},{"lineNumber":113,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":115,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"ReganChoy":111,"-":4}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ReganChoy"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"ReganChoy"},"content":" private String start;","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"ReganChoy"},"content":" private String end;","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"ReganChoy"},"content":" public Event(String Task, String taskType, String start, String end) {","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"ReganChoy"},"content":" super(Task, taskType);","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"ReganChoy"},"content":" this.start \u003d start;","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"ReganChoy"},"content":" this.end \u003d end;","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"ReganChoy"},"content":" public String toString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"ReganChoy"},"content":" return this.getTaskType() + this.getStatus() + \" \" + this.getTask() + this.getPeriod();","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"ReganChoy"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"ReganChoy"},"content":" public String getPeriod() {","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"ReganChoy"},"content":" return \"(from: \" + this.start + \"to: \" + this.end + \")\";","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"ReganChoy"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":17,"author":{"gitId":"ReganChoy"},"content":" public String announcement() {","lastModifiedDate":"2024-01-23"},{"lineNumber":18,"author":{"gitId":"ReganChoy"},"content":" return \"New Event created!\";","lastModifiedDate":"2024-01-23"},{"lineNumber":19,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":20,"author":{"gitId":"ReganChoy"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"ReganChoy"},"content":" public String saveString() {","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"ReganChoy"},"content":" return this.getTaskTypeSingle() + \"/\" + this.getStatusBinary() + \"/\" + this.getTask() + \"/\"","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"ReganChoy"},"content":" + this.start + \"/\" + this.end;","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"ReganChoy"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"ReganChoy":25}},{"path":"src/main/java/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ReganChoy"},"content":"import java.io.File;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"ReganChoy"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"ReganChoy"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"ReganChoy"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"ReganChoy"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"ReganChoy"},"content":"public class Storage {","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"ReganChoy"},"content":" private String path;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"ReganChoy"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"ReganChoy"},"content":" public Storage(String path) {","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"ReganChoy"},"content":" this.path \u003d path;","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"ReganChoy"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"ReganChoy"},"content":" public TaskList loadFile() throws IOException {","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"ReganChoy"},"content":" TaskList taskListInput \u003d new TaskList();","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"ReganChoy"},"content":" File file \u003d new File(this.path);","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"ReganChoy"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"ReganChoy"},"content":" file.getParentFile().mkdirs();","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"ReganChoy"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"ReganChoy"},"content":" if(!file.exists()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"ReganChoy"},"content":" file.createNewFile();","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"ReganChoy"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"ReganChoy"},"content":" Scanner scanner \u003d new Scanner(file);","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"ReganChoy"},"content":" while(scanner.hasNext()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"ReganChoy"},"content":" String inputLine \u003d scanner.nextLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"ReganChoy"},"content":" String[] inputComponents \u003d inputLine.split(\"/\", 5);","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"ReganChoy"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"ReganChoy"},"content":" Task currentTask \u003d null;","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"ReganChoy"},"content":" if(inputComponents[0].equals(\"T\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"ReganChoy"},"content":" currentTask \u003d new ToDo(inputComponents[2],inputComponents[0]);","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"ReganChoy"},"content":" } else if(inputComponents[0].equals(\"D\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"ReganChoy"},"content":" currentTask \u003d new Deadline(inputComponents[2],inputComponents[0],inputComponents[3]);","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"ReganChoy"},"content":" } else if(inputComponents[0].equals(\"E\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"ReganChoy"},"content":" currentTask \u003d new Event(inputComponents[2],inputComponents[0],inputComponents[3],inputComponents[4]);","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"ReganChoy"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"ReganChoy"},"content":" System.out.println(\"What is this nonsense. Failure to load object.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"ReganChoy"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"ReganChoy"},"content":" if(inputComponents[1].equals(\"1\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"ReganChoy"},"content":" currentTask.mark();","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"ReganChoy"},"content":" taskListInput.getTaskList().add(currentTask);","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"ReganChoy"},"content":" return taskListInput;","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"ReganChoy"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"ReganChoy"},"content":" public void saveFile(TaskList tasklist) {","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"ReganChoy"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"ReganChoy"},"content":" FileWriter writer \u003d new FileWriter(this.path);","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"ReganChoy"},"content":" String tasks \u003d \"\";","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"ReganChoy"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"ReganChoy"},"content":" for (int i \u003d 0; i \u003c tasklist.getTaskList().size(); i++) {","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"ReganChoy"},"content":" Task currentTask \u003d tasklist.getTask(i);","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"ReganChoy"},"content":" tasks +\u003d currentTask.saveString() + \"\\n\";","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"ReganChoy"},"content":" writer.write(tasks);","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"ReganChoy"},"content":" writer.close();","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"ReganChoy"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":59,"author":{"gitId":"ReganChoy"},"content":" System.out.println(\"Error while saving: \" + e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":60,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":61,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":62,"author":{"gitId":"ReganChoy"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"ReganChoy":62}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ReganChoy"},"content":"public class Task {","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"ReganChoy"},"content":" private String task;","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"ReganChoy"},"content":" private boolean isDone \u003d false;","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"ReganChoy"},"content":" private String taskType;","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"ReganChoy"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"ReganChoy"},"content":" public Task(String taskDesc) {","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"ReganChoy"},"content":" this.task \u003d taskDesc;","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"ReganChoy"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"ReganChoy"},"content":" public Task(String taskDesc, String taskType) {","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"ReganChoy"},"content":" this.task \u003d taskDesc;","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"ReganChoy"},"content":" this.taskType \u003d taskType;","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"ReganChoy"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"ReganChoy"},"content":" public void mark(){","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"ReganChoy"},"content":" this.isDone \u003d true;","lastModifiedDate":"2024-01-23"},{"lineNumber":17,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":18,"author":{"gitId":"ReganChoy"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":19,"author":{"gitId":"ReganChoy"},"content":" public void unmark() {","lastModifiedDate":"2024-01-23"},{"lineNumber":20,"author":{"gitId":"ReganChoy"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-23"},{"lineNumber":21,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":22,"author":{"gitId":"ReganChoy"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":23,"author":{"gitId":"ReganChoy"},"content":" public String getStatus() {","lastModifiedDate":"2024-01-23"},{"lineNumber":24,"author":{"gitId":"ReganChoy"},"content":" if (isDone) {","lastModifiedDate":"2024-01-23"},{"lineNumber":25,"author":{"gitId":"ReganChoy"},"content":" return \"[X]\";","lastModifiedDate":"2024-01-23"},{"lineNumber":26,"author":{"gitId":"ReganChoy"},"content":" } else {","lastModifiedDate":"2024-01-23"},{"lineNumber":27,"author":{"gitId":"ReganChoy"},"content":" return \"[]\";","lastModifiedDate":"2024-01-23"},{"lineNumber":28,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":29,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":30,"author":{"gitId":"ReganChoy"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":31,"author":{"gitId":"ReganChoy"},"content":" public String getStatusBinary() {","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"ReganChoy"},"content":" if (isDone) {","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"ReganChoy"},"content":" return \"1\";","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"ReganChoy"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"ReganChoy"},"content":" return \"0\";","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"ReganChoy"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"ReganChoy"},"content":" public String getTask() {","lastModifiedDate":"2024-01-23"},{"lineNumber":40,"author":{"gitId":"ReganChoy"},"content":" return this.task;","lastModifiedDate":"2024-01-23"},{"lineNumber":41,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":42,"author":{"gitId":"ReganChoy"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":43,"author":{"gitId":"ReganChoy"},"content":" public String getTaskType() {","lastModifiedDate":"2024-01-23"},{"lineNumber":44,"author":{"gitId":"ReganChoy"},"content":" return \"[\" + this.taskType + \"]\";","lastModifiedDate":"2024-01-23"},{"lineNumber":45,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":46,"author":{"gitId":"ReganChoy"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":47,"author":{"gitId":"ReganChoy"},"content":" public String announcement() {","lastModifiedDate":"2024-01-23"},{"lineNumber":48,"author":{"gitId":"ReganChoy"},"content":" return \"New task created!\";","lastModifiedDate":"2024-01-23"},{"lineNumber":49,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":50,"author":{"gitId":"ReganChoy"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"ReganChoy"},"content":" public String saveString() {","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"ReganChoy"},"content":" return \"Type/Done/Description\";","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"ReganChoy"},"content":" public String getTaskTypeSingle() {","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"ReganChoy"},"content":" return this.taskType;","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"ReganChoy"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"ReganChoy":57}},{"path":"src/main/java/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ReganChoy"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"ReganChoy"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"ReganChoy"},"content":"public class TaskList {","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"ReganChoy"},"content":" private ArrayList\u003cTask\u003e taskList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"ReganChoy"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"ReganChoy"},"content":" public TaskList() {","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"ReganChoy"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"ReganChoy"},"content":" public void markTask(int index) {","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"ReganChoy"},"content":" Task currentTask \u003d taskList.get(index);","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"ReganChoy"},"content":" System.out.println(\"\\tWe have completed this task!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"ReganChoy"},"content":" currentTask.mark();","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"ReganChoy"},"content":" System.out.println(\"\\t\" + currentTask.getTaskType() + \" \" + currentTask.getStatus() + \" \" + currentTask.getTask());","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"ReganChoy"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"ReganChoy"},"content":" public void deleteTask(int index) {","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"ReganChoy"},"content":" Task currentTask \u003d taskList.get(index);","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"ReganChoy"},"content":" System.out.println(\"\\tTask has been deleted!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"ReganChoy"},"content":" System.out.println(\"\\t\" + currentTask.getTaskType() + \" \" + currentTask.getStatus() + \" \" + currentTask.getTask());","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"ReganChoy"},"content":" taskList.remove(index);","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"ReganChoy"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"ReganChoy"},"content":" public void unmarkTask(int index) {","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"ReganChoy"},"content":" Task currentTask \u003d taskList.get(index);","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"ReganChoy"},"content":" System.out.println(\"\\tOops, task unmarked!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"ReganChoy"},"content":" currentTask.unmark();","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"ReganChoy"},"content":" System.out.println(\"\\t\" + currentTask.getTaskType() + \" \" + currentTask.getStatus() + \" \" + currentTask.getTask());","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"ReganChoy"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"ReganChoy"},"content":" public void listTask() {","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"ReganChoy"},"content":" System.out.println(\"\\tThese are the tasks we currently have: \");","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"ReganChoy"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"ReganChoy"},"content":" for (int i \u003d 0; i \u003c taskList.size(); i++) {","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"ReganChoy"},"content":" Task currentTask \u003d taskList.get(i);","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"ReganChoy"},"content":" System.out.println(\"\\t\" + (i+1) + \". \" + currentTask.toString());","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"ReganChoy"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"ReganChoy"},"content":" System.out.println(\"\\tWe have \" + (taskList.size()) + \" tasks.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"ReganChoy"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"ReganChoy"},"content":" public void addTask(String first, String second) {","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"ReganChoy"},"content":" Task newTask;","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"ReganChoy"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"ReganChoy"},"content":" if (first.equals(\"todo\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"ReganChoy"},"content":" newTask \u003d new ToDo(second, \"T\");","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"ReganChoy"},"content":" this.taskList.add(newTask);","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"ReganChoy"},"content":" System.out.println(\"\\t\" + newTask.announcement());","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"ReganChoy"},"content":" System.out.println(\"\\t\\t\" + newTask.toString());","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"ReganChoy"},"content":" } else if (first.equals(\"deadline\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"ReganChoy"},"content":" String[] secondaryInputSplit \u003d second.split(\"/\");","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"ReganChoy"},"content":" newTask \u003d new Deadline(secondaryInputSplit[0], \"D\", secondaryInputSplit[1]);","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"ReganChoy"},"content":" this.taskList.add(newTask);","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"ReganChoy"},"content":" System.out.println(\"\\t\" + newTask.announcement());","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"ReganChoy"},"content":" System.out.println(\"\\t\\t\" + newTask.toString());","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"ReganChoy"},"content":" } else if (first.equals(\"event\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"ReganChoy"},"content":" String[] secondaryInputSplit \u003d second.split(\"/\");","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"ReganChoy"},"content":" newTask \u003d new Event(secondaryInputSplit[0], \"E\", secondaryInputSplit[1],","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"ReganChoy"},"content":" secondaryInputSplit[2]);","lastModifiedDate":"2024-01-30"},{"lineNumber":59,"author":{"gitId":"ReganChoy"},"content":" this.taskList.add(newTask);","lastModifiedDate":"2024-01-30"},{"lineNumber":60,"author":{"gitId":"ReganChoy"},"content":" System.out.println(\"\\t\" + newTask.announcement());","lastModifiedDate":"2024-01-30"},{"lineNumber":61,"author":{"gitId":"ReganChoy"},"content":" System.out.println(\"\\t\\t\" + newTask.toString());","lastModifiedDate":"2024-01-30"},{"lineNumber":62,"author":{"gitId":"ReganChoy"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":63,"author":{"gitId":"ReganChoy"},"content":" System.out.println(\"\\tInvalid Task\");","lastModifiedDate":"2024-01-30"},{"lineNumber":64,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":65,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":66,"author":{"gitId":"ReganChoy"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":67,"author":{"gitId":"ReganChoy"},"content":" public int size() {","lastModifiedDate":"2024-01-30"},{"lineNumber":68,"author":{"gitId":"ReganChoy"},"content":" return taskList.size();","lastModifiedDate":"2024-01-30"},{"lineNumber":69,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":70,"author":{"gitId":"ReganChoy"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":71,"author":{"gitId":"ReganChoy"},"content":" public ArrayList\u003cTask\u003e getTaskList() {","lastModifiedDate":"2024-01-30"},{"lineNumber":72,"author":{"gitId":"ReganChoy"},"content":" return this.taskList;","lastModifiedDate":"2024-01-30"},{"lineNumber":73,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":74,"author":{"gitId":"ReganChoy"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":75,"author":{"gitId":"ReganChoy"},"content":" public Task getTask(int index) {","lastModifiedDate":"2024-01-30"},{"lineNumber":76,"author":{"gitId":"ReganChoy"},"content":" return taskList.get(index);","lastModifiedDate":"2024-01-30"},{"lineNumber":77,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":78,"author":{"gitId":"ReganChoy"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"ReganChoy":78}},{"path":"src/main/java/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ReganChoy"},"content":"public class ToDo extends Task {","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"ReganChoy"},"content":" public ToDo(String Task, String taskType) {","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"ReganChoy"},"content":" super(Task,taskType);","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"ReganChoy"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"ReganChoy"},"content":" public String announcement() {","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"ReganChoy"},"content":" return \"New ToDo created!\";","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"ReganChoy"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"ReganChoy"},"content":" public String toString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"ReganChoy"},"content":" return this.getTaskType() + this.getStatus() + \" \" + this.getTask();","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"ReganChoy"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"ReganChoy"},"content":" public String saveString() {","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"ReganChoy"},"content":" return this.getTaskTypeSingle() + \"/\" + this.getStatusBinary() + \"/\" + this.getTask();","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"ReganChoy"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"ReganChoy":17}},{"path":"src/main/java/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ReganChoy"},"content":"public class Ui {","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"ReganChoy"},"content":" private String name \u003d \"XVX-016 Aerial\";","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"ReganChoy"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"ReganChoy"},"content":" public Ui () {","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"ReganChoy"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"ReganChoy"},"content":" public void greeting() {","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"ReganChoy"},"content":" System.out.println(\"\\tHELLO, Nice to meet you. I am \" + this.name + \"!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"ReganChoy"},"content":" System.out.println(\"\\tWhat are we doing today?\");","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"ReganChoy"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"ReganChoy"},"content":" public void bye() {","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"ReganChoy"},"content":" System.out.println(\"\\tSee you next time! ♥( ˆ⌣ ˆԅ)\");","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"ReganChoy"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"ReganChoy":15}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"ReganChoy"},"content":"todo cake","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"ReganChoy"},"content":"deadline cake /3pm","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"ReganChoy"},"content":"event cake /3pm /4pm","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"ReganChoy"},"content":"list","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"ReganChoy"},"content":"bye","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"ReganChoy":5}}] diff --git a/ReganChoy_ip_master/commits.json b/ReganChoy_ip_master/commits.json index b861b73a..16044b97 100644 --- a/ReganChoy_ip_master/commits.json +++ b/ReganChoy_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"ReganChoy":[{"date":"2024-01-22","commitResults":[{"hash":"ae7f5f60da2dcd769650ec70990135eed9d78d07","isMergeCommit":false,"messageTitle":"Added Name, Greeting and Bye","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":29,"deletions":0}}},{"hash":"da80f928a34b3731a8c6233efae234dcce8154c3","isMergeCommit":false,"messageTitle":"Added Echo","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":42,"deletions":18}}}]},{"date":"2024-01-23","commitResults":[{"hash":"b66390adde8b558573da6afa41a62eaf31d6d36a","isMergeCommit":false,"messageTitle":"Added: List and Add methods","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":35,"deletions":2}}},{"hash":"d6d838ca0eeff5bf5f9d138fc5689802a9313665","isMergeCommit":false,"messageTitle":"Added: Task class, Mark and Unmark methods","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":60,"deletions":4}}},{"hash":"2ad497483e7d0d5a1e18dda7b577658c0605e3bd","isMergeCommit":false,"messageTitle":"Added: Subclassses of Task (ToDo, Event, Deadline)","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":118,"deletions":10}}},{"hash":"bce02ca242a9d93fd2beec937f27137fb965f27d","isMergeCommit":false,"messageTitle":"Edited: input.txt and Expected.txt","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":5,"deletions":0},"java":{"insertions":8,"deletions":5}}},{"hash":"ebae447530469d79b29db174375a5d9afa029933","isMergeCommit":false,"messageTitle":"Added: Exception Handling for Methods","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":68,"deletions":18}}},{"hash":"5118c1601d3eb1ff7030034f021f9110e2c13be1","isMergeCommit":false,"messageTitle":"Added: Delete method","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":21,"deletions":6}}}]}]},"authorFileTypeContributionMap":{"ReganChoy":{"java":323,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":0,"txt":5}},"authorContributionVariance":{"ReganChoy":19440.16},"authorDisplayNameMap":{"ReganChoy":"CS2103T-W12-1 REGA..N FU"}} +{"authorDailyContributionsMap":{"ReganChoy":[{"date":"2024-01-22","commitResults":[{"hash":"ae7f5f60da2dcd769650ec70990135eed9d78d07","isMergeCommit":false,"messageTitle":"Added Name, Greeting and Bye","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":29,"deletions":0}}},{"hash":"da80f928a34b3731a8c6233efae234dcce8154c3","isMergeCommit":false,"messageTitle":"Added Echo","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":42,"deletions":18}}}]},{"date":"2024-01-23","commitResults":[{"hash":"b66390adde8b558573da6afa41a62eaf31d6d36a","isMergeCommit":false,"messageTitle":"Added: List and Add methods","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":35,"deletions":2}}},{"hash":"d6d838ca0eeff5bf5f9d138fc5689802a9313665","isMergeCommit":false,"messageTitle":"Added: Task class, Mark and Unmark methods","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":60,"deletions":4}}},{"hash":"2ad497483e7d0d5a1e18dda7b577658c0605e3bd","isMergeCommit":false,"messageTitle":"Added: Subclassses of Task (ToDo, Event, Deadline)","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":118,"deletions":10}}},{"hash":"bce02ca242a9d93fd2beec937f27137fb965f27d","isMergeCommit":false,"messageTitle":"Edited: input.txt and Expected.txt","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":5,"deletions":0},"java":{"insertions":8,"deletions":5}}},{"hash":"ebae447530469d79b29db174375a5d9afa029933","isMergeCommit":false,"messageTitle":"Added: Exception Handling for Methods","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":68,"deletions":18}}},{"hash":"5118c1601d3eb1ff7030034f021f9110e2c13be1","isMergeCommit":false,"messageTitle":"Added: Delete method","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":21,"deletions":6}}}]},{"date":"2024-01-30","commitResults":[{"hash":"1d50728d820235faa6835b57e868b90b6cb843e0","isMergeCommit":false,"messageTitle":"Implemented Load and Save functions Re-organized code into different classes from Duke class","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"java":{"insertions":234,"deletions":169}}}]}]},"authorFileTypeContributionMap":{"ReganChoy":{"java":389,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":0,"txt":5}},"authorContributionVariance":{"ReganChoy":19953.166},"authorDisplayNameMap":{"ReganChoy":"CS2103T-W12-1 REGA..N FU"}} diff --git a/Rikko1204_ip_master/authorship.json b/Rikko1204_ip_master/authorship.json index d239ce23..bb41e30c 100644 --- a/Rikko1204_ip_master/authorship.json +++ b/Rikko1204_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"src/main/java/Arona.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Rikko1204"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"Rikko1204"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-21"},{"lineNumber":3,"author":{"gitId":"Rikko1204"},"content":"public class Arona {","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"Rikko1204"},"content":" private String name;","lastModifiedDate":"2024-01-21"},{"lineNumber":5,"author":{"gitId":"Rikko1204"},"content":" private ArrayList\u003cTask\u003e tasks \u003d new ArrayList\u003cTask\u003e();","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":7,"author":{"gitId":"Rikko1204"},"content":" public Arona(String name) {","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"Rikko1204"},"content":" this.name \u003d name;","lastModifiedDate":"2024-01-21"},{"lineNumber":9,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":10,"author":{"gitId":"Rikko1204"},"content":" public void greetings() {","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"Rikko1204"},"content":" String logo \u003d\" _____ \\n\" +","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"Rikko1204"},"content":"/* */ \" / _ \\\\_______ ____ _____ _____ \\n\" +","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"Rikko1204"},"content":"/* */ \" / /_\\\\ \\\\_ __ \\\\/ _ \\\\ / \\\\___ \\\\ \\n\" +","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"Rikko1204"},"content":" /* */ \" / | \\\\ | \\\\_ ( \u003c_\u003e ) | \\\\/ __ \\\\_ \\n\" +","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"Rikko1204"},"content":"/* */ \" \\\\____|__ /__| \\\\____/|___|_ (____ / \\n\" +","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"Rikko1204"},"content":"/* */ \" \\\\/ \\\\/ \\\\/ \\n\";","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"Rikko1204"},"content":" System.out.println(\"Hello from \\n\" + logo);","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"Rikko1204"},"content":"// String reply \u003d \"Hi! I\u0027m \" + this.name + \". What can I do for you?\";","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"Rikko1204"},"content":" String reply \u003d \"こんにちは先生、私は\" + this.name + \"アロナです. \\n\"","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"Rikko1204"},"content":" + \"どういうご用件ですか? \\n\"","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"Rikko1204"},"content":" + \"ここで先生のスケジュールが決まります!\";","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"Rikko1204"},"content":" System.out.println(reply);","lastModifiedDate":"2024-01-22"},{"lineNumber":23,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":24,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":25,"author":{"gitId":"Rikko1204"},"content":" public void quitApplication() {","lastModifiedDate":"2024-01-22"},{"lineNumber":26,"author":{"gitId":"Rikko1204"},"content":" String reply \u003d \"Bye. Hope to see you again soon!\";","lastModifiedDate":"2024-01-21"},{"lineNumber":27,"author":{"gitId":"Rikko1204"},"content":" System.out.println(reply);","lastModifiedDate":"2024-01-22"},{"lineNumber":28,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":29,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":30,"author":{"gitId":"Rikko1204"},"content":" public void addTask(String input) throws TaskException {","lastModifiedDate":"2024-01-23"},{"lineNumber":31,"author":{"gitId":"Rikko1204"},"content":" String[] splitInput \u003d input.split(\" \", 2);","lastModifiedDate":"2024-01-22"},{"lineNumber":32,"author":{"gitId":"Rikko1204"},"content":" String type \u003d splitInput[0];","lastModifiedDate":"2024-01-22"},{"lineNumber":33,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":34,"author":{"gitId":"Rikko1204"},"content":" if (splitInput.length \u003d\u003d 0) {","lastModifiedDate":"2024-01-23"},{"lineNumber":35,"author":{"gitId":"Rikko1204"},"content":" throw new TaskException(\"OOPS!!! Please enter some tasks!\");","lastModifiedDate":"2024-01-23"},{"lineNumber":36,"author":{"gitId":"Rikko1204"},"content":" } else if (!containsEnumValue(TaskEnum.class, type)) {","lastModifiedDate":"2024-01-23"},{"lineNumber":37,"author":{"gitId":"Rikko1204"},"content":" throw new TaskException(\"OOPS!!! I\u0027m sorry, but I don\u0027t know what that means.\");","lastModifiedDate":"2024-01-23"},{"lineNumber":38,"author":{"gitId":"Rikko1204"},"content":" } else if (splitInput.length \u003d\u003d 1) {","lastModifiedDate":"2024-01-23"},{"lineNumber":39,"author":{"gitId":"Rikko1204"},"content":" throw new TaskException(\"OOPS!!! Please provide some task description\");","lastModifiedDate":"2024-01-23"},{"lineNumber":40,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":41,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":42,"author":{"gitId":"Rikko1204"},"content":" String[] info \u003d splitInput[1].split(\"/\");","lastModifiedDate":"2024-01-22"},{"lineNumber":43,"author":{"gitId":"Rikko1204"},"content":" String description \u003d info[0];","lastModifiedDate":"2024-01-22"},{"lineNumber":44,"author":{"gitId":"Rikko1204"},"content":" switch(type) {","lastModifiedDate":"2024-01-22"},{"lineNumber":45,"author":{"gitId":"Rikko1204"},"content":" case \"todo\":","lastModifiedDate":"2024-01-22"},{"lineNumber":46,"author":{"gitId":"Rikko1204"},"content":" tasks.add(new Todo(description));","lastModifiedDate":"2024-01-22"},{"lineNumber":47,"author":{"gitId":"Rikko1204"},"content":" break;","lastModifiedDate":"2024-01-22"},{"lineNumber":48,"author":{"gitId":"Rikko1204"},"content":" case \"deadline\":","lastModifiedDate":"2024-01-22"},{"lineNumber":49,"author":{"gitId":"Rikko1204"},"content":" if (info.length \u003c 2) throw new TaskException(\"OOPS!!! Please provide a deadline.\");","lastModifiedDate":"2024-01-23"},{"lineNumber":50,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":51,"author":{"gitId":"Rikko1204"},"content":" String by \u003d info[1].replaceAll(\"by\", \"\").trim();","lastModifiedDate":"2024-01-22"},{"lineNumber":52,"author":{"gitId":"Rikko1204"},"content":" tasks.add(new Deadline(description, by));","lastModifiedDate":"2024-01-22"},{"lineNumber":53,"author":{"gitId":"Rikko1204"},"content":" break;","lastModifiedDate":"2024-01-22"},{"lineNumber":54,"author":{"gitId":"Rikko1204"},"content":" case \"event\":","lastModifiedDate":"2024-01-22"},{"lineNumber":55,"author":{"gitId":"Rikko1204"},"content":" if (info.length \u003c 3) throw new TaskException(\"OOPS!!! Please provide an event begin and deadline.\");","lastModifiedDate":"2024-01-23"},{"lineNumber":56,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":57,"author":{"gitId":"Rikko1204"},"content":" String from \u003d info[1].replaceAll(\"from\", \"\").trim();","lastModifiedDate":"2024-01-22"},{"lineNumber":58,"author":{"gitId":"Rikko1204"},"content":" by \u003d info[2].replaceAll(\"to\", \"\").trim();","lastModifiedDate":"2024-01-22"},{"lineNumber":59,"author":{"gitId":"Rikko1204"},"content":" tasks.add(new Event(description, from, by));","lastModifiedDate":"2024-01-22"},{"lineNumber":60,"author":{"gitId":"Rikko1204"},"content":" break;","lastModifiedDate":"2024-01-22"},{"lineNumber":61,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":62,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":63,"author":{"gitId":"Rikko1204"},"content":" System.out.println(\"Got it. I\u0027ve added this task: \");","lastModifiedDate":"2024-01-22"},{"lineNumber":64,"author":{"gitId":"Rikko1204"},"content":" System.out.println(tasks.get(tasks.size() - 1).toString());","lastModifiedDate":"2024-01-22"},{"lineNumber":65,"author":{"gitId":"Rikko1204"},"content":" System.out.println(\"Now you have \" + tasks.size() + \" tasks in the list\");","lastModifiedDate":"2024-01-22"},{"lineNumber":66,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":67,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":68,"author":{"gitId":"Rikko1204"},"content":" public void DeleteTask(int taskNum) throws IndexOutOfBoundsException {","lastModifiedDate":"2024-01-23"},{"lineNumber":69,"author":{"gitId":"Rikko1204"},"content":" if (taskNum \u003e tasks.size()) throw new IndexOutOfBoundsException(\"OOPS!!! The task doesn\u0027t exist!\");","lastModifiedDate":"2024-01-23"},{"lineNumber":70,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":71,"author":{"gitId":"Rikko1204"},"content":" int index \u003d taskNum - 1;","lastModifiedDate":"2024-01-23"},{"lineNumber":72,"author":{"gitId":"Rikko1204"},"content":" Task task \u003d tasks.get(index);","lastModifiedDate":"2024-01-23"},{"lineNumber":73,"author":{"gitId":"Rikko1204"},"content":" tasks.remove(index);","lastModifiedDate":"2024-01-23"},{"lineNumber":74,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":75,"author":{"gitId":"Rikko1204"},"content":" System.out.println(\"Noted. I have removed this task: \");","lastModifiedDate":"2024-01-23"},{"lineNumber":76,"author":{"gitId":"Rikko1204"},"content":" System.out.println(task.toString());","lastModifiedDate":"2024-01-23"},{"lineNumber":77,"author":{"gitId":"Rikko1204"},"content":" System.out.println(\"Now you have \" + tasks.size() + \" tasks in the list\");","lastModifiedDate":"2024-01-23"},{"lineNumber":78,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":79,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":80,"author":{"gitId":"Rikko1204"},"content":" public void printTasks() {","lastModifiedDate":"2024-01-22"},{"lineNumber":81,"author":{"gitId":"Rikko1204"},"content":" System.out.println(\"Here are the tasks in your list:\");","lastModifiedDate":"2024-01-22"},{"lineNumber":82,"author":{"gitId":"Rikko1204"},"content":" for (int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2024-01-22"},{"lineNumber":83,"author":{"gitId":"Rikko1204"},"content":" if (tasks.get(i) \u003d\u003d null) break;","lastModifiedDate":"2024-01-22"},{"lineNumber":84,"author":{"gitId":"Rikko1204"},"content":" Task task \u003d tasks.get(i);","lastModifiedDate":"2024-01-22"},{"lineNumber":85,"author":{"gitId":"Rikko1204"},"content":" System.out.println(i + 1 + \".\" + task.toString());","lastModifiedDate":"2024-01-22"},{"lineNumber":86,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":87,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":88,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":89,"author":{"gitId":"Rikko1204"},"content":" public void changeTaskStatus(int taskNum, boolean status) throws IndexOutOfBoundsException {","lastModifiedDate":"2024-01-23"},{"lineNumber":90,"author":{"gitId":"Rikko1204"},"content":" if (taskNum \u003e tasks.size()) throw new IndexOutOfBoundsException(\"OOPS!!! The task doesn\u0027t exist!\");","lastModifiedDate":"2024-01-23"},{"lineNumber":91,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":92,"author":{"gitId":"Rikko1204"},"content":" int index \u003d taskNum - 1;","lastModifiedDate":"2024-01-22"},{"lineNumber":93,"author":{"gitId":"Rikko1204"},"content":" Task task \u003d tasks.get(index);","lastModifiedDate":"2024-01-22"},{"lineNumber":94,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":95,"author":{"gitId":"Rikko1204"},"content":" if (task.getStatus() \u003d\u003d status) {","lastModifiedDate":"2024-01-23"},{"lineNumber":96,"author":{"gitId":"Rikko1204"},"content":" System.out.println(\"The task has already been marked as \" + (status ? \"done.\" : \"not done.\"));","lastModifiedDate":"2024-01-23"},{"lineNumber":97,"author":{"gitId":"Rikko1204"},"content":" return;","lastModifiedDate":"2024-01-23"},{"lineNumber":98,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":99,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":100,"author":{"gitId":"Rikko1204"},"content":" task.setStatusIcon(status);","lastModifiedDate":"2024-01-22"},{"lineNumber":101,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":102,"author":{"gitId":"Rikko1204"},"content":" if (status) {","lastModifiedDate":"2024-01-22"},{"lineNumber":103,"author":{"gitId":"Rikko1204"},"content":" System.out.println(\"Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2024-01-22"},{"lineNumber":104,"author":{"gitId":"Rikko1204"},"content":" } else {","lastModifiedDate":"2024-01-22"},{"lineNumber":105,"author":{"gitId":"Rikko1204"},"content":" System.out.println(\"OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2024-01-22"},{"lineNumber":106,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":107,"author":{"gitId":"Rikko1204"},"content":" System.out.println(task.toString());","lastModifiedDate":"2024-01-29"},{"lineNumber":108,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":109,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":110,"author":{"gitId":"Rikko1204"},"content":" public static void main(String[] args) throws AronaException {","lastModifiedDate":"2024-01-29"},{"lineNumber":111,"author":{"gitId":"Rikko1204"},"content":" Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-21"},{"lineNumber":112,"author":{"gitId":"Rikko1204"},"content":" Arona arona \u003d new Arona(\"Arona\");","lastModifiedDate":"2024-01-29"},{"lineNumber":113,"author":{"gitId":"Rikko1204"},"content":" arona.greetings();","lastModifiedDate":"2024-01-29"},{"lineNumber":114,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":115,"author":{"gitId":"Rikko1204"},"content":" while (true) {","lastModifiedDate":"2024-01-21"},{"lineNumber":116,"author":{"gitId":"Rikko1204"},"content":" try {","lastModifiedDate":"2024-01-23"},{"lineNumber":117,"author":{"gitId":"Rikko1204"},"content":" String input \u003d scanner.nextLine();","lastModifiedDate":"2024-01-22"},{"lineNumber":118,"author":{"gitId":"Rikko1204"},"content":" String command \u003d input.split(\" \", 0)[0];","lastModifiedDate":"2024-01-22"},{"lineNumber":119,"author":{"gitId":"Rikko1204"},"content":" switch(command) {","lastModifiedDate":"2024-01-22"},{"lineNumber":120,"author":{"gitId":"Rikko1204"},"content":" case \"bye\":","lastModifiedDate":"2024-01-22"},{"lineNumber":121,"author":{"gitId":"Rikko1204"},"content":" arona.quitApplication();","lastModifiedDate":"2024-01-29"},{"lineNumber":122,"author":{"gitId":"Rikko1204"},"content":" return;","lastModifiedDate":"2024-01-22"},{"lineNumber":123,"author":{"gitId":"Rikko1204"},"content":" case \"list\":","lastModifiedDate":"2024-01-22"},{"lineNumber":124,"author":{"gitId":"Rikko1204"},"content":" arona.printTasks();","lastModifiedDate":"2024-01-29"},{"lineNumber":125,"author":{"gitId":"Rikko1204"},"content":" break;","lastModifiedDate":"2024-01-22"},{"lineNumber":126,"author":{"gitId":"Rikko1204"},"content":" case \"mark\":","lastModifiedDate":"2024-01-22"},{"lineNumber":127,"author":{"gitId":"Rikko1204"},"content":" if (input.split(\" \", 0).length \u003d\u003d 1) throw new AronaException(\"OOPS!!! Please provide task number.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":128,"author":{"gitId":"Rikko1204"},"content":" int taskNum \u003d Integer.parseInt(input.split(\" \", 0)[1]);","lastModifiedDate":"2024-01-22"},{"lineNumber":129,"author":{"gitId":"Rikko1204"},"content":" arona.changeTaskStatus(taskNum, true);","lastModifiedDate":"2024-01-29"},{"lineNumber":130,"author":{"gitId":"Rikko1204"},"content":" break;","lastModifiedDate":"2024-01-22"},{"lineNumber":131,"author":{"gitId":"Rikko1204"},"content":" case \"unmark\":","lastModifiedDate":"2024-01-22"},{"lineNumber":132,"author":{"gitId":"Rikko1204"},"content":" if (input.split(\" \", 0).length \u003d\u003d 1) throw new AronaException(\"OOPS!!! Please provide task number.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":133,"author":{"gitId":"Rikko1204"},"content":" taskNum \u003d Integer.parseInt(input.split(\" \", 0)[1]);","lastModifiedDate":"2024-01-22"},{"lineNumber":134,"author":{"gitId":"Rikko1204"},"content":" arona.changeTaskStatus(taskNum, false);","lastModifiedDate":"2024-01-29"},{"lineNumber":135,"author":{"gitId":"Rikko1204"},"content":" break;","lastModifiedDate":"2024-01-22"},{"lineNumber":136,"author":{"gitId":"Rikko1204"},"content":" case \"delete\":","lastModifiedDate":"2024-01-23"},{"lineNumber":137,"author":{"gitId":"Rikko1204"},"content":" if (input.split(\" \", 0).length \u003d\u003d 1) throw new AronaException(\"OOPS!!! Please provide task number.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":138,"author":{"gitId":"Rikko1204"},"content":" taskNum \u003d Integer.parseInt(input.split(\" \", 0)[1]);","lastModifiedDate":"2024-01-23"},{"lineNumber":139,"author":{"gitId":"Rikko1204"},"content":" arona.DeleteTask(taskNum);","lastModifiedDate":"2024-01-29"},{"lineNumber":140,"author":{"gitId":"Rikko1204"},"content":" break;","lastModifiedDate":"2024-01-23"},{"lineNumber":141,"author":{"gitId":"Rikko1204"},"content":" default:","lastModifiedDate":"2024-01-22"},{"lineNumber":142,"author":{"gitId":"Rikko1204"},"content":" arona.addTask(input);","lastModifiedDate":"2024-01-29"},{"lineNumber":143,"author":{"gitId":"Rikko1204"},"content":" break;","lastModifiedDate":"2024-01-22"},{"lineNumber":144,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":145,"author":{"gitId":"Rikko1204"},"content":" } catch (TaskException e) {","lastModifiedDate":"2024-01-23"},{"lineNumber":146,"author":{"gitId":"Rikko1204"},"content":" System.err.println(e.getMessage());","lastModifiedDate":"2024-01-23"},{"lineNumber":147,"author":{"gitId":"Rikko1204"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-23"},{"lineNumber":148,"author":{"gitId":"Rikko1204"},"content":" System.err.println(e.getMessage());","lastModifiedDate":"2024-01-23"},{"lineNumber":149,"author":{"gitId":"Rikko1204"},"content":" } catch (AronaException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":150,"author":{"gitId":"Rikko1204"},"content":" System.err.println(e.getMessage());","lastModifiedDate":"2024-01-23"},{"lineNumber":151,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":152,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":153,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":154,"author":{"gitId":"Rikko1204"},"content":" private static \u003cE extends Enum\u003cE\u003e\u003e boolean containsEnumValue(Class\u003cE\u003e enumClass, String value) {","lastModifiedDate":"2024-01-23"},{"lineNumber":155,"author":{"gitId":"Rikko1204"},"content":" for (Enum\u003cE\u003e enumConstant : enumClass.getEnumConstants()) {","lastModifiedDate":"2024-01-23"},{"lineNumber":156,"author":{"gitId":"Rikko1204"},"content":" if (enumConstant.name().equalsIgnoreCase(value)) {","lastModifiedDate":"2024-01-23"},{"lineNumber":157,"author":{"gitId":"Rikko1204"},"content":" return true;","lastModifiedDate":"2024-01-23"},{"lineNumber":158,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":159,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":160,"author":{"gitId":"Rikko1204"},"content":" return false;","lastModifiedDate":"2024-01-23"},{"lineNumber":161,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":162,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"Rikko1204":160,"-":2}},{"path":"src/main/java/AronaException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Rikko1204"},"content":"public class AronaException extends Exception {","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"Rikko1204"},"content":" public AronaException(String string) {","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"Rikko1204"},"content":" super(string);","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"Rikko1204"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"Rikko1204":5}},{"path":"src/main/java/CommandEnum.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Rikko1204"},"content":"public enum CommandEnum {","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"Rikko1204"},"content":" BYE,","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"Rikko1204"},"content":" LIST,","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"Rikko1204"},"content":" MARK,","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"Rikko1204"},"content":" UNMARK","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"Rikko1204"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"Rikko1204":6}},{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Rikko1204"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"Rikko1204"},"content":" protected String by;","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"Rikko1204"},"content":" public Deadline(String description, String by) {","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"Rikko1204"},"content":" super(description);","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"Rikko1204"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"Rikko1204"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"Rikko1204"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"Rikko1204"},"content":" return \"[D]\" + super.toString() + \"(by: \" + this.by + \")\";","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"Rikko1204"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"Rikko1204":12}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Rikko1204"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"Rikko1204"},"content":" protected String from;","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"Rikko1204"},"content":" protected String by;","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"Rikko1204"},"content":" public Event(String description, String from, String by) {","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"Rikko1204"},"content":" super(description);","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"Rikko1204"},"content":" this.from \u003d from;","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"Rikko1204"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"Rikko1204"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"Rikko1204"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"Rikko1204"},"content":" return \"[E]\" + super.toString() + \"(from: \" + this.from + \" to: \" + this.by + \")\";","lastModifiedDate":"2024-01-22"},{"lineNumber":13,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":14,"author":{"gitId":"Rikko1204"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"Rikko1204":14}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Rikko1204"},"content":"public class Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"Rikko1204"},"content":" protected String description;","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"Rikko1204"},"content":" protected boolean isDone;","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"Rikko1204"},"content":" public Task(String description) {","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"Rikko1204"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"Rikko1204"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"Rikko1204"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"Rikko1204"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"Rikko1204"},"content":" return \"[\" + this.getStatusIcon() + \"] \" + this.description;","lastModifiedDate":"2024-01-22"},{"lineNumber":13,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":14,"author":{"gitId":"Rikko1204"},"content":" public String getDescription() {","lastModifiedDate":"2024-01-22"},{"lineNumber":15,"author":{"gitId":"Rikko1204"},"content":" return description;","lastModifiedDate":"2024-01-22"},{"lineNumber":16,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":17,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":18,"author":{"gitId":"Rikko1204"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-01-22"},{"lineNumber":19,"author":{"gitId":"Rikko1204"},"content":" return (isDone ? \"X\" : \" \");","lastModifiedDate":"2024-01-22"},{"lineNumber":20,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":21,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":22,"author":{"gitId":"Rikko1204"},"content":" public boolean getStatus() {","lastModifiedDate":"2024-01-23"},{"lineNumber":23,"author":{"gitId":"Rikko1204"},"content":" return isDone;","lastModifiedDate":"2024-01-23"},{"lineNumber":24,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":25,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":26,"author":{"gitId":"Rikko1204"},"content":" public void setStatusIcon(boolean status) {","lastModifiedDate":"2024-01-22"},{"lineNumber":27,"author":{"gitId":"Rikko1204"},"content":" this.isDone \u003d status;","lastModifiedDate":"2024-01-22"},{"lineNumber":28,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":29,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":30,"author":{"gitId":"Rikko1204"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"Rikko1204":30}},{"path":"src/main/java/TaskEnum.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Rikko1204"},"content":"public enum TaskEnum {","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"Rikko1204"},"content":" TODO,","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"Rikko1204"},"content":" DEADLINE,","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"Rikko1204"},"content":" EVENT","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"Rikko1204"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"Rikko1204":5}},{"path":"src/main/java/TaskException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Rikko1204"},"content":"public class TaskException extends Exception {","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"Rikko1204"},"content":" public TaskException(String string) {","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"Rikko1204"},"content":" super(string);","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"Rikko1204"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"Rikko1204":5}},{"path":"src/main/java/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Rikko1204"},"content":"public class Todo extends Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"Rikko1204"},"content":" public Todo(String description) {","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"Rikko1204"},"content":" super(description);","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"Rikko1204"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"Rikko1204"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"Rikko1204"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"Rikko1204"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"Rikko1204":10}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"Rikko1204"},"content":"todo food","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"Rikko1204"},"content":"bye","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"Rikko1204":2}},{"path":"text-ui-test/runtest.bat","fileType":"bat","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@ECHO OFF","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"REM create bin directory if it doesn\u0027t exist","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"if not exist ..\\bin mkdir ..\\bin","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"REM delete output from previous run","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"if exist ACTUAL.TXT del ACTUAL.TXT","lastModifiedDate":"2020-08-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"Rikko1204"},"content":"@REM REM compile the code into the bin folder","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"Rikko1204"},"content":"@REM javac -cp ..\\src\\main\\java -Xlint:none -d ..\\bin ..\\src\\main\\java\\Duke.java","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"Rikko1204"},"content":"@REM IF ERRORLEVEL 1 (","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"Rikko1204"},"content":"@REM echo ********** BUILD FAILURE **********","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"Rikko1204"},"content":"@REM exit /b 1","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"Rikko1204"},"content":"@REM )","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"Rikko1204"},"content":"@REM REM no error here, errorlevel \u003d\u003d 0","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"REM run the program, feed commands from input.txt file and redirect the output to the ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"Rikko1204"},"content":"java -classpath \"..\\out\\production\\Personal Project\" Arona \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"REM compare the output to the expected output","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"FC ACTUAL.TXT EXPECTED.TXT","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"Rikko1204":8,"-":13}}] +[{"path":"src/data/tasklist.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"Rikko1204"},"content":"T | 1 | read book","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Rikko1204"},"content":"D | 0 | return book | June 6th","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"Rikko1204"},"content":"E | 0 | project meeting | Aug 6th | 2-4pm","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"Rikko1204"},"content":"T | 1 | join sports club","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"Rikko1204"},"content":"T | 0 | food","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"Rikko1204":5}},{"path":"src/main/java/Arona.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Rikko1204"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"Rikko1204"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-21"},{"lineNumber":3,"author":{"gitId":"Rikko1204"},"content":"import java.io.File;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"Rikko1204"},"content":"import java.io.FileReader;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"Rikko1204"},"content":"import java.io.BufferedReader;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"Rikko1204"},"content":"import java.io.BufferedWriter;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"Rikko1204"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"Rikko1204"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"Rikko1204"},"content":"import java.io.OutputStream;","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"Rikko1204"},"content":"import java.io.PrintStream;","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"Rikko1204"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"Rikko1204"},"content":"public class Arona {","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"Rikko1204"},"content":" private String name;","lastModifiedDate":"2024-01-21"},{"lineNumber":15,"author":{"gitId":"Rikko1204"},"content":" private ArrayList\u003cTask\u003e tasks \u003d new ArrayList\u003cTask\u003e();","lastModifiedDate":"2024-01-22"},{"lineNumber":16,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":17,"author":{"gitId":"Rikko1204"},"content":" public Arona(String name) {","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"Rikko1204"},"content":" this.name \u003d name;","lastModifiedDate":"2024-01-21"},{"lineNumber":19,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":20,"author":{"gitId":"Rikko1204"},"content":" public void greetings() {","lastModifiedDate":"2024-01-22"},{"lineNumber":21,"author":{"gitId":"Rikko1204"},"content":" String logo \u003d\" _____ \\n\" +","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"Rikko1204"},"content":"/* */ \" / _ \\\\_______ ____ _____ _____ \\n\" +","lastModifiedDate":"2024-01-24"},{"lineNumber":23,"author":{"gitId":"Rikko1204"},"content":"/* */ \" / /_\\\\ \\\\_ __ \\\\/ _ \\\\ / \\\\___ \\\\ \\n\" +","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"Rikko1204"},"content":" /* */ \" / | \\\\ | \\\\_ ( \u003c_\u003e ) | \\\\/ __ \\\\_ \\n\" +","lastModifiedDate":"2024-01-24"},{"lineNumber":25,"author":{"gitId":"Rikko1204"},"content":"/* */ \" \\\\____|__ /__| \\\\____/|___|_ (____ / \\n\" +","lastModifiedDate":"2024-01-24"},{"lineNumber":26,"author":{"gitId":"Rikko1204"},"content":"/* */ \" \\\\/ \\\\/ \\\\/ \\n\";","lastModifiedDate":"2024-01-24"},{"lineNumber":27,"author":{"gitId":"Rikko1204"},"content":" System.out.println(\"開始中... \\n\" + logo);","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"Rikko1204"},"content":"// String reply \u003d \"Hi! I\u0027m \" + this.name + \". What can I do for you?\";","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"Rikko1204"},"content":" String reply \u003d \"こんにちは先生、私は\" + this.name + \"アロナです. \\n\"","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"Rikko1204"},"content":" + \"どういうご用件ですか? \\n\"","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"Rikko1204"},"content":" + \"ここで先生のスケジュールが決まります\";","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"Rikko1204"},"content":" System.out.println(reply);","lastModifiedDate":"2024-01-22"},{"lineNumber":33,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":34,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":35,"author":{"gitId":"Rikko1204"},"content":" public void quitApplication() {","lastModifiedDate":"2024-01-22"},{"lineNumber":36,"author":{"gitId":"Rikko1204"},"content":" String reply \u003d \"Goodbye sensei! Hope to see you soon!\";","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"Rikko1204"},"content":" System.out.println(reply);","lastModifiedDate":"2024-01-22"},{"lineNumber":38,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":39,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":40,"author":{"gitId":"Rikko1204"},"content":" public void addTask(String input) throws TaskException {","lastModifiedDate":"2024-01-23"},{"lineNumber":41,"author":{"gitId":"Rikko1204"},"content":" String[] splitInput \u003d input.split(\" \", 2);","lastModifiedDate":"2024-01-22"},{"lineNumber":42,"author":{"gitId":"Rikko1204"},"content":" String type \u003d splitInput[0];","lastModifiedDate":"2024-01-22"},{"lineNumber":43,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":44,"author":{"gitId":"Rikko1204"},"content":" if (splitInput.length \u003d\u003d 0) {","lastModifiedDate":"2024-01-23"},{"lineNumber":45,"author":{"gitId":"Rikko1204"},"content":" throw new TaskException(\"Sensei! Please enter some tasks!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"Rikko1204"},"content":" } else if (!containsEnumValue(TaskEnum.class, type)) {","lastModifiedDate":"2024-01-23"},{"lineNumber":47,"author":{"gitId":"Rikko1204"},"content":" throw new TaskException(\"Sensei, Arona does not know what that means!.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"Rikko1204"},"content":" } else if (splitInput.length \u003d\u003d 1) {","lastModifiedDate":"2024-01-23"},{"lineNumber":49,"author":{"gitId":"Rikko1204"},"content":" throw new TaskException(\"Sensei! Please provide some task description!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":51,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":52,"author":{"gitId":"Rikko1204"},"content":" String[] info \u003d splitInput[1].split(\"/\");","lastModifiedDate":"2024-01-22"},{"lineNumber":53,"author":{"gitId":"Rikko1204"},"content":" String description \u003d info[0];","lastModifiedDate":"2024-01-22"},{"lineNumber":54,"author":{"gitId":"Rikko1204"},"content":" switch(type) {","lastModifiedDate":"2024-01-22"},{"lineNumber":55,"author":{"gitId":"Rikko1204"},"content":" case \"todo\":","lastModifiedDate":"2024-01-22"},{"lineNumber":56,"author":{"gitId":"Rikko1204"},"content":" tasks.add(new Todo(description));","lastModifiedDate":"2024-01-22"},{"lineNumber":57,"author":{"gitId":"Rikko1204"},"content":" break;","lastModifiedDate":"2024-01-22"},{"lineNumber":58,"author":{"gitId":"Rikko1204"},"content":" case \"deadline\":","lastModifiedDate":"2024-01-22"},{"lineNumber":59,"author":{"gitId":"Rikko1204"},"content":" if (info.length \u003c 2) throw new TaskException(\"Sensei! Please provide a deadline!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":60,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":61,"author":{"gitId":"Rikko1204"},"content":" String by \u003d info[1].replaceAll(\"by\", \"\").trim();","lastModifiedDate":"2024-01-22"},{"lineNumber":62,"author":{"gitId":"Rikko1204"},"content":" tasks.add(new Deadline(description, by));","lastModifiedDate":"2024-01-22"},{"lineNumber":63,"author":{"gitId":"Rikko1204"},"content":" break;","lastModifiedDate":"2024-01-22"},{"lineNumber":64,"author":{"gitId":"Rikko1204"},"content":" case \"event\":","lastModifiedDate":"2024-01-22"},{"lineNumber":65,"author":{"gitId":"Rikko1204"},"content":" if (info.length \u003c 3) throw new TaskException(\"Sensei! Please provide an event begin and deadline.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":66,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":67,"author":{"gitId":"Rikko1204"},"content":" String from \u003d info[1].replaceAll(\"from\", \"\").trim();","lastModifiedDate":"2024-01-22"},{"lineNumber":68,"author":{"gitId":"Rikko1204"},"content":" by \u003d info[2].replaceAll(\"to\", \"\").trim();","lastModifiedDate":"2024-01-22"},{"lineNumber":69,"author":{"gitId":"Rikko1204"},"content":" tasks.add(new Event(description, from, by));","lastModifiedDate":"2024-01-22"},{"lineNumber":70,"author":{"gitId":"Rikko1204"},"content":" break;","lastModifiedDate":"2024-01-22"},{"lineNumber":71,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":72,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":73,"author":{"gitId":"Rikko1204"},"content":" System.out.println(\"Arona has added this task to sensei\u0027s task list!: \");","lastModifiedDate":"2024-01-30"},{"lineNumber":74,"author":{"gitId":"Rikko1204"},"content":" System.out.println(tasks.get(tasks.size() - 1).toString());","lastModifiedDate":"2024-01-22"},{"lineNumber":75,"author":{"gitId":"Rikko1204"},"content":" System.out.println(\"Arona has counted \" + tasks.size() + \" tasks in the list!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":76,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":77,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":78,"author":{"gitId":"Rikko1204"},"content":" public void DeleteTask(int taskNum) throws IndexOutOfBoundsException {","lastModifiedDate":"2024-01-23"},{"lineNumber":79,"author":{"gitId":"Rikko1204"},"content":" if (taskNum \u003e tasks.size()) throw new IndexOutOfBoundsException(\"Sensei, the task doesn\u0027t exist!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":80,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":81,"author":{"gitId":"Rikko1204"},"content":" int index \u003d taskNum - 1;","lastModifiedDate":"2024-01-23"},{"lineNumber":82,"author":{"gitId":"Rikko1204"},"content":" Task task \u003d tasks.get(index);","lastModifiedDate":"2024-01-23"},{"lineNumber":83,"author":{"gitId":"Rikko1204"},"content":" tasks.remove(index);","lastModifiedDate":"2024-01-23"},{"lineNumber":84,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":85,"author":{"gitId":"Rikko1204"},"content":" System.out.println(\"Arona has removed this task!: \");","lastModifiedDate":"2024-01-30"},{"lineNumber":86,"author":{"gitId":"Rikko1204"},"content":" System.out.println(task.toString());","lastModifiedDate":"2024-01-23"},{"lineNumber":87,"author":{"gitId":"Rikko1204"},"content":" System.out.println(\"Arona has counted \" + tasks.size() + \" tasks in the list!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":88,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":89,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":90,"author":{"gitId":"Rikko1204"},"content":" public void printTasks() {","lastModifiedDate":"2024-01-22"},{"lineNumber":91,"author":{"gitId":"Rikko1204"},"content":" System.out.println(\"Sensei! Here are the tasks in your list:\");","lastModifiedDate":"2024-01-30"},{"lineNumber":92,"author":{"gitId":"Rikko1204"},"content":" for (int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2024-01-22"},{"lineNumber":93,"author":{"gitId":"Rikko1204"},"content":" if (tasks.get(i) \u003d\u003d null) break;","lastModifiedDate":"2024-01-22"},{"lineNumber":94,"author":{"gitId":"Rikko1204"},"content":" Task task \u003d tasks.get(i);","lastModifiedDate":"2024-01-22"},{"lineNumber":95,"author":{"gitId":"Rikko1204"},"content":" System.out.println(i + 1 + \".\" + task.toString());","lastModifiedDate":"2024-01-22"},{"lineNumber":96,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":97,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":98,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":99,"author":{"gitId":"Rikko1204"},"content":" public void changeTaskStatus(int taskNum, boolean status) throws IndexOutOfBoundsException {","lastModifiedDate":"2024-01-23"},{"lineNumber":100,"author":{"gitId":"Rikko1204"},"content":" if (taskNum \u003e tasks.size()) throw new IndexOutOfBoundsException(\"Sensei! The task doesn\u0027t exist!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":101,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":102,"author":{"gitId":"Rikko1204"},"content":" int index \u003d taskNum - 1;","lastModifiedDate":"2024-01-22"},{"lineNumber":103,"author":{"gitId":"Rikko1204"},"content":" Task task \u003d tasks.get(index);","lastModifiedDate":"2024-01-22"},{"lineNumber":104,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":105,"author":{"gitId":"Rikko1204"},"content":" if (task.getStatus() \u003d\u003d status) {","lastModifiedDate":"2024-01-23"},{"lineNumber":106,"author":{"gitId":"Rikko1204"},"content":" System.out.println(\"Sensei, the task has already been marked as \" + (status ? \"done!\" : \"not done!\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":107,"author":{"gitId":"Rikko1204"},"content":" return;","lastModifiedDate":"2024-01-23"},{"lineNumber":108,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":109,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":110,"author":{"gitId":"Rikko1204"},"content":" task.setStatusIcon(status);","lastModifiedDate":"2024-01-22"},{"lineNumber":111,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":112,"author":{"gitId":"Rikko1204"},"content":" if (status) {","lastModifiedDate":"2024-01-22"},{"lineNumber":113,"author":{"gitId":"Rikko1204"},"content":" System.out.println(\"Congratulation, sensei! Arona has marked the task as done!:\");","lastModifiedDate":"2024-01-30"},{"lineNumber":114,"author":{"gitId":"Rikko1204"},"content":" } else {","lastModifiedDate":"2024-01-22"},{"lineNumber":115,"author":{"gitId":"Rikko1204"},"content":" System.out.println(\"I understand, sensei! Arona has marked the task as not done!:\");","lastModifiedDate":"2024-01-30"},{"lineNumber":116,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":117,"author":{"gitId":"Rikko1204"},"content":" System.out.println(task.toString());","lastModifiedDate":"2024-01-30"},{"lineNumber":118,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":119,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":120,"author":{"gitId":"Rikko1204"},"content":" public void readTaskFromFile(String filePath) throws TaskException {","lastModifiedDate":"2024-01-30"},{"lineNumber":121,"author":{"gitId":"Rikko1204"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":122,"author":{"gitId":"Rikko1204"},"content":" File file \u003d new File(filePath);","lastModifiedDate":"2024-01-30"},{"lineNumber":123,"author":{"gitId":"Rikko1204"},"content":" BufferedReader reader \u003d new BufferedReader(new FileReader(file));","lastModifiedDate":"2024-01-30"},{"lineNumber":124,"author":{"gitId":"Rikko1204"},"content":" String line \u003d reader.readLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":125,"author":{"gitId":"Rikko1204"},"content":" int counter \u003d 1;","lastModifiedDate":"2024-01-30"},{"lineNumber":126,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":127,"author":{"gitId":"Rikko1204"},"content":" PrintStream originalOut \u003d System.out;","lastModifiedDate":"2024-01-30"},{"lineNumber":128,"author":{"gitId":"Rikko1204"},"content":" System.setOut(new PrintStream(new OutputStream() {","lastModifiedDate":"2024-01-30"},{"lineNumber":129,"author":{"gitId":"Rikko1204"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":130,"author":{"gitId":"Rikko1204"},"content":" public void write(int b) {","lastModifiedDate":"2024-01-30"},{"lineNumber":131,"author":{"gitId":"Rikko1204"},"content":" // Do nothing","lastModifiedDate":"2024-01-30"},{"lineNumber":132,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":133,"author":{"gitId":"Rikko1204"},"content":" }));","lastModifiedDate":"2024-01-30"},{"lineNumber":134,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":135,"author":{"gitId":"Rikko1204"},"content":" while (line !\u003d null) {","lastModifiedDate":"2024-01-30"},{"lineNumber":136,"author":{"gitId":"Rikko1204"},"content":" String[] splitString \u003d line.split(\"\\\\|\", 0);","lastModifiedDate":"2024-01-30"},{"lineNumber":137,"author":{"gitId":"Rikko1204"},"content":" String taskStatus \u003d splitString[1];","lastModifiedDate":"2024-01-30"},{"lineNumber":138,"author":{"gitId":"Rikko1204"},"content":" String taskInput \u003d line.replaceAll(\"\\\\| 0 \\\\|\", \"\")","lastModifiedDate":"2024-01-30"},{"lineNumber":139,"author":{"gitId":"Rikko1204"},"content":" .replaceAll(\"\\\\| 1 \\\\|\", \"\")","lastModifiedDate":"2024-01-30"},{"lineNumber":140,"author":{"gitId":"Rikko1204"},"content":" .replaceAll(\"\\\\|\", \"/\")","lastModifiedDate":"2024-01-30"},{"lineNumber":141,"author":{"gitId":"Rikko1204"},"content":" .replaceAll(\"T\", \"todo\")","lastModifiedDate":"2024-01-30"},{"lineNumber":142,"author":{"gitId":"Rikko1204"},"content":" .replaceAll(\"D\", \"deadline\")","lastModifiedDate":"2024-01-30"},{"lineNumber":143,"author":{"gitId":"Rikko1204"},"content":" .replaceAll(\"E\", \"event\")","lastModifiedDate":"2024-01-30"},{"lineNumber":144,"author":{"gitId":"Rikko1204"},"content":" .replaceAll(\" \", \" \");","lastModifiedDate":"2024-01-30"},{"lineNumber":145,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":146,"author":{"gitId":"Rikko1204"},"content":" addTask(taskInput);","lastModifiedDate":"2024-01-30"},{"lineNumber":147,"author":{"gitId":"Rikko1204"},"content":" boolean isTaskDone \u003d taskStatus.trim().equals(\"1\") ? true : false;","lastModifiedDate":"2024-01-30"},{"lineNumber":148,"author":{"gitId":"Rikko1204"},"content":" changeTaskStatus(counter, isTaskDone);","lastModifiedDate":"2024-01-30"},{"lineNumber":149,"author":{"gitId":"Rikko1204"},"content":" counter++;","lastModifiedDate":"2024-01-30"},{"lineNumber":150,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":151,"author":{"gitId":"Rikko1204"},"content":" line \u003d reader.readLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":152,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":153,"author":{"gitId":"Rikko1204"},"content":" reader.close();","lastModifiedDate":"2024-01-30"},{"lineNumber":154,"author":{"gitId":"Rikko1204"},"content":" System.setOut(originalOut);","lastModifiedDate":"2024-01-30"},{"lineNumber":155,"author":{"gitId":"Rikko1204"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":156,"author":{"gitId":"Rikko1204"},"content":" System.err.println(\"Oops sensei, Arona cannot find your task file!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":157,"author":{"gitId":"Rikko1204"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":158,"author":{"gitId":"Rikko1204"},"content":" System.err.println(\"Sensei! There were some errors reading tasks from the file: \" + e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":159,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":160,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":161,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":162,"author":{"gitId":"Rikko1204"},"content":" public void saveTaskToFile(String filePath) {","lastModifiedDate":"2024-01-30"},{"lineNumber":163,"author":{"gitId":"Rikko1204"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":164,"author":{"gitId":"Rikko1204"},"content":" File file \u003d new File(filePath);","lastModifiedDate":"2024-01-30"},{"lineNumber":165,"author":{"gitId":"Rikko1204"},"content":" BufferedWriter writer \u003d new BufferedWriter(new FileWriter(file));","lastModifiedDate":"2024-01-30"},{"lineNumber":166,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":167,"author":{"gitId":"Rikko1204"},"content":" for (Task task : tasks) {","lastModifiedDate":"2024-01-30"},{"lineNumber":168,"author":{"gitId":"Rikko1204"},"content":" System.out.println(task.toString());","lastModifiedDate":"2024-01-29"},{"lineNumber":169,"author":{"gitId":"Rikko1204"},"content":" writer.write(taskToString(task));","lastModifiedDate":"2024-01-30"},{"lineNumber":170,"author":{"gitId":"Rikko1204"},"content":" writer.newLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":171,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":172,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":173,"author":{"gitId":"Rikko1204"},"content":" writer.flush();","lastModifiedDate":"2024-01-30"},{"lineNumber":174,"author":{"gitId":"Rikko1204"},"content":" writer.close();","lastModifiedDate":"2024-01-30"},{"lineNumber":175,"author":{"gitId":"Rikko1204"},"content":" } catch (IOException e ) {","lastModifiedDate":"2024-01-30"},{"lineNumber":176,"author":{"gitId":"Rikko1204"},"content":" System.err.println(\"Sensei! There were some errors reading tasks from the file: \" + e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":177,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":178,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":179,"author":{"gitId":"Rikko1204"},"content":" public String taskToString(Task task) {","lastModifiedDate":"2024-01-30"},{"lineNumber":180,"author":{"gitId":"Rikko1204"},"content":" String output \u003d task.toString()","lastModifiedDate":"2024-01-30"},{"lineNumber":181,"author":{"gitId":"Rikko1204"},"content":" .replaceAll(\"\\\\[T]\", \"T\")","lastModifiedDate":"2024-01-30"},{"lineNumber":182,"author":{"gitId":"Rikko1204"},"content":" .replaceAll(\"\\\\[D]\", \"D\")","lastModifiedDate":"2024-01-30"},{"lineNumber":183,"author":{"gitId":"Rikko1204"},"content":" .replaceAll(\"\\\\[E]\", \"E\")","lastModifiedDate":"2024-01-30"},{"lineNumber":184,"author":{"gitId":"Rikko1204"},"content":" .replaceAll(\"\\\\[ ]\", \" \\\\| 0 \\\\|\")","lastModifiedDate":"2024-01-30"},{"lineNumber":185,"author":{"gitId":"Rikko1204"},"content":" .replaceAll(\"\\\\[X]\", \" \\\\| 1 \\\\|\")","lastModifiedDate":"2024-01-30"},{"lineNumber":186,"author":{"gitId":"Rikko1204"},"content":" .replaceAll(\"\\\\(by:\", \"\\\\|\")","lastModifiedDate":"2024-01-30"},{"lineNumber":187,"author":{"gitId":"Rikko1204"},"content":" .replaceAll(\"\\\\)\", \"\")","lastModifiedDate":"2024-01-30"},{"lineNumber":188,"author":{"gitId":"Rikko1204"},"content":" .replaceAll(\"\\\\(from:\", \"\\\\|\")","lastModifiedDate":"2024-01-30"},{"lineNumber":189,"author":{"gitId":"Rikko1204"},"content":" .replaceAll(\"to:\", \"\\\\|\")","lastModifiedDate":"2024-01-30"},{"lineNumber":190,"author":{"gitId":"Rikko1204"},"content":" .replaceAll(\"\\\\)\", \"\");","lastModifiedDate":"2024-01-30"},{"lineNumber":191,"author":{"gitId":"Rikko1204"},"content":" return output;","lastModifiedDate":"2024-01-30"},{"lineNumber":192,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":193,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":194,"author":{"gitId":"Rikko1204"},"content":" public static void main(String[] args) throws TaskException {","lastModifiedDate":"2024-01-30"},{"lineNumber":195,"author":{"gitId":"Rikko1204"},"content":" Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-21"},{"lineNumber":196,"author":{"gitId":"Rikko1204"},"content":" Arona arona \u003d new Arona(\"\");","lastModifiedDate":"2024-01-30"},{"lineNumber":197,"author":{"gitId":"Rikko1204"},"content":" arona.greetings();","lastModifiedDate":"2024-01-29"},{"lineNumber":198,"author":{"gitId":"Rikko1204"},"content":" String filePath \u003d \"./src/data/tasklist.txt\";","lastModifiedDate":"2024-01-30"},{"lineNumber":199,"author":{"gitId":"Rikko1204"},"content":" arona.readTaskFromFile(filePath);","lastModifiedDate":"2024-01-30"},{"lineNumber":200,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":201,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":202,"author":{"gitId":"Rikko1204"},"content":" while (true) {","lastModifiedDate":"2024-01-21"},{"lineNumber":203,"author":{"gitId":"Rikko1204"},"content":" try {","lastModifiedDate":"2024-01-23"},{"lineNumber":204,"author":{"gitId":"Rikko1204"},"content":" String input \u003d scanner.nextLine();","lastModifiedDate":"2024-01-22"},{"lineNumber":205,"author":{"gitId":"Rikko1204"},"content":" String command \u003d input.split(\" \", 0)[0];","lastModifiedDate":"2024-01-22"},{"lineNumber":206,"author":{"gitId":"Rikko1204"},"content":" switch(command) {","lastModifiedDate":"2024-01-22"},{"lineNumber":207,"author":{"gitId":"Rikko1204"},"content":" case \"bye\":","lastModifiedDate":"2024-01-22"},{"lineNumber":208,"author":{"gitId":"Rikko1204"},"content":" arona.quitApplication();","lastModifiedDate":"2024-01-29"},{"lineNumber":209,"author":{"gitId":"Rikko1204"},"content":" return;","lastModifiedDate":"2024-01-22"},{"lineNumber":210,"author":{"gitId":"Rikko1204"},"content":" case \"list\":","lastModifiedDate":"2024-01-22"},{"lineNumber":211,"author":{"gitId":"Rikko1204"},"content":" arona.printTasks();","lastModifiedDate":"2024-01-29"},{"lineNumber":212,"author":{"gitId":"Rikko1204"},"content":" break;","lastModifiedDate":"2024-01-22"},{"lineNumber":213,"author":{"gitId":"Rikko1204"},"content":" case \"mark\":","lastModifiedDate":"2024-01-22"},{"lineNumber":214,"author":{"gitId":"Rikko1204"},"content":" if (input.split(\" \", 0).length \u003d\u003d 1) throw new AronaException(\"Sensei! Please provide a task number!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":215,"author":{"gitId":"Rikko1204"},"content":" int taskNum \u003d Integer.parseInt(input.split(\" \", 0)[1]);","lastModifiedDate":"2024-01-22"},{"lineNumber":216,"author":{"gitId":"Rikko1204"},"content":" arona.changeTaskStatus(taskNum, true);","lastModifiedDate":"2024-01-29"},{"lineNumber":217,"author":{"gitId":"Rikko1204"},"content":" arona.saveTaskToFile(filePath);","lastModifiedDate":"2024-01-30"},{"lineNumber":218,"author":{"gitId":"Rikko1204"},"content":" break;","lastModifiedDate":"2024-01-22"},{"lineNumber":219,"author":{"gitId":"Rikko1204"},"content":" case \"unmark\":","lastModifiedDate":"2024-01-22"},{"lineNumber":220,"author":{"gitId":"Rikko1204"},"content":" if (input.split(\" \", 0).length \u003d\u003d 1) throw new AronaException(\"Sensei! Please provide a task number!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":221,"author":{"gitId":"Rikko1204"},"content":" taskNum \u003d Integer.parseInt(input.split(\" \", 0)[1]);","lastModifiedDate":"2024-01-22"},{"lineNumber":222,"author":{"gitId":"Rikko1204"},"content":" arona.changeTaskStatus(taskNum, false);","lastModifiedDate":"2024-01-29"},{"lineNumber":223,"author":{"gitId":"Rikko1204"},"content":" arona.saveTaskToFile(filePath);","lastModifiedDate":"2024-01-30"},{"lineNumber":224,"author":{"gitId":"Rikko1204"},"content":" break;","lastModifiedDate":"2024-01-22"},{"lineNumber":225,"author":{"gitId":"Rikko1204"},"content":" case \"delete\":","lastModifiedDate":"2024-01-23"},{"lineNumber":226,"author":{"gitId":"Rikko1204"},"content":" if (input.split(\" \", 0).length \u003d\u003d 1) throw new AronaException(\"Sensei! Please provide a task number!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":227,"author":{"gitId":"Rikko1204"},"content":" taskNum \u003d Integer.parseInt(input.split(\" \", 0)[1]);","lastModifiedDate":"2024-01-23"},{"lineNumber":228,"author":{"gitId":"Rikko1204"},"content":" arona.DeleteTask(taskNum);","lastModifiedDate":"2024-01-29"},{"lineNumber":229,"author":{"gitId":"Rikko1204"},"content":" arona.saveTaskToFile(filePath);","lastModifiedDate":"2024-01-30"},{"lineNumber":230,"author":{"gitId":"Rikko1204"},"content":" break;","lastModifiedDate":"2024-01-23"},{"lineNumber":231,"author":{"gitId":"Rikko1204"},"content":" default:","lastModifiedDate":"2024-01-22"},{"lineNumber":232,"author":{"gitId":"Rikko1204"},"content":" arona.addTask(input);","lastModifiedDate":"2024-01-29"},{"lineNumber":233,"author":{"gitId":"Rikko1204"},"content":" arona.saveTaskToFile(filePath);","lastModifiedDate":"2024-01-30"},{"lineNumber":234,"author":{"gitId":"Rikko1204"},"content":" break;","lastModifiedDate":"2024-01-22"},{"lineNumber":235,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":236,"author":{"gitId":"Rikko1204"},"content":" } catch (TaskException e) {","lastModifiedDate":"2024-01-23"},{"lineNumber":237,"author":{"gitId":"Rikko1204"},"content":" System.err.println(e.getMessage());","lastModifiedDate":"2024-01-23"},{"lineNumber":238,"author":{"gitId":"Rikko1204"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-23"},{"lineNumber":239,"author":{"gitId":"Rikko1204"},"content":" System.err.println(e.getMessage());","lastModifiedDate":"2024-01-23"},{"lineNumber":240,"author":{"gitId":"Rikko1204"},"content":" } catch (AronaException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":241,"author":{"gitId":"Rikko1204"},"content":" System.err.println(e.getMessage());","lastModifiedDate":"2024-01-23"},{"lineNumber":242,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":243,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":244,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":245,"author":{"gitId":"Rikko1204"},"content":" private static \u003cE extends Enum\u003cE\u003e\u003e boolean containsEnumValue(Class\u003cE\u003e enumClass, String value) {","lastModifiedDate":"2024-01-23"},{"lineNumber":246,"author":{"gitId":"Rikko1204"},"content":" for (Enum\u003cE\u003e enumConstant : enumClass.getEnumConstants()) {","lastModifiedDate":"2024-01-23"},{"lineNumber":247,"author":{"gitId":"Rikko1204"},"content":" if (enumConstant.name().equalsIgnoreCase(value)) {","lastModifiedDate":"2024-01-23"},{"lineNumber":248,"author":{"gitId":"Rikko1204"},"content":" return true;","lastModifiedDate":"2024-01-23"},{"lineNumber":249,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":250,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":251,"author":{"gitId":"Rikko1204"},"content":" return false;","lastModifiedDate":"2024-01-23"},{"lineNumber":252,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":253,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"Rikko1204":251,"-":2}},{"path":"src/main/java/AronaException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Rikko1204"},"content":"public class AronaException extends Exception {","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"Rikko1204"},"content":" public AronaException(String string) {","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"Rikko1204"},"content":" super(string);","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"Rikko1204"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"Rikko1204":5}},{"path":"src/main/java/CommandEnum.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Rikko1204"},"content":"public enum CommandEnum {","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"Rikko1204"},"content":" BYE,","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"Rikko1204"},"content":" LIST,","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"Rikko1204"},"content":" MARK,","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"Rikko1204"},"content":" UNMARK","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"Rikko1204"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"Rikko1204":6}},{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Rikko1204"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"Rikko1204"},"content":" protected String by;","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"Rikko1204"},"content":" public Deadline(String description, String by) {","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"Rikko1204"},"content":" super(description);","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"Rikko1204"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"Rikko1204"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"Rikko1204"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"Rikko1204"},"content":" return \"[D]\" + super.toString() + \"(by: \" + this.by + \")\";","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"Rikko1204"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"Rikko1204":12}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Rikko1204"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"Rikko1204"},"content":" protected String from;","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"Rikko1204"},"content":" protected String to;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"Rikko1204"},"content":" public Event(String description, String from, String to) {","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"Rikko1204"},"content":" super(description);","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"Rikko1204"},"content":" this.from \u003d from;","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"Rikko1204"},"content":" this.to \u003d to;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"Rikko1204"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"Rikko1204"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"Rikko1204"},"content":" return \"[E]\" + super.toString() + \"(from: \" + this.from + \" to: \" + this.to + \")\";","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":14,"author":{"gitId":"Rikko1204"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"Rikko1204":14}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Rikko1204"},"content":"public class Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"Rikko1204"},"content":" protected String description;","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"Rikko1204"},"content":" protected boolean isDone;","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"Rikko1204"},"content":" public Task(String description) {","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"Rikko1204"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"Rikko1204"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"Rikko1204"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"Rikko1204"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"Rikko1204"},"content":" return \"[\" + this.getStatusIcon() + \"] \" + this.description;","lastModifiedDate":"2024-01-22"},{"lineNumber":13,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":14,"author":{"gitId":"Rikko1204"},"content":" public String getDescription() {","lastModifiedDate":"2024-01-22"},{"lineNumber":15,"author":{"gitId":"Rikko1204"},"content":" return description;","lastModifiedDate":"2024-01-22"},{"lineNumber":16,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":17,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":18,"author":{"gitId":"Rikko1204"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-01-22"},{"lineNumber":19,"author":{"gitId":"Rikko1204"},"content":" return (isDone ? \"X\" : \" \");","lastModifiedDate":"2024-01-22"},{"lineNumber":20,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":21,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":22,"author":{"gitId":"Rikko1204"},"content":" public boolean getStatus() {","lastModifiedDate":"2024-01-23"},{"lineNumber":23,"author":{"gitId":"Rikko1204"},"content":" return isDone;","lastModifiedDate":"2024-01-23"},{"lineNumber":24,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":25,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":26,"author":{"gitId":"Rikko1204"},"content":" public void setStatusIcon(boolean status) {","lastModifiedDate":"2024-01-22"},{"lineNumber":27,"author":{"gitId":"Rikko1204"},"content":" this.isDone \u003d status;","lastModifiedDate":"2024-01-22"},{"lineNumber":28,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":29,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":30,"author":{"gitId":"Rikko1204"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"Rikko1204":30}},{"path":"src/main/java/TaskEnum.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Rikko1204"},"content":"public enum TaskEnum {","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"Rikko1204"},"content":" TODO,","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"Rikko1204"},"content":" DEADLINE,","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"Rikko1204"},"content":" EVENT","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"Rikko1204"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"Rikko1204":5}},{"path":"src/main/java/TaskException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Rikko1204"},"content":"public class TaskException extends Exception {","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"Rikko1204"},"content":" public TaskException(String string) {","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"Rikko1204"},"content":" super(string);","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"Rikko1204"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"Rikko1204":5}},{"path":"src/main/java/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Rikko1204"},"content":"public class Todo extends Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"Rikko1204"},"content":" public Todo(String description) {","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"Rikko1204"},"content":" super(description);","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"Rikko1204"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"Rikko1204"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"Rikko1204"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"Rikko1204"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"Rikko1204":10}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"Rikko1204"},"content":"todo food","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"Rikko1204"},"content":"bye","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"Rikko1204":2}},{"path":"text-ui-test/runtest.bat","fileType":"bat","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@ECHO OFF","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"REM create bin directory if it doesn\u0027t exist","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"if not exist ..\\bin mkdir ..\\bin","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"REM delete output from previous run","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"if exist ACTUAL.TXT del ACTUAL.TXT","lastModifiedDate":"2020-08-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"Rikko1204"},"content":"@REM REM compile the code into the bin folder","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"Rikko1204"},"content":"@REM javac -cp ..\\src\\main\\java -Xlint:none -d ..\\bin ..\\src\\main\\java\\Duke.java","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"Rikko1204"},"content":"@REM IF ERRORLEVEL 1 (","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"Rikko1204"},"content":"@REM echo ********** BUILD FAILURE **********","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"Rikko1204"},"content":"@REM exit /b 1","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"Rikko1204"},"content":"@REM )","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"Rikko1204"},"content":"@REM REM no error here, errorlevel \u003d\u003d 0","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"REM run the program, feed commands from input.txt file and redirect the output to the ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"Rikko1204"},"content":"java -classpath \"..\\out\\production\\Personal Project\" Arona \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"REM compare the output to the expected output","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"FC ACTUAL.TXT EXPECTED.TXT","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"Rikko1204":8,"-":13}}] diff --git a/Rikko1204_ip_master/commits.json b/Rikko1204_ip_master/commits.json index 3cc73c34..22cbdea2 100644 --- a/Rikko1204_ip_master/commits.json +++ b/Rikko1204_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"Rikko1204":[{"date":"2024-01-21","commitResults":[{"hash":"b565e3e5182d2a7969f7e86e52905efea7b6e4dd","isMergeCommit":false,"messageTitle":"Chatbot skeleton","messageBody":"","tags":["Level-0_Rename_Greet_Exit"],"fileTypesAndContributionMap":{"java":{"insertions":24,"deletions":6}}},{"hash":"419db981bbecb25e10f364903f18052c1481377f","isMergeCommit":false,"messageTitle":"Added echo commands","messageBody":"","tags":["Level-1.Echo"],"fileTypesAndContributionMap":{"java":{"insertions":25,"deletions":3}}}]},{"date":"2024-01-22","commitResults":[{"hash":"17e7cedfff79279c7d60a5070086135dd4d813e5","isMergeCommit":false,"messageTitle":"Added task lists","messageBody":"","tags":["Level-2_Add_List"],"fileTypesAndContributionMap":{"java":{"insertions":22,"deletions":18}}},{"hash":"b1b04e6a187b1320599a0963d7af0dca1303cdae","isMergeCommit":false,"messageTitle":"Added task done","messageBody":"","tags":["Level-3_Mark_As_Done"],"fileTypesAndContributionMap":{"java":{"insertions":69,"deletions":17}}},{"hash":"2e3e6a662a276805e02bb1f91575f43fa21bd400","isMergeCommit":false,"messageTitle":"Added task types","messageBody":"","tags":["Level-4_Todos_Deadlines_Events"],"fileTypesAndContributionMap":{"java":{"insertions":70,"deletions":13}}}]},{"date":"2024-01-23","commitResults":[{"hash":"3dc730fb848374e23ccbaf93b2cfe09a8dec1e61","isMergeCommit":false,"messageTitle":"Added exception handling","messageBody":"","tags":["Level-5_handle_errors"],"fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":0},"java":{"insertions":79,"deletions":28}}},{"hash":"f8c11feafa5f8966edcfa0fb82a4fc2554d9bec4","isMergeCommit":false,"messageTitle":"Added task delete","messageBody":"","tags":["Level-6_delete"],"fileTypesAndContributionMap":{"java":{"insertions":32,"deletions":7}}}]},{"date":"2024-01-24","commitResults":[{"hash":"3b712580ed42db6537fd85328fd20a5b0f6ef034","isMergeCommit":false,"messageTitle":"Added testings","messageBody":"","tags":["A-TextUiTesting_Automated_Text_UI_Testing"],"fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":2},"java":{"insertions":12,"deletions":3},"bat":{"insertions":8,"deletions":8}}}]},{"date":"2024-01-29","commitResults":[{"hash":"29ee426fedaa021f6220049ad646059ee20c790b","isMergeCommit":false,"messageTitle":"Change chatbot name to Arona","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":25,"deletions":24},"bat":{"insertions":1,"deletions":1}}}]}]},"authorFileTypeContributionMap":{"Rikko1204":{"java":247,"md":0,"fxml":0,"sh":0,"bat":8,"gradle":0,"txt":2}},"authorContributionVariance":{"Rikko1204":4541.52},"authorDisplayNameMap":{"Rikko1204":"CS2103T-T15-2 CHEN.. MIN"}} +{"authorDailyContributionsMap":{"Rikko1204":[{"date":"2024-01-21","commitResults":[{"hash":"b565e3e5182d2a7969f7e86e52905efea7b6e4dd","isMergeCommit":false,"messageTitle":"Chatbot skeleton","messageBody":"","tags":["Level-0_Rename_Greet_Exit"],"fileTypesAndContributionMap":{"java":{"insertions":24,"deletions":6}}},{"hash":"419db981bbecb25e10f364903f18052c1481377f","isMergeCommit":false,"messageTitle":"Added echo commands","messageBody":"","tags":["Level-1.Echo"],"fileTypesAndContributionMap":{"java":{"insertions":25,"deletions":3}}}]},{"date":"2024-01-22","commitResults":[{"hash":"17e7cedfff79279c7d60a5070086135dd4d813e5","isMergeCommit":false,"messageTitle":"Added task lists","messageBody":"","tags":["Level-2_Add_List"],"fileTypesAndContributionMap":{"java":{"insertions":22,"deletions":18}}},{"hash":"b1b04e6a187b1320599a0963d7af0dca1303cdae","isMergeCommit":false,"messageTitle":"Added task done","messageBody":"","tags":["Level-3_Mark_As_Done"],"fileTypesAndContributionMap":{"java":{"insertions":69,"deletions":17}}},{"hash":"2e3e6a662a276805e02bb1f91575f43fa21bd400","isMergeCommit":false,"messageTitle":"Added task types","messageBody":"","tags":["Level-4_Todos_Deadlines_Events"],"fileTypesAndContributionMap":{"java":{"insertions":70,"deletions":13}}}]},{"date":"2024-01-23","commitResults":[{"hash":"3dc730fb848374e23ccbaf93b2cfe09a8dec1e61","isMergeCommit":false,"messageTitle":"Added exception handling","messageBody":"","tags":["Level-5_handle_errors"],"fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":0},"java":{"insertions":79,"deletions":28}}},{"hash":"f8c11feafa5f8966edcfa0fb82a4fc2554d9bec4","isMergeCommit":false,"messageTitle":"Added task delete","messageBody":"","tags":["Level-6_delete"],"fileTypesAndContributionMap":{"java":{"insertions":32,"deletions":7}}}]},{"date":"2024-01-24","commitResults":[{"hash":"3b712580ed42db6537fd85328fd20a5b0f6ef034","isMergeCommit":false,"messageTitle":"Added testings","messageBody":"","tags":["A-TextUiTesting_Automated_Text_UI_Testing"],"fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":2},"java":{"insertions":12,"deletions":3},"bat":{"insertions":8,"deletions":8}}}]},{"date":"2024-01-29","commitResults":[{"hash":"29ee426fedaa021f6220049ad646059ee20c790b","isMergeCommit":false,"messageTitle":"Change chatbot name to Arona","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":25,"deletions":24},"bat":{"insertions":1,"deletions":1}}}]},{"date":"2024-01-30","commitResults":[{"hash":"301f67400237f9a69cf83af37830915e53143d19","isMergeCommit":false,"messageTitle":"Add load and save file","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"txt":{"insertions":5,"deletions":0},"java":{"insertions":118,"deletions":27}}}]}]},"authorFileTypeContributionMap":{"Rikko1204":{"java":338,"md":0,"fxml":0,"sh":0,"bat":8,"gradle":0,"txt":7}},"authorContributionVariance":{"Rikko1204":4996.521},"authorDisplayNameMap":{"Rikko1204":"CS2103T-T15-2 CHEN.. MIN"}} diff --git a/STELLA-LYE_ip_master/authorship.json b/STELLA-LYE_ip_master/authorship.json index eac66d96..bf49f25f 100644 --- a/STELLA-LYE_ip_master/authorship.json +++ b/STELLA-LYE_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"STELLA-LYE"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"STELLA-LYE"},"content":" protected String date;","lastModifiedDate":"2024-01-26"},{"lineNumber":3,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"STELLA-LYE"},"content":" public Deadline(String description, String date) {","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"STELLA-LYE"},"content":" super(description);","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"STELLA-LYE"},"content":" this.date \u003d date;","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"STELLA-LYE"},"content":" @Override","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"STELLA-LYE"},"content":" public String toString() {","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"STELLA-LYE"},"content":" return \"[\" + super.getStatusIcon() + \"]\" + \" Deadline | \"","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"STELLA-LYE"},"content":" + this.description + \" | \"","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"STELLA-LYE"},"content":" + this.date;","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":15,"author":{"gitId":"STELLA-LYE"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"STELLA-LYE":15}},{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"STELLA-LYE"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"STELLA-LYE"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-26"},{"lineNumber":3,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"STELLA-LYE"},"content":"import java.io.File;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"STELLA-LYE"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"STELLA-LYE"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"STELLA-LYE"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":10,"author":{"gitId":"STELLA-LYE"},"content":" public static ArrayList\u003cTask\u003e taskList \u003d new ArrayList\u003cTask\u003e();","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"STELLA-LYE"},"content":" public static Integer taskCount \u003d 0;","lastModifiedDate":"2024-01-26"},{"lineNumber":12,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":13,"author":{"gitId":"STELLA-LYE"},"content":" public static void main(String[] args) throws IOException {","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"STELLA-LYE"},"content":" taskList \u003d loadFromFile();","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"STELLA-LYE"},"content":" //Greets User","lastModifiedDate":"2024-01-26"},{"lineNumber":17,"author":{"gitId":"STELLA-LYE"},"content":" String lineBreak \u003d \"-----------------\";","lastModifiedDate":"2024-01-26"},{"lineNumber":18,"author":{"gitId":"STELLA-LYE"},"content":" System.out.println(lineBreak + \u0027\\n\u0027 +","lastModifiedDate":"2024-01-26"},{"lineNumber":19,"author":{"gitId":"STELLA-LYE"},"content":" \"Hello! I\u0027m Panda\" + \u0027\\n\u0027 +","lastModifiedDate":"2024-01-26"},{"lineNumber":20,"author":{"gitId":"STELLA-LYE"},"content":" \"What can I do for you?\" + \u0027\\n\u0027 +","lastModifiedDate":"2024-01-26"},{"lineNumber":21,"author":{"gitId":"STELLA-LYE"},"content":" lineBreak);","lastModifiedDate":"2024-01-26"},{"lineNumber":22,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":23,"author":{"gitId":"STELLA-LYE"},"content":" Scanner sc \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-26"},{"lineNumber":24,"author":{"gitId":"STELLA-LYE"},"content":" String user_input \u003d sc.nextLine();","lastModifiedDate":"2024-01-26"},{"lineNumber":25,"author":{"gitId":"STELLA-LYE"},"content":" //conditions","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"STELLA-LYE"},"content":" while (!user_input.equals(\"bye\")) {","lastModifiedDate":"2024-01-26"},{"lineNumber":27,"author":{"gitId":"STELLA-LYE"},"content":" try {","lastModifiedDate":"2024-01-26"},{"lineNumber":28,"author":{"gitId":"STELLA-LYE"},"content":" String[] inputArray \u003d user_input.split(\" \");","lastModifiedDate":"2024-01-26"},{"lineNumber":29,"author":{"gitId":"STELLA-LYE"},"content":" switch (inputArray[0]) {","lastModifiedDate":"2024-01-26"},{"lineNumber":30,"author":{"gitId":"STELLA-LYE"},"content":" case \"list\":","lastModifiedDate":"2024-01-26"},{"lineNumber":31,"author":{"gitId":"STELLA-LYE"},"content":" if (taskList.size() \u003d\u003d 0) {","lastModifiedDate":"2024-01-26"},{"lineNumber":32,"author":{"gitId":"STELLA-LYE"},"content":" System.out.println(lineBreak + \u0027\\n\u0027 +","lastModifiedDate":"2024-01-26"},{"lineNumber":33,"author":{"gitId":"STELLA-LYE"},"content":" \"There is currently no task in your list, trying adding some!\" + \u0027\\n\u0027 +","lastModifiedDate":"2024-01-26"},{"lineNumber":34,"author":{"gitId":"STELLA-LYE"},"content":" lineBreak);","lastModifiedDate":"2024-01-26"},{"lineNumber":35,"author":{"gitId":"STELLA-LYE"},"content":" } else {","lastModifiedDate":"2024-01-26"},{"lineNumber":36,"author":{"gitId":"STELLA-LYE"},"content":" System.out.println(lineBreak + \u0027\\n\u0027 +","lastModifiedDate":"2024-01-26"},{"lineNumber":37,"author":{"gitId":"STELLA-LYE"},"content":" \"Here are the tasks in your list: \");","lastModifiedDate":"2024-01-26"},{"lineNumber":38,"author":{"gitId":"STELLA-LYE"},"content":" for (int i \u003d 0; i \u003c taskCount; i++) {","lastModifiedDate":"2024-01-26"},{"lineNumber":39,"author":{"gitId":"STELLA-LYE"},"content":" System.out.println(\"\" + (i + 1) + \". \" + taskList.get(i));","lastModifiedDate":"2024-01-26"},{"lineNumber":40,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":41,"author":{"gitId":"STELLA-LYE"},"content":" System.out.println(lineBreak);","lastModifiedDate":"2024-01-26"},{"lineNumber":42,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":43,"author":{"gitId":"STELLA-LYE"},"content":" break;","lastModifiedDate":"2024-01-26"},{"lineNumber":44,"author":{"gitId":"STELLA-LYE"},"content":" case \"mark\": {","lastModifiedDate":"2024-01-26"},{"lineNumber":45,"author":{"gitId":"STELLA-LYE"},"content":" int taskNum \u003d Integer.parseInt(inputArray[1]);","lastModifiedDate":"2024-01-26"},{"lineNumber":46,"author":{"gitId":"STELLA-LYE"},"content":" Task currTask \u003d taskList.get(taskNum - 1);","lastModifiedDate":"2024-01-26"},{"lineNumber":47,"author":{"gitId":"STELLA-LYE"},"content":" currTask.check();","lastModifiedDate":"2024-01-26"},{"lineNumber":48,"author":{"gitId":"STELLA-LYE"},"content":" taskList.set(taskNum - 1, currTask);","lastModifiedDate":"2024-01-26"},{"lineNumber":49,"author":{"gitId":"STELLA-LYE"},"content":" System.out.println(lineBreak + \u0027\\n\u0027 +","lastModifiedDate":"2024-01-26"},{"lineNumber":50,"author":{"gitId":"STELLA-LYE"},"content":" \"Nice! I\u0027ve marked this task as done:\" + \u0027\\n\u0027 +","lastModifiedDate":"2024-01-26"},{"lineNumber":51,"author":{"gitId":"STELLA-LYE"},"content":" currTask + \u0027\\n\u0027 +","lastModifiedDate":"2024-01-26"},{"lineNumber":52,"author":{"gitId":"STELLA-LYE"},"content":" lineBreak);","lastModifiedDate":"2024-01-26"},{"lineNumber":53,"author":{"gitId":"STELLA-LYE"},"content":" break;","lastModifiedDate":"2024-01-26"},{"lineNumber":54,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":55,"author":{"gitId":"STELLA-LYE"},"content":" case \"unmark\": {","lastModifiedDate":"2024-01-26"},{"lineNumber":56,"author":{"gitId":"STELLA-LYE"},"content":" int taskNum \u003d Integer.parseInt(inputArray[1]);","lastModifiedDate":"2024-01-26"},{"lineNumber":57,"author":{"gitId":"STELLA-LYE"},"content":" Task currTask \u003d taskList.get(taskNum - 1);","lastModifiedDate":"2024-01-26"},{"lineNumber":58,"author":{"gitId":"STELLA-LYE"},"content":" currTask.uncheck();","lastModifiedDate":"2024-01-26"},{"lineNumber":59,"author":{"gitId":"STELLA-LYE"},"content":" taskList.set(taskNum - 1, currTask);","lastModifiedDate":"2024-01-26"},{"lineNumber":60,"author":{"gitId":"STELLA-LYE"},"content":" System.out.println(lineBreak + \u0027\\n\u0027 +","lastModifiedDate":"2024-01-26"},{"lineNumber":61,"author":{"gitId":"STELLA-LYE"},"content":" \"OK, I\u0027ve marked this task as not done yet:\" + \u0027\\n\u0027 +","lastModifiedDate":"2024-01-26"},{"lineNumber":62,"author":{"gitId":"STELLA-LYE"},"content":" currTask + \u0027\\n\u0027 +","lastModifiedDate":"2024-01-26"},{"lineNumber":63,"author":{"gitId":"STELLA-LYE"},"content":" lineBreak);","lastModifiedDate":"2024-01-26"},{"lineNumber":64,"author":{"gitId":"STELLA-LYE"},"content":" break;","lastModifiedDate":"2024-01-26"},{"lineNumber":65,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":66,"author":{"gitId":"STELLA-LYE"},"content":" case \"todo\": {","lastModifiedDate":"2024-01-26"},{"lineNumber":67,"author":{"gitId":"STELLA-LYE"},"content":" String[] tempArray \u003d user_input.split(\" \", 2);","lastModifiedDate":"2024-01-26"},{"lineNumber":68,"author":{"gitId":"STELLA-LYE"},"content":" if (tempArray.length \u003d\u003d 1) {","lastModifiedDate":"2024-01-26"},{"lineNumber":69,"author":{"gitId":"STELLA-LYE"},"content":" throw new ExceptionDuke(\"OOPS!!! The description of a todo cannot be empty.\");","lastModifiedDate":"2024-01-26"},{"lineNumber":70,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":71,"author":{"gitId":"STELLA-LYE"},"content":" Task currTask \u003d new Todo(tempArray[1]);","lastModifiedDate":"2024-01-26"},{"lineNumber":72,"author":{"gitId":"STELLA-LYE"},"content":" taskList.add(currTask);","lastModifiedDate":"2024-01-26"},{"lineNumber":73,"author":{"gitId":"STELLA-LYE"},"content":" taskCount++;","lastModifiedDate":"2024-01-26"},{"lineNumber":74,"author":{"gitId":"STELLA-LYE"},"content":" System.out.println(lineBreak + \u0027\\n\u0027 +","lastModifiedDate":"2024-01-26"},{"lineNumber":75,"author":{"gitId":"STELLA-LYE"},"content":" \"Got it. I\u0027ve added this task:\" + \u0027\\n\u0027 +","lastModifiedDate":"2024-01-26"},{"lineNumber":76,"author":{"gitId":"STELLA-LYE"},"content":" currTask + \u0027\\n\u0027 +","lastModifiedDate":"2024-01-26"},{"lineNumber":77,"author":{"gitId":"STELLA-LYE"},"content":" \"Now you have \" + taskCount + \" tasks in the list.\" + \u0027\\n\u0027 +","lastModifiedDate":"2024-01-26"},{"lineNumber":78,"author":{"gitId":"STELLA-LYE"},"content":" lineBreak);","lastModifiedDate":"2024-01-26"},{"lineNumber":79,"author":{"gitId":"STELLA-LYE"},"content":" break;","lastModifiedDate":"2024-01-26"},{"lineNumber":80,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":81,"author":{"gitId":"STELLA-LYE"},"content":" case \"deadline\": {","lastModifiedDate":"2024-01-26"},{"lineNumber":82,"author":{"gitId":"STELLA-LYE"},"content":" String[] dateArray \u003d user_input.split(\"/by\");","lastModifiedDate":"2024-01-26"},{"lineNumber":83,"author":{"gitId":"STELLA-LYE"},"content":" String[] descriptionArray \u003d dateArray[0].split(\" \", 2);","lastModifiedDate":"2024-01-26"},{"lineNumber":84,"author":{"gitId":"STELLA-LYE"},"content":" Task currTask \u003d new Deadline(descriptionArray[1].stripLeading(), dateArray[1]);","lastModifiedDate":"2024-01-26"},{"lineNumber":85,"author":{"gitId":"STELLA-LYE"},"content":" taskList.add(currTask);","lastModifiedDate":"2024-01-26"},{"lineNumber":86,"author":{"gitId":"STELLA-LYE"},"content":" taskCount++;","lastModifiedDate":"2024-01-26"},{"lineNumber":87,"author":{"gitId":"STELLA-LYE"},"content":" System.out.println(lineBreak + \u0027\\n\u0027 +","lastModifiedDate":"2024-01-26"},{"lineNumber":88,"author":{"gitId":"STELLA-LYE"},"content":" \"Got it. I\u0027ve added this task:\" + \u0027\\n\u0027 +","lastModifiedDate":"2024-01-26"},{"lineNumber":89,"author":{"gitId":"STELLA-LYE"},"content":" currTask + \u0027\\n\u0027 +","lastModifiedDate":"2024-01-26"},{"lineNumber":90,"author":{"gitId":"STELLA-LYE"},"content":" \"Now you have \" + taskCount + \" tasks in the list.\" + \u0027\\n\u0027 +","lastModifiedDate":"2024-01-26"},{"lineNumber":91,"author":{"gitId":"STELLA-LYE"},"content":" lineBreak);","lastModifiedDate":"2024-01-26"},{"lineNumber":92,"author":{"gitId":"STELLA-LYE"},"content":" break;","lastModifiedDate":"2024-01-26"},{"lineNumber":93,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":94,"author":{"gitId":"STELLA-LYE"},"content":" case \"event\": {","lastModifiedDate":"2024-01-26"},{"lineNumber":95,"author":{"gitId":"STELLA-LYE"},"content":" String[] dateArray \u003d user_input.split(\"/\");","lastModifiedDate":"2024-01-26"},{"lineNumber":96,"author":{"gitId":"STELLA-LYE"},"content":" String[] descriptionArray \u003d dateArray[0].split(\" \", 2);","lastModifiedDate":"2024-01-26"},{"lineNumber":97,"author":{"gitId":"STELLA-LYE"},"content":" String date \u003d dateArray[1].substring(5);","lastModifiedDate":"2024-01-26"},{"lineNumber":98,"author":{"gitId":"STELLA-LYE"},"content":" String[] timeArray \u003d user_input.split(\"/to\");","lastModifiedDate":"2024-01-26"},{"lineNumber":99,"author":{"gitId":"STELLA-LYE"},"content":" String time \u003d timeArray[1];","lastModifiedDate":"2024-01-26"},{"lineNumber":100,"author":{"gitId":"STELLA-LYE"},"content":" Task currTask \u003d new Event(descriptionArray[1].stripTrailing(), date, time);","lastModifiedDate":"2024-01-26"},{"lineNumber":101,"author":{"gitId":"STELLA-LYE"},"content":" taskList.add(currTask);","lastModifiedDate":"2024-01-26"},{"lineNumber":102,"author":{"gitId":"STELLA-LYE"},"content":" taskCount++;","lastModifiedDate":"2024-01-26"},{"lineNumber":103,"author":{"gitId":"STELLA-LYE"},"content":" System.out.println(lineBreak + \u0027\\n\u0027 +","lastModifiedDate":"2024-01-26"},{"lineNumber":104,"author":{"gitId":"STELLA-LYE"},"content":" \"Got it. I\u0027ve added this task:\" + \u0027\\n\u0027 +","lastModifiedDate":"2024-01-26"},{"lineNumber":105,"author":{"gitId":"STELLA-LYE"},"content":" currTask + \u0027\\n\u0027 +","lastModifiedDate":"2024-01-26"},{"lineNumber":106,"author":{"gitId":"STELLA-LYE"},"content":" \"Now you have \" + taskCount + \" tasks in the list.\" + \u0027\\n\u0027 +","lastModifiedDate":"2024-01-26"},{"lineNumber":107,"author":{"gitId":"STELLA-LYE"},"content":" lineBreak);","lastModifiedDate":"2024-01-26"},{"lineNumber":108,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":109,"author":{"gitId":"STELLA-LYE"},"content":" break;","lastModifiedDate":"2024-01-26"},{"lineNumber":110,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":111,"author":{"gitId":"STELLA-LYE"},"content":" case \"delete\": {","lastModifiedDate":"2024-01-26"},{"lineNumber":112,"author":{"gitId":"STELLA-LYE"},"content":" int taskNum \u003d Integer.parseInt(inputArray[1]);","lastModifiedDate":"2024-01-26"},{"lineNumber":113,"author":{"gitId":"STELLA-LYE"},"content":" Task currtask \u003d taskList.get(taskNum - 1);","lastModifiedDate":"2024-01-26"},{"lineNumber":114,"author":{"gitId":"STELLA-LYE"},"content":" taskList.remove(taskNum - 1);","lastModifiedDate":"2024-01-26"},{"lineNumber":115,"author":{"gitId":"STELLA-LYE"},"content":" taskCount--;","lastModifiedDate":"2024-01-26"},{"lineNumber":116,"author":{"gitId":"STELLA-LYE"},"content":" System.out.println(lineBreak + \u0027\\n\u0027 +","lastModifiedDate":"2024-01-26"},{"lineNumber":117,"author":{"gitId":"STELLA-LYE"},"content":" \"Noted. I\u0027ve removed this task:\" + \u0027\\n\u0027 +","lastModifiedDate":"2024-01-26"},{"lineNumber":118,"author":{"gitId":"STELLA-LYE"},"content":" currtask + \u0027\\n\u0027 +","lastModifiedDate":"2024-01-26"},{"lineNumber":119,"author":{"gitId":"STELLA-LYE"},"content":" \"Now you have \" + taskCount + \" tasks in the list.\" + \u0027\\n\u0027 +","lastModifiedDate":"2024-01-26"},{"lineNumber":120,"author":{"gitId":"STELLA-LYE"},"content":" lineBreak);","lastModifiedDate":"2024-01-26"},{"lineNumber":121,"author":{"gitId":"STELLA-LYE"},"content":" break;","lastModifiedDate":"2024-01-26"},{"lineNumber":122,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":123,"author":{"gitId":"STELLA-LYE"},"content":" default: {","lastModifiedDate":"2024-01-26"},{"lineNumber":124,"author":{"gitId":"STELLA-LYE"},"content":" throw new ExceptionDuke(\"OOPS!!! I\u0027m sorry, but I don\u0027t know what that means :-(\");","lastModifiedDate":"2024-01-26"},{"lineNumber":125,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":126,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":127,"author":{"gitId":"STELLA-LYE"},"content":" } catch (ExceptionDuke e) {","lastModifiedDate":"2024-01-26"},{"lineNumber":128,"author":{"gitId":"STELLA-LYE"},"content":" System.out.println(lineBreak + \u0027\\n\u0027 +","lastModifiedDate":"2024-01-26"},{"lineNumber":129,"author":{"gitId":"STELLA-LYE"},"content":" e.getMessage() + \u0027\\n\u0027 +","lastModifiedDate":"2024-01-26"},{"lineNumber":130,"author":{"gitId":"STELLA-LYE"},"content":" lineBreak);","lastModifiedDate":"2024-01-26"},{"lineNumber":131,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":132,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":133,"author":{"gitId":"STELLA-LYE"},"content":" user_input \u003d sc.nextLine();","lastModifiedDate":"2024-01-26"},{"lineNumber":134,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":135,"author":{"gitId":"STELLA-LYE"},"content":" saveToFile();","lastModifiedDate":"2024-01-29"},{"lineNumber":136,"author":{"gitId":"STELLA-LYE"},"content":" System.out.println(lineBreak + \u0027\\n\u0027 +","lastModifiedDate":"2024-01-26"},{"lineNumber":137,"author":{"gitId":"STELLA-LYE"},"content":" \"Bye. Hope to see you again soon!\" + \u0027\\n\u0027 +","lastModifiedDate":"2024-01-26"},{"lineNumber":138,"author":{"gitId":"STELLA-LYE"},"content":" lineBreak);","lastModifiedDate":"2024-01-26"},{"lineNumber":139,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":140,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":141,"author":{"gitId":"STELLA-LYE"},"content":" public static void saveToFile() throws IOException {","lastModifiedDate":"2024-01-29"},{"lineNumber":142,"author":{"gitId":"STELLA-LYE"},"content":" // ##can change user.home to user.dir so that easier to track file in ip directory","lastModifiedDate":"2024-01-29"},{"lineNumber":143,"author":{"gitId":"STELLA-LYE"},"content":" String currPath \u003d System.getProperty(\"user.home\") + \"/data\";","lastModifiedDate":"2024-01-29"},{"lineNumber":144,"author":{"gitId":"STELLA-LYE"},"content":" System.out.println(currPath);","lastModifiedDate":"2024-01-29"},{"lineNumber":145,"author":{"gitId":"STELLA-LYE"},"content":" File dataDirectory \u003d new File(currPath);","lastModifiedDate":"2024-01-29"},{"lineNumber":146,"author":{"gitId":"STELLA-LYE"},"content":" if (!dataDirectory.exists()) {","lastModifiedDate":"2024-01-29"},{"lineNumber":147,"author":{"gitId":"STELLA-LYE"},"content":" dataDirectory.mkdir();","lastModifiedDate":"2024-01-29"},{"lineNumber":148,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":149,"author":{"gitId":"STELLA-LYE"},"content":" File currFile \u003d new File(currPath + \"/duke.txt\");","lastModifiedDate":"2024-01-29"},{"lineNumber":150,"author":{"gitId":"STELLA-LYE"},"content":" FileWriter fw \u003d new FileWriter(currFile, false);","lastModifiedDate":"2024-01-29"},{"lineNumber":151,"author":{"gitId":"STELLA-LYE"},"content":" for (Task task: taskList) {","lastModifiedDate":"2024-01-29"},{"lineNumber":152,"author":{"gitId":"STELLA-LYE"},"content":" fw.write(task.toString() + \u0027\\n\u0027);","lastModifiedDate":"2024-01-29"},{"lineNumber":153,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":154,"author":{"gitId":"STELLA-LYE"},"content":" System.out.print(taskList);","lastModifiedDate":"2024-01-29"},{"lineNumber":155,"author":{"gitId":"STELLA-LYE"},"content":" fw.close();","lastModifiedDate":"2024-01-29"},{"lineNumber":156,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":157,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":158,"author":{"gitId":"STELLA-LYE"},"content":" public static ArrayList\u003cTask\u003e loadFromFile() throws FileNotFoundException {","lastModifiedDate":"2024-01-29"},{"lineNumber":159,"author":{"gitId":"STELLA-LYE"},"content":" ArrayList\u003cTask\u003e dataTaskList \u003d new ArrayList\u003cTask\u003e();","lastModifiedDate":"2024-01-29"},{"lineNumber":160,"author":{"gitId":"STELLA-LYE"},"content":" String path \u003d System.getProperty(\"user.home\");","lastModifiedDate":"2024-01-29"},{"lineNumber":161,"author":{"gitId":"STELLA-LYE"},"content":" //checking if file exists","lastModifiedDate":"2024-01-29"},{"lineNumber":162,"author":{"gitId":"STELLA-LYE"},"content":" File sourceFile \u003d new File(path + \"/data/duke.txt\");","lastModifiedDate":"2024-01-29"},{"lineNumber":163,"author":{"gitId":"STELLA-LYE"},"content":" System.out.println(sourceFile.exists());","lastModifiedDate":"2024-01-29"},{"lineNumber":164,"author":{"gitId":"STELLA-LYE"},"content":" if (!sourceFile.exists()) {","lastModifiedDate":"2024-01-29"},{"lineNumber":165,"author":{"gitId":"STELLA-LYE"},"content":" return dataTaskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":166,"author":{"gitId":"STELLA-LYE"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":167,"author":{"gitId":"STELLA-LYE"},"content":" Scanner sc \u003d new Scanner(sourceFile);","lastModifiedDate":"2024-01-29"},{"lineNumber":168,"author":{"gitId":"STELLA-LYE"},"content":" while (sc.hasNext()) {","lastModifiedDate":"2024-01-29"},{"lineNumber":169,"author":{"gitId":"STELLA-LYE"},"content":" String line \u003d sc.nextLine().substring(4);","lastModifiedDate":"2024-01-29"},{"lineNumber":170,"author":{"gitId":"STELLA-LYE"},"content":" System.out.println(line);","lastModifiedDate":"2024-01-29"},{"lineNumber":171,"author":{"gitId":"STELLA-LYE"},"content":" String[] typeLine \u003d line.split(\" \");","lastModifiedDate":"2024-01-29"},{"lineNumber":172,"author":{"gitId":"STELLA-LYE"},"content":" String[] detailLine \u003d line.split(\" \\\\| \");","lastModifiedDate":"2024-01-29"},{"lineNumber":173,"author":{"gitId":"STELLA-LYE"},"content":" switch(typeLine[0]) {","lastModifiedDate":"2024-01-29"},{"lineNumber":174,"author":{"gitId":"STELLA-LYE"},"content":" case \"Todo\": {","lastModifiedDate":"2024-01-29"},{"lineNumber":175,"author":{"gitId":"STELLA-LYE"},"content":" Todo currTask \u003d new Todo(detailLine[1]);","lastModifiedDate":"2024-01-29"},{"lineNumber":176,"author":{"gitId":"STELLA-LYE"},"content":" dataTaskList.add(currTask);","lastModifiedDate":"2024-01-29"},{"lineNumber":177,"author":{"gitId":"STELLA-LYE"},"content":" break;","lastModifiedDate":"2024-01-29"},{"lineNumber":178,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":179,"author":{"gitId":"STELLA-LYE"},"content":" case \"Deadline\": {","lastModifiedDate":"2024-01-29"},{"lineNumber":180,"author":{"gitId":"STELLA-LYE"},"content":" Task currTask \u003d new Deadline(detailLine[1], detailLine[2]);","lastModifiedDate":"2024-01-29"},{"lineNumber":181,"author":{"gitId":"STELLA-LYE"},"content":" dataTaskList.add(currTask);","lastModifiedDate":"2024-01-29"},{"lineNumber":182,"author":{"gitId":"STELLA-LYE"},"content":" break;","lastModifiedDate":"2024-01-29"},{"lineNumber":183,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":184,"author":{"gitId":"STELLA-LYE"},"content":" case \"Event\": {","lastModifiedDate":"2024-01-29"},{"lineNumber":185,"author":{"gitId":"STELLA-LYE"},"content":" String[] timeArray \u003d line.split(\" \\\\ - \");","lastModifiedDate":"2024-01-29"},{"lineNumber":186,"author":{"gitId":"STELLA-LYE"},"content":" System.out.println(timeArray[1]);","lastModifiedDate":"2024-01-29"},{"lineNumber":187,"author":{"gitId":"STELLA-LYE"},"content":" Task currTask \u003d new Event(detailLine[1], detailLine[2], timeArray[1] );","lastModifiedDate":"2024-01-29"},{"lineNumber":188,"author":{"gitId":"STELLA-LYE"},"content":" dataTaskList.add(currTask);","lastModifiedDate":"2024-01-29"},{"lineNumber":189,"author":{"gitId":"STELLA-LYE"},"content":" break;","lastModifiedDate":"2024-01-29"},{"lineNumber":190,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":191,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":192,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":193,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":194,"author":{"gitId":"STELLA-LYE"},"content":" return dataTaskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":195,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":196,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"},{"lineNumber":197,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":198,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":199,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":200,"author":{"gitId":"STELLA-LYE"},"content":"// String logo \u003d \" ____ _ \\n\"","lastModifiedDate":"2024-01-26"},{"lineNumber":201,"author":{"gitId":"STELLA-LYE"},"content":"// + \"| _ \\\\ _ _| | _____ \\n\"","lastModifiedDate":"2024-01-26"},{"lineNumber":202,"author":{"gitId":"STELLA-LYE"},"content":"// + \"| | | | | | | |/ / _ \\\\\\n\"","lastModifiedDate":"2024-01-26"},{"lineNumber":203,"author":{"gitId":"STELLA-LYE"},"content":"// + \"| |_| | |_| | \u003c __/\\n\"","lastModifiedDate":"2024-01-26"},{"lineNumber":204,"author":{"gitId":"STELLA-LYE"},"content":"// + \"|____/ \\\\__,_|_|\\\\_\\\\___|\\n\";","lastModifiedDate":"2024-01-26"},{"lineNumber":205,"author":{"gitId":"STELLA-LYE"},"content":"// System.out.println(\"Hello from\\n\" + logo);","lastModifiedDate":"2024-01-26"},{"lineNumber":206,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"STELLA-LYE":202,"-":4}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"STELLA-LYE"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"STELLA-LYE"},"content":" protected String date;","lastModifiedDate":"2024-01-26"},{"lineNumber":3,"author":{"gitId":"STELLA-LYE"},"content":" protected String time;","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"STELLA-LYE"},"content":" public Event(String description, String date, String time) {","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"STELLA-LYE"},"content":" super(description);","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"STELLA-LYE"},"content":" this.date \u003d date;","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"STELLA-LYE"},"content":" this.time \u003d time;","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"STELLA-LYE"},"content":" @Override","lastModifiedDate":"2024-01-26"},{"lineNumber":12,"author":{"gitId":"STELLA-LYE"},"content":" public String toString() {","lastModifiedDate":"2024-01-26"},{"lineNumber":13,"author":{"gitId":"STELLA-LYE"},"content":" return \"[\" + super.getStatusIcon() + \"]\" + \" Event | \" + this.description","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"STELLA-LYE"},"content":" + \" | \" + this.date","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"STELLA-LYE"},"content":" + \" - \" + this.time;","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":17,"author":{"gitId":"STELLA-LYE"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"STELLA-LYE":17}},{"path":"src/main/java/ExceptionDuke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"STELLA-LYE"},"content":"public class ExceptionDuke extends Exception {","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":3,"author":{"gitId":"STELLA-LYE"},"content":" public ExceptionDuke(String message) {","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"STELLA-LYE"},"content":" super(message);","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"STELLA-LYE"},"content":" @Override","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"STELLA-LYE"},"content":" public String toString() {","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"STELLA-LYE"},"content":" return super.getMessage();","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"STELLA-LYE"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"STELLA-LYE":11}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"STELLA-LYE"},"content":"public class Task {","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"STELLA-LYE"},"content":" protected String description;","lastModifiedDate":"2024-01-26"},{"lineNumber":3,"author":{"gitId":"STELLA-LYE"},"content":" protected boolean isDone;","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"STELLA-LYE"},"content":" public Task(String description) {","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"STELLA-LYE"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"STELLA-LYE"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"STELLA-LYE"},"content":" //mark X on done tasks","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"STELLA-LYE"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-01-26"},{"lineNumber":12,"author":{"gitId":"STELLA-LYE"},"content":" return (isDone ? \"X\" : \" \");","lastModifiedDate":"2024-01-26"},{"lineNumber":13,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":14,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":15,"author":{"gitId":"STELLA-LYE"},"content":" public void check() {","lastModifiedDate":"2024-01-26"},{"lineNumber":16,"author":{"gitId":"STELLA-LYE"},"content":" this.isDone \u003d true;","lastModifiedDate":"2024-01-26"},{"lineNumber":17,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":18,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":19,"author":{"gitId":"STELLA-LYE"},"content":" public void uncheck() {","lastModifiedDate":"2024-01-26"},{"lineNumber":20,"author":{"gitId":"STELLA-LYE"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-26"},{"lineNumber":21,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":22,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":23,"author":{"gitId":"STELLA-LYE"},"content":" @Override","lastModifiedDate":"2024-01-26"},{"lineNumber":24,"author":{"gitId":"STELLA-LYE"},"content":" public String toString() {","lastModifiedDate":"2024-01-26"},{"lineNumber":25,"author":{"gitId":"STELLA-LYE"},"content":" return \"[\" + this.getStatusIcon() + \"] \" + this.description;","lastModifiedDate":"2024-01-26"},{"lineNumber":26,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":27,"author":{"gitId":"STELLA-LYE"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"STELLA-LYE":27}},{"path":"src/main/java/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"STELLA-LYE"},"content":"public class Todo extends Task {","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"STELLA-LYE"},"content":" public Todo(String description) {","lastModifiedDate":"2024-01-26"},{"lineNumber":3,"author":{"gitId":"STELLA-LYE"},"content":" super(description);","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"STELLA-LYE"},"content":" @Override","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"STELLA-LYE"},"content":" public String toString() {","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"STELLA-LYE"},"content":" return \"[\" + super.getStatusIcon() + \"]\" + \" Todo | \" + this.description;","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"STELLA-LYE"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"STELLA-LYE":10}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"STELLA-LYE"},"content":"todo read book","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"STELLA-LYE"},"content":"deadline return book /by Monday","lastModifiedDate":"2024-01-26"},{"lineNumber":3,"author":{"gitId":"STELLA-LYE"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"STELLA-LYE"},"content":"todo join sports club","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"STELLA-LYE"},"content":"todo borrow book","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"STELLA-LYE"},"content":"list","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"STELLA-LYE"},"content":"mark 1","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"STELLA-LYE"},"content":"mark 4","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"STELLA-LYE"},"content":"list","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"STELLA-LYE"},"content":"unmark 1","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"STELLA-LYE"},"content":"list","lastModifiedDate":"2024-01-26"},{"lineNumber":12,"author":{"gitId":"STELLA-LYE"},"content":"delete 1","lastModifiedDate":"2024-01-26"},{"lineNumber":13,"author":{"gitId":"STELLA-LYE"},"content":"todo","lastModifiedDate":"2024-01-26"},{"lineNumber":14,"author":{"gitId":"STELLA-LYE"},"content":"delete4","lastModifiedDate":"2024-01-26"},{"lineNumber":15,"author":{"gitId":"STELLA-LYE"},"content":"mark 1","lastModifiedDate":"2024-01-26"},{"lineNumber":16,"author":{"gitId":"STELLA-LYE"},"content":"list","lastModifiedDate":"2024-01-26"},{"lineNumber":17,"author":{"gitId":"STELLA-LYE"},"content":"bye","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"STELLA-LYE":17}}] +[{"path":"src/main/java/duke/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"STELLA-LYE"},"content":"package duke;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"STELLA-LYE"},"content":"import duke.command.Command;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"STELLA-LYE"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"STELLA-LYE"},"content":"public class Duke {","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"STELLA-LYE"},"content":" private Storage storage;","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"STELLA-LYE"},"content":" private TaskList tasks;","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"STELLA-LYE"},"content":" private TextUi ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"STELLA-LYE"},"content":" public Duke(String filePath) {","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"STELLA-LYE"},"content":" this.ui \u003d new TextUi();","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"STELLA-LYE"},"content":" this.storage \u003d new Storage(filePath);","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"STELLA-LYE"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"STELLA-LYE"},"content":" this.tasks \u003d new TaskList(storage.loadFromFile());","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"STELLA-LYE"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"STELLA-LYE"},"content":" ui.showLoadingError();","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"STELLA-LYE"},"content":" this.tasks \u003d new TaskList();","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"STELLA-LYE"},"content":" public void run() {","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"STELLA-LYE"},"content":" ui.showGreetMessage();","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"STELLA-LYE"},"content":" boolean isExit \u003d false;","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"STELLA-LYE"},"content":" while (!isExit) {","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"STELLA-LYE"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"STELLA-LYE"},"content":" String fullCommand \u003d ui.readUserCommand();","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"STELLA-LYE"},"content":" Command c \u003d Parser.parse(fullCommand);","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"STELLA-LYE"},"content":" c.execute(tasks, ui, storage);","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"STELLA-LYE"},"content":" isExit \u003d c.isExit();","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"STELLA-LYE"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"STELLA-LYE"},"content":" ui.showErrorMessage(e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"STELLA-LYE"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"STELLA-LYE"},"content":" new Duke(\"data/tasks.txt\").run();","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"STELLA-LYE"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"STELLA-LYE"},"content":"// String logo \u003d \" ____ _ \\n\"","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"STELLA-LYE"},"content":"// + \"| _ \\\\ _ _| | _____ \\n\"","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"STELLA-LYE"},"content":"// + \"| | | | | | | |/ / _ \\\\\\n\"","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"STELLA-LYE"},"content":"// + \"| |_| | |_| | \u003c __/\\n\"","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"STELLA-LYE"},"content":"// + \"|____/ \\\\__,_|_|\\\\_\\\\___|\\n\";","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"STELLA-LYE"},"content":"// System.out.println(\"Hello from\\n\" + logo);","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"STELLA-LYE":52}},{"path":"src/main/java/duke/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"STELLA-LYE"},"content":"package duke;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":3,"author":{"gitId":"STELLA-LYE"},"content":"public class DukeException extends Exception {","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"STELLA-LYE"},"content":" public DukeException(String message) {","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"STELLA-LYE"},"content":" super(message);","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"STELLA-LYE"},"content":" @Override","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"STELLA-LYE"},"content":" public String toString() {","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"STELLA-LYE"},"content":" return super.getMessage();","lastModifiedDate":"2024-01-26"},{"lineNumber":12,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":13,"author":{"gitId":"STELLA-LYE"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"STELLA-LYE":13}},{"path":"src/main/java/duke/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"STELLA-LYE"},"content":"package duke;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"STELLA-LYE"},"content":"import duke.command.*;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"STELLA-LYE"},"content":"public class Parser {","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"STELLA-LYE"},"content":" public static Command parse(String command) throws DukeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"STELLA-LYE"},"content":" String[] commandArray \u003d command.split(\" \", 2);","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"STELLA-LYE"},"content":" switch (commandArray[0].toUpperCase()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"STELLA-LYE"},"content":" case \"TODO\": {","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"STELLA-LYE"},"content":" if (commandArray.length \u003d\u003d 1) {","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"STELLA-LYE"},"content":" throw new DukeException(\"You have to tell me what you want to do \u003e.\u003c\");","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"STELLA-LYE"},"content":" String taskDetails \u003d commandArray[1].strip();","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"STELLA-LYE"},"content":" return new TodoCommand(taskDetails);","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"STELLA-LYE"},"content":" case \"LIST\": {","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"STELLA-LYE"},"content":" return new ListCommand();","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"STELLA-LYE"},"content":" case \"MARK\": {","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"STELLA-LYE"},"content":" if (commandArray.length \u003d\u003d 1) {","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"STELLA-LYE"},"content":" throw new DukeException(\"You have to tell me which task you want to mark as done!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"STELLA-LYE"},"content":" String taskNum \u003d commandArray[1].strip();","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"STELLA-LYE"},"content":" return new MarkCommand(taskNum);","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"STELLA-LYE"},"content":" case \"UNMARK\": {","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"STELLA-LYE"},"content":" if (commandArray.length \u003d\u003d 1) {","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"STELLA-LYE"},"content":" throw new DukeException(\"You have to tell me which task you want to mark as undone!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"STELLA-LYE"},"content":" String taskNum \u003d commandArray[1].strip();","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"STELLA-LYE"},"content":" return new UnmarkCommand(taskNum);","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"STELLA-LYE"},"content":" case \"EVENT\": {","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"STELLA-LYE"},"content":" String taskDetails \u003d commandArray[1].strip();","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"STELLA-LYE"},"content":" return new EventCommand(taskDetails);","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"STELLA-LYE"},"content":" case \"DEADLINE\": {","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"STELLA-LYE"},"content":" String taskDetails \u003d commandArray[1].strip();","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"STELLA-LYE"},"content":" return new DeadlineCommand(taskDetails);","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"STELLA-LYE"},"content":" case \"DELETE\": {","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"STELLA-LYE"},"content":" String taskNum \u003d commandArray[1].strip();","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"STELLA-LYE"},"content":" return new DeleteCommand(taskNum);","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"STELLA-LYE"},"content":" case \"BYE\": {","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"STELLA-LYE"},"content":" return new ByeCommand();","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"STELLA-LYE"},"content":" default: {","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"STELLA-LYE"},"content":" throw new DukeException(\"It\u0027s an INVALID COMMAND, follow the instruction and try again :-)\");","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"STELLA-LYE"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"STELLA-LYE":53}},{"path":"src/main/java/duke/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"STELLA-LYE"},"content":"package duke;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"STELLA-LYE"},"content":"import duke.task.Task;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"STELLA-LYE"},"content":"import duke.task.Event;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"STELLA-LYE"},"content":"import duke.task.Todo;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"STELLA-LYE"},"content":"import duke.task.Deadline;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"STELLA-LYE"},"content":"import java.io.File;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"STELLA-LYE"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"STELLA-LYE"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"STELLA-LYE"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"STELLA-LYE"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"STELLA-LYE"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"STELLA-LYE"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"STELLA-LYE"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"STELLA-LYE"},"content":"public class Storage {","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"STELLA-LYE"},"content":" private final String STORAGE_PATH;","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"STELLA-LYE"},"content":" public Storage(String filePath) {","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"STELLA-LYE"},"content":" this.STORAGE_PATH \u003d \"/\" + filePath;","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"STELLA-LYE"},"content":" public void saveToFile(ArrayList\u003cTask\u003e tasksList) {","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"STELLA-LYE"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"STELLA-LYE"},"content":" String directory \u003d System.getProperty(\"user.dir\") + \"/data\";","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"STELLA-LYE"},"content":" File file \u003d new File(directory);","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"STELLA-LYE"},"content":" if (!file.exists()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"STELLA-LYE"},"content":" file.mkdir();","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"STELLA-LYE"},"content":" File saveFile \u003d new File(System.getProperty(\"user.dir\") + STORAGE_PATH);","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"STELLA-LYE"},"content":" FileWriter fw \u003d new FileWriter(saveFile, false);","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"STELLA-LYE"},"content":" for (Task task : tasksList) {","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"STELLA-LYE"},"content":" fw.write(task.toString() + \u0027\\n\u0027);","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"STELLA-LYE"},"content":" fw.close();","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"STELLA-LYE"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"STELLA-LYE"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"STELLA-LYE"},"content":" public ArrayList\u003cTask\u003e loadFromFile() throws FileNotFoundException {","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"STELLA-LYE"},"content":" ArrayList\u003cTask\u003e tasksList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"STELLA-LYE"},"content":" System.out.println(STORAGE_PATH);","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"STELLA-LYE"},"content":" String path \u003d System.getProperty(\"user.dir\") + STORAGE_PATH;","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"STELLA-LYE"},"content":" System.out.println(path);","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"STELLA-LYE"},"content":" File sourceFile \u003d new File(path);","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"STELLA-LYE"},"content":" if (!sourceFile.exists()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"STELLA-LYE"},"content":" return tasksList;","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"STELLA-LYE"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"STELLA-LYE"},"content":" return readFile(sourceFile);","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"STELLA-LYE"},"content":" public ArrayList\u003cTask\u003e readFile(File file) throws FileNotFoundException {","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"STELLA-LYE"},"content":" ArrayList\u003cTask\u003e tasksList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"STELLA-LYE"},"content":" Scanner sc \u003dnew Scanner(file);","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"STELLA-LYE"},"content":" while (sc.hasNext()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"STELLA-LYE"},"content":" String nextLine \u003d sc.nextLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":59,"author":{"gitId":"STELLA-LYE"},"content":" String[] actionArray \u003d nextLine.split(\"]\");","lastModifiedDate":"2024-01-30"},{"lineNumber":60,"author":{"gitId":"STELLA-LYE"},"content":" String[] actionNextArray \u003d actionArray[1].split(\":\");","lastModifiedDate":"2024-01-30"},{"lineNumber":61,"author":{"gitId":"STELLA-LYE"},"content":" String action \u003d actionNextArray[0].strip();","lastModifiedDate":"2024-01-30"},{"lineNumber":62,"author":{"gitId":"STELLA-LYE"},"content":" switch(action) {","lastModifiedDate":"2024-01-30"},{"lineNumber":63,"author":{"gitId":"STELLA-LYE"},"content":" case \"Todo\": {","lastModifiedDate":"2024-01-30"},{"lineNumber":64,"author":{"gitId":"STELLA-LYE"},"content":" String[] taskArray \u003d nextLine.split(\":\");","lastModifiedDate":"2024-01-30"},{"lineNumber":65,"author":{"gitId":"STELLA-LYE"},"content":" String task \u003d taskArray[1].strip();","lastModifiedDate":"2024-01-30"},{"lineNumber":66,"author":{"gitId":"STELLA-LYE"},"content":" Task savedTask \u003d new Todo(task);","lastModifiedDate":"2024-01-30"},{"lineNumber":67,"author":{"gitId":"STELLA-LYE"},"content":" if (nextLine.substring(1, 2).equals(\"X\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":68,"author":{"gitId":"STELLA-LYE"},"content":" savedTask.check();","lastModifiedDate":"2024-01-30"},{"lineNumber":69,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":70,"author":{"gitId":"STELLA-LYE"},"content":" tasksList.add(savedTask);","lastModifiedDate":"2024-01-30"},{"lineNumber":71,"author":{"gitId":"STELLA-LYE"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":72,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":73,"author":{"gitId":"STELLA-LYE"},"content":" case \"Deadline\": {","lastModifiedDate":"2024-01-30"},{"lineNumber":74,"author":{"gitId":"STELLA-LYE"},"content":" String[] frontTaskArray \u003d nextLine.split(\":\");","lastModifiedDate":"2024-01-30"},{"lineNumber":75,"author":{"gitId":"STELLA-LYE"},"content":" String[] backTaskArray \u003d frontTaskArray[1].split(\"\\\\[\");","lastModifiedDate":"2024-01-30"},{"lineNumber":76,"author":{"gitId":"STELLA-LYE"},"content":" String task \u003d backTaskArray[0].strip();","lastModifiedDate":"2024-01-30"},{"lineNumber":77,"author":{"gitId":"STELLA-LYE"},"content":" String[] frontByArray \u003d nextLine.split(\"\\\\[\");","lastModifiedDate":"2024-01-30"},{"lineNumber":78,"author":{"gitId":"STELLA-LYE"},"content":" String[] backByArray \u003d frontByArray[1].split(\"]\");","lastModifiedDate":"2024-01-30"},{"lineNumber":79,"author":{"gitId":"STELLA-LYE"},"content":" String by \u003d backByArray[0].strip();","lastModifiedDate":"2024-01-30"},{"lineNumber":80,"author":{"gitId":"STELLA-LYE"},"content":" LocalDate storageBy \u003d LocalDate.parse(by, DateTimeFormatter.ofPattern(\"MMM dd yyyy\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":81,"author":{"gitId":"STELLA-LYE"},"content":" String outputBy \u003d storageBy.format(DateTimeFormatter.ofPattern(\"yyyy-MM-dd\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":82,"author":{"gitId":"STELLA-LYE"},"content":" Task savedTask \u003d new Deadline(task, outputBy);","lastModifiedDate":"2024-01-30"},{"lineNumber":83,"author":{"gitId":"STELLA-LYE"},"content":" if (nextLine.substring(1, 2).equals(\"X\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":84,"author":{"gitId":"STELLA-LYE"},"content":" savedTask.check();","lastModifiedDate":"2024-01-30"},{"lineNumber":85,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":86,"author":{"gitId":"STELLA-LYE"},"content":" tasksList.add(savedTask);","lastModifiedDate":"2024-01-30"},{"lineNumber":87,"author":{"gitId":"STELLA-LYE"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":88,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":89,"author":{"gitId":"STELLA-LYE"},"content":" case \"Event\": {","lastModifiedDate":"2024-01-30"},{"lineNumber":90,"author":{"gitId":"STELLA-LYE"},"content":" String[] frontTaskArray \u003d nextLine.split(\":\");","lastModifiedDate":"2024-01-30"},{"lineNumber":91,"author":{"gitId":"STELLA-LYE"},"content":" String[] backTaskArray \u003d frontTaskArray[1].split(\"\\\\[\");","lastModifiedDate":"2024-01-30"},{"lineNumber":92,"author":{"gitId":"STELLA-LYE"},"content":" String task \u003d backTaskArray[0].strip();","lastModifiedDate":"2024-01-30"},{"lineNumber":93,"author":{"gitId":"STELLA-LYE"},"content":" String[] frontFromArray \u003d nextLine.substring(3).split(\"\\\\[\");","lastModifiedDate":"2024-01-30"},{"lineNumber":94,"author":{"gitId":"STELLA-LYE"},"content":" String[] backFromArray \u003d frontFromArray[1].split(\"-\");","lastModifiedDate":"2024-01-30"},{"lineNumber":95,"author":{"gitId":"STELLA-LYE"},"content":" String from \u003d backFromArray[0].strip();","lastModifiedDate":"2024-01-30"},{"lineNumber":96,"author":{"gitId":"STELLA-LYE"},"content":" String[] frontToArray \u003d nextLine.split(\"-\");","lastModifiedDate":"2024-01-30"},{"lineNumber":97,"author":{"gitId":"STELLA-LYE"},"content":" String[] backToArray \u003d frontToArray[1].split(\"]\");","lastModifiedDate":"2024-01-30"},{"lineNumber":98,"author":{"gitId":"STELLA-LYE"},"content":" String to \u003d backToArray[0].strip();","lastModifiedDate":"2024-01-30"},{"lineNumber":99,"author":{"gitId":"STELLA-LYE"},"content":" LocalDate storageFrom \u003d LocalDate.parse(from, DateTimeFormatter.ofPattern(\"MMM dd yyyy\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":100,"author":{"gitId":"STELLA-LYE"},"content":" String outputFrom \u003d storageFrom.format(DateTimeFormatter.ofPattern(\"yyyy-MM-dd\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":101,"author":{"gitId":"STELLA-LYE"},"content":" LocalDate storageTo \u003d LocalDate.parse(to, DateTimeFormatter.ofPattern(\"MMM dd yyyy\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":102,"author":{"gitId":"STELLA-LYE"},"content":" String outputTo \u003d storageTo.format(DateTimeFormatter.ofPattern(\"yyyy-MM-dd\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":103,"author":{"gitId":"STELLA-LYE"},"content":" Task savedTask \u003d new Event(task, outputFrom, outputTo);","lastModifiedDate":"2024-01-30"},{"lineNumber":104,"author":{"gitId":"STELLA-LYE"},"content":" if (nextLine.substring(1, 2).equals(\"X\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":105,"author":{"gitId":"STELLA-LYE"},"content":" savedTask.check();","lastModifiedDate":"2024-01-30"},{"lineNumber":106,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":107,"author":{"gitId":"STELLA-LYE"},"content":" tasksList.add(savedTask);","lastModifiedDate":"2024-01-30"},{"lineNumber":108,"author":{"gitId":"STELLA-LYE"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":109,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":110,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":111,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":112,"author":{"gitId":"STELLA-LYE"},"content":" return tasksList;","lastModifiedDate":"2024-01-30"},{"lineNumber":113,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":114,"author":{"gitId":"STELLA-LYE"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"STELLA-LYE":114}},{"path":"src/main/java/duke/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"STELLA-LYE"},"content":"package duke;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"STELLA-LYE"},"content":"import duke.task.Task;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"STELLA-LYE"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"STELLA-LYE"},"content":"public class TaskList {","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"STELLA-LYE"},"content":" public ArrayList\u003cTask\u003e tasksList;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"STELLA-LYE"},"content":" public TaskList() {","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"STELLA-LYE"},"content":" this.tasksList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"STELLA-LYE"},"content":" public TaskList(ArrayList\u003cTask\u003e tasksList) {","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"STELLA-LYE"},"content":" this.tasksList \u003d tasksList;","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"STELLA-LYE"},"content":" public ArrayList\u003cTask\u003e getList() {","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"STELLA-LYE"},"content":" return this.tasksList;","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"STELLA-LYE"},"content":" public void addToTaskList(Task task) {","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"STELLA-LYE"},"content":" this.tasksList.add(task);","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"STELLA-LYE"},"content":" public void deleteFromTaskList(int taskNum) {","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"STELLA-LYE"},"content":" this.tasksList.remove(taskNum - 1);","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"STELLA-LYE"},"content":" public void list() {","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"STELLA-LYE"},"content":" for (Task task: this.tasksList) {","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"STELLA-LYE"},"content":" System.out.println(task);","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"STELLA-LYE"},"content":" public void mark(int num) {","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"STELLA-LYE"},"content":" Task currTask \u003d this.tasksList.get(num - 1);","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"STELLA-LYE"},"content":" currTask.check();","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"STELLA-LYE"},"content":" this.tasksList.set(num - 1, currTask);","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"STELLA-LYE"},"content":" public void unMark(int num) {","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"STELLA-LYE"},"content":" Task currTask \u003d this.tasksList.get(num - 1);","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"STELLA-LYE"},"content":" currTask.uncheck();","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"STELLA-LYE"},"content":" this.tasksList.set(num - 1, currTask);","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"STELLA-LYE"},"content":" public Task get(int num) {","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"STELLA-LYE"},"content":" return this.tasksList.get(num - 1);","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"STELLA-LYE"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"STELLA-LYE":49}},{"path":"src/main/java/duke/TextUi.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"STELLA-LYE"},"content":"package duke;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"STELLA-LYE"},"content":"import duke.task.Task;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"STELLA-LYE"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"STELLA-LYE"},"content":"public class TextUi {","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"STELLA-LYE"},"content":" private final static String BORDER \u003d \"***************************\";","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"STELLA-LYE"},"content":" private final static String DASH \u003d \"___________________________\";","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"STELLA-LYE"},"content":" private final static String LOGO \u003d \"Current no available Logo\";","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"STELLA-LYE"},"content":" private final static String USER_INSTRUCTION \u003d \"\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"STELLA-LYE"},"content":" \"TODO : Adds a task to task list [ Format : TODO_\u003cTASK_DESCRIPTION\u003e ]\" + \u0027\\n\u0027 +","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"STELLA-LYE"},"content":" \"LIST : List ALL tasks from task list [ Format : LIST ]\" + \u0027\\n\u0027 +","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"STELLA-LYE"},"content":" \"MARK/UNMARK : Mark/Unmark a task from the task list [ Format : MARK/UNMARK_\u003cTask Number\u003e ]\" + \u0027\\n\u0027 +","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"STELLA-LYE"},"content":" \"EVENT : Adds an event from and to with specific date and time\" + \u0027\\n\u0027 +","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"STELLA-LYE"},"content":" \" [ Format : EVENT_\u003cEVENT_DESCRIPTION\u003e_/\u003cDATE_TIME_FROM\u003e_/\u003cDATE_TIME_TO\u003e ] ( DATE_TIME \u003d YYYY-MM-DD HHMM )\" + \u0027\\n\u0027 +","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"STELLA-LYE"},"content":" \"DEADLINE : Adds a task with a deadline at specific date and time\" + \u0027\\n\u0027 +","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"STELLA-LYE"},"content":" \" [ Format : DEADLINE_\u003cTASK_DESCRIPTION\u003e_/\u003cDATE_TIME_BY\u003e ( DATE_TIME \u003d YYYY-MM-DD HHMM )\" + \u0027\\n\u0027 +","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"STELLA-LYE"},"content":" \"DELETE : Remove task from task list [ Format : DELETE_\u003cTASK_NUMBER\u003e ]\" +\u0027\\n\u0027 +","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"STELLA-LYE"},"content":" \"BYE : Exits the app\" + \u0027\\n\u0027 +","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"STELLA-LYE"},"content":" DASH + \u0027\\n\u0027 ;","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"STELLA-LYE"},"content":" private final static String ADD_TASK_MESSAGE \u003d \"Nice! I\u0027ve added this task to your task list :\" ;","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"STELLA-LYE"},"content":" private final static String MARK_TASK_MESSAGE \u003d \"Well Done!!! I\u0027ve marked this task as done :\";","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"STELLA-LYE"},"content":" private final static String UNMARK_TASK_MESSAGE \u003d \"Alright. I\u0027ve marked this task as undone :\";","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"STELLA-LYE"},"content":" private final static String DELETE_TASK_MESSAGE \u003d \"NOTED. I\u0027ve removed this task from your task list :\";","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"STELLA-LYE"},"content":" public void showGreetMessage() {","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"STELLA-LYE"},"content":" System.out.println( BORDER + \u0027\\n\u0027 +","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"STELLA-LYE"},"content":" LOGO + \u0027\\n\u0027 + \u0027\\n\u0027 +","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"STELLA-LYE"},"content":" \"------WELCOME !!!------\" + \u0027\\n\u0027 +","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"STELLA-LYE"},"content":" \"I am Panda, your personal task manager. How may I assist you today?\" + \u0027\\n\u0027 + \u0027\\n\u0027 +","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"STELLA-LYE"},"content":" USER_INSTRUCTION);","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"STELLA-LYE"},"content":" public String readUserCommand() {","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"STELLA-LYE"},"content":" Scanner sc \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"STELLA-LYE"},"content":" System.out.println(BORDER);","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"STELLA-LYE"},"content":" System.out.println(\"Enter Commands :\");","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"STELLA-LYE"},"content":" String userCommand \u003d sc.nextLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"STELLA-LYE"},"content":" System.out.println(BORDER);","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"STELLA-LYE"},"content":" return userCommand;","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"STELLA-LYE"},"content":" public void showTotalCountMessage(TaskList taskList) {","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"STELLA-LYE"},"content":" System.out.println(\"Now you have \" + taskList.getList().size() + \" tasks in your task list.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"STELLA-LYE"},"content":" public void showAddTaskMessage(Task task) {","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"STELLA-LYE"},"content":" System.out.println(BORDER + \u0027\\n\u0027 +","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"STELLA-LYE"},"content":" ADD_TASK_MESSAGE + \u0027\\n\u0027 +","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"STELLA-LYE"},"content":" task);","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"STELLA-LYE"},"content":" public void showMarkTaskMessage(Task task) {","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"STELLA-LYE"},"content":" System.out.println(BORDER + \u0027\\n\u0027 +","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"STELLA-LYE"},"content":" MARK_TASK_MESSAGE + \u0027\\n\u0027 +","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"STELLA-LYE"},"content":" task + \u0027\\n\u0027 +","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"STELLA-LYE"},"content":" BORDER);","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"STELLA-LYE"},"content":" public void showUnmarkTaskMessage(Task task) {","lastModifiedDate":"2024-01-30"},{"lineNumber":59,"author":{"gitId":"STELLA-LYE"},"content":" System.out.println(BORDER + \u0027\\n\u0027 +","lastModifiedDate":"2024-01-30"},{"lineNumber":60,"author":{"gitId":"STELLA-LYE"},"content":" UNMARK_TASK_MESSAGE + \u0027\\n\u0027 +","lastModifiedDate":"2024-01-30"},{"lineNumber":61,"author":{"gitId":"STELLA-LYE"},"content":" task + \u0027\\n\u0027 +","lastModifiedDate":"2024-01-30"},{"lineNumber":62,"author":{"gitId":"STELLA-LYE"},"content":" BORDER);","lastModifiedDate":"2024-01-30"},{"lineNumber":63,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":64,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":65,"author":{"gitId":"STELLA-LYE"},"content":" public void showDeleteTaskMessage(Task task) {","lastModifiedDate":"2024-01-30"},{"lineNumber":66,"author":{"gitId":"STELLA-LYE"},"content":" System.out.println(BORDER + \u0027\\n\u0027 +","lastModifiedDate":"2024-01-30"},{"lineNumber":67,"author":{"gitId":"STELLA-LYE"},"content":" DELETE_TASK_MESSAGE + \u0027\\n\u0027 +","lastModifiedDate":"2024-01-30"},{"lineNumber":68,"author":{"gitId":"STELLA-LYE"},"content":" task);","lastModifiedDate":"2024-01-30"},{"lineNumber":69,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":70,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":71,"author":{"gitId":"STELLA-LYE"},"content":" public void showTaskList(TaskList taskslist) {","lastModifiedDate":"2024-01-30"},{"lineNumber":72,"author":{"gitId":"STELLA-LYE"},"content":" System.out.println(BORDER);","lastModifiedDate":"2024-01-30"},{"lineNumber":73,"author":{"gitId":"STELLA-LYE"},"content":" taskslist.list();","lastModifiedDate":"2024-01-30"},{"lineNumber":74,"author":{"gitId":"STELLA-LYE"},"content":" System.out.println(BORDER);","lastModifiedDate":"2024-01-30"},{"lineNumber":75,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":76,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":77,"author":{"gitId":"STELLA-LYE"},"content":" public void showLoadingError() {","lastModifiedDate":"2024-01-30"},{"lineNumber":78,"author":{"gitId":"STELLA-LYE"},"content":" System.out.println(\"There is no existing file in your computer.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":79,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":80,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":81,"author":{"gitId":"STELLA-LYE"},"content":" public void showErrorMessage(String m) {","lastModifiedDate":"2024-01-30"},{"lineNumber":82,"author":{"gitId":"STELLA-LYE"},"content":" System.out.println(m);","lastModifiedDate":"2024-01-30"},{"lineNumber":83,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":84,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":85,"author":{"gitId":"STELLA-LYE"},"content":" public void showExitMessage() {","lastModifiedDate":"2024-01-30"},{"lineNumber":86,"author":{"gitId":"STELLA-LYE"},"content":" System.out.println(BORDER);","lastModifiedDate":"2024-01-30"},{"lineNumber":87,"author":{"gitId":"STELLA-LYE"},"content":" System.out.println(\"It\u0027s great working with you! See you again soon. BYE!!!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":88,"author":{"gitId":"STELLA-LYE"},"content":" System.out.println(BORDER);","lastModifiedDate":"2024-01-30"},{"lineNumber":89,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":90,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":91,"author":{"gitId":"STELLA-LYE"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"STELLA-LYE":91}},{"path":"src/main/java/duke/command/ByeCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"STELLA-LYE"},"content":"package duke.command;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"STELLA-LYE"},"content":"import duke.Storage;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"STELLA-LYE"},"content":"import duke.TaskList;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"STELLA-LYE"},"content":"import duke.TextUi;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"STELLA-LYE"},"content":"public class ByeCommand extends Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"STELLA-LYE"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"STELLA-LYE"},"content":" public void execute(TaskList tasksList, TextUi ui, Storage storage) {","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"STELLA-LYE"},"content":" ui.showExitMessage();","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"STELLA-LYE"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"STELLA-LYE"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"STELLA-LYE"},"content":" return true;","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"STELLA-LYE"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"STELLA-LYE":18}},{"path":"src/main/java/duke/command/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"STELLA-LYE"},"content":"package duke.command;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"STELLA-LYE"},"content":"import duke.TaskList;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"STELLA-LYE"},"content":"import duke.TextUi;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"STELLA-LYE"},"content":"import duke.Storage;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"STELLA-LYE"},"content":"import duke.DukeException;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"STELLA-LYE"},"content":"public abstract class Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"STELLA-LYE"},"content":" public abstract void execute(TaskList tasks, TextUi ui, Storage storage) throws DukeException;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"STELLA-LYE"},"content":" public abstract boolean isExit();","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"STELLA-LYE"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"STELLA-LYE":10}},{"path":"src/main/java/duke/command/DeadlineCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"STELLA-LYE"},"content":"package duke.command;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"STELLA-LYE"},"content":"import duke.Storage;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"STELLA-LYE"},"content":"import duke.TaskList;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"STELLA-LYE"},"content":"import duke.TextUi;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"STELLA-LYE"},"content":"import duke.task.Task;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"STELLA-LYE"},"content":"import duke.task.Deadline;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"STELLA-LYE"},"content":"import java.util.*;","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"STELLA-LYE"},"content":"public class DeadlineCommand extends Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"STELLA-LYE"},"content":" private final String DETAILS;","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"STELLA-LYE"},"content":" public DeadlineCommand(String detail) {","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"STELLA-LYE"},"content":" this.DETAILS \u003d detail;","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"STELLA-LYE"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"STELLA-LYE"},"content":" public void execute(TaskList tasksList, TextUi ui, Storage storage) {","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"STELLA-LYE"},"content":" String[] detailArray \u003d DETAILS.split(\"/\");","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"STELLA-LYE"},"content":" System.out.println(DETAILS);","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"STELLA-LYE"},"content":" System.out.println(Arrays.toString(detailArray));","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"STELLA-LYE"},"content":" String description \u003d detailArray[0].strip();","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"STELLA-LYE"},"content":" String by \u003d detailArray[1].strip();","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"STELLA-LYE"},"content":" Task deadline \u003d new Deadline(description, by);","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"STELLA-LYE"},"content":" tasksList.addToTaskList(deadline);","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"STELLA-LYE"},"content":" ui.showAddTaskMessage(deadline);","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"STELLA-LYE"},"content":" storage.saveToFile(tasksList.getList());","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"STELLA-LYE"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"STELLA-LYE"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"STELLA-LYE"},"content":" return false;","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"STELLA-LYE"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"STELLA-LYE":34}},{"path":"src/main/java/duke/command/DeleteCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"STELLA-LYE"},"content":"package duke.command;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"STELLA-LYE"},"content":"import duke.Storage;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"STELLA-LYE"},"content":"import duke.TaskList;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"STELLA-LYE"},"content":"import duke.TextUi;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"STELLA-LYE"},"content":"import duke.task.Task;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"STELLA-LYE"},"content":"public class DeleteCommand extends Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"STELLA-LYE"},"content":" private final int TASK_NUM;","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"STELLA-LYE"},"content":" public DeleteCommand(String num) {","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"STELLA-LYE"},"content":" this.TASK_NUM \u003d Integer.parseInt(num);","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"STELLA-LYE"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"STELLA-LYE"},"content":" public void execute(TaskList tasksList, TextUi ui, Storage storage) {","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"STELLA-LYE"},"content":" Task deletedTask \u003d tasksList.get(TASK_NUM);","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"STELLA-LYE"},"content":" tasksList.deleteFromTaskList(TASK_NUM);","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"STELLA-LYE"},"content":" ui.showDeleteTaskMessage(deletedTask);","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"STELLA-LYE"},"content":" storage.saveToFile(tasksList.getList());","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"STELLA-LYE"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"STELLA-LYE"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"STELLA-LYE"},"content":" return false;","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"STELLA-LYE"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"STELLA-LYE":27}},{"path":"src/main/java/duke/command/EventCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"STELLA-LYE"},"content":"package duke.command;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"STELLA-LYE"},"content":"import duke.Storage;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"STELLA-LYE"},"content":"import duke.TaskList;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"STELLA-LYE"},"content":"import duke.TextUi;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"STELLA-LYE"},"content":"import duke.task.Task;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"STELLA-LYE"},"content":"import duke.task.Event;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"STELLA-LYE"},"content":"public class EventCommand extends Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"STELLA-LYE"},"content":" private final String DETAILS;","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"STELLA-LYE"},"content":" public EventCommand(String details) {","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"STELLA-LYE"},"content":" this.DETAILS \u003d details;","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"STELLA-LYE"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"STELLA-LYE"},"content":" public void execute(TaskList tasksList, TextUi ui, Storage storage) {","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"STELLA-LYE"},"content":" String[] detailArray \u003d DETAILS.split(\"/\");","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"STELLA-LYE"},"content":" String description \u003d detailArray[0].strip();","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"STELLA-LYE"},"content":" String from \u003d detailArray[1].strip();","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"STELLA-LYE"},"content":" String to \u003d detailArray[1].strip();","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"STELLA-LYE"},"content":" System.out.println(from);","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"STELLA-LYE"},"content":" Task event \u003d new Event(description, from, to);","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"STELLA-LYE"},"content":" tasksList.addToTaskList(event);","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"STELLA-LYE"},"content":" ui.showAddTaskMessage(event);","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"STELLA-LYE"},"content":" storage.saveToFile(tasksList.getList());","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"STELLA-LYE"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"STELLA-LYE"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"STELLA-LYE"},"content":" return false;","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"STELLA-LYE"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"STELLA-LYE":33}},{"path":"src/main/java/duke/command/ListCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"STELLA-LYE"},"content":"package duke.command;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"STELLA-LYE"},"content":"import duke.Storage;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"STELLA-LYE"},"content":"import duke.TaskList;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"STELLA-LYE"},"content":"import duke.TextUi;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"STELLA-LYE"},"content":"public class ListCommand extends Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"STELLA-LYE"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"STELLA-LYE"},"content":" public void execute(TaskList tasksList, TextUi ui, Storage storage) {","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"STELLA-LYE"},"content":" if (tasksList.getList().isEmpty()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"STELLA-LYE"},"content":" System.out.println(\"Your task list empty, add something today!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"STELLA-LYE"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"STELLA-LYE"},"content":" ui.showTaskList(tasksList);","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"STELLA-LYE"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"STELLA-LYE"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"STELLA-LYE"},"content":" return false;","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"STELLA-LYE"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"STELLA-LYE":22}},{"path":"src/main/java/duke/command/MarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"STELLA-LYE"},"content":"package duke.command;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"STELLA-LYE"},"content":"import duke.DukeException;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"STELLA-LYE"},"content":"import duke.Storage;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"STELLA-LYE"},"content":"import duke.TaskList;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"STELLA-LYE"},"content":"import duke.TextUi;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"STELLA-LYE"},"content":"import duke.task.Task;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"STELLA-LYE"},"content":"public class MarkCommand extends Command{","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"STELLA-LYE"},"content":" private final int TASK_NUM;","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"STELLA-LYE"},"content":" public MarkCommand(String taskNum) {","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"STELLA-LYE"},"content":" this.TASK_NUM \u003d Integer.parseInt(taskNum);","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"STELLA-LYE"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"STELLA-LYE"},"content":" public void execute(TaskList tasksList, TextUi ui, Storage storage) throws DukeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"STELLA-LYE"},"content":" if (TASK_NUM \u003c\u003d 0 | TASK_NUM \u003e tasksList.getList().size()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"STELLA-LYE"},"content":" throw new DukeException(\"Invalid task number -.-!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"STELLA-LYE"},"content":" tasksList.mark(TASK_NUM);","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"STELLA-LYE"},"content":" Task markedTask \u003d tasksList.get(TASK_NUM);","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"STELLA-LYE"},"content":" ui.showMarkTaskMessage(markedTask);","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"STELLA-LYE"},"content":" storage.saveToFile(tasksList.getList());","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"STELLA-LYE"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"STELLA-LYE"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"STELLA-LYE"},"content":" return false;","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"STELLA-LYE"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"STELLA-LYE":32}},{"path":"src/main/java/duke/command/TodoCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"STELLA-LYE"},"content":"package duke.command;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"STELLA-LYE"},"content":"import duke.DukeException;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"STELLA-LYE"},"content":"import duke.Storage;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"STELLA-LYE"},"content":"import duke.TaskList;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"STELLA-LYE"},"content":"import duke.TextUi;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"STELLA-LYE"},"content":"import duke.task.Todo;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"STELLA-LYE"},"content":"import duke.task.Task;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"STELLA-LYE"},"content":"public class TodoCommand extends Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"STELLA-LYE"},"content":" private final String DETAIL;","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"STELLA-LYE"},"content":" public TodoCommand(String taskDetails) {","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"STELLA-LYE"},"content":" this.DETAIL \u003d taskDetails;","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"STELLA-LYE"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"STELLA-LYE"},"content":" public void execute(TaskList tasksList, TextUi ui, Storage storage) throws DukeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"STELLA-LYE"},"content":" Task todo \u003d new Todo(DETAIL);","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"STELLA-LYE"},"content":" tasksList.addToTaskList(todo);","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"STELLA-LYE"},"content":" storage.saveToFile(tasksList.getList());","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"STELLA-LYE"},"content":" ui.showAddTaskMessage(todo);","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"STELLA-LYE"},"content":" ui.showTotalCountMessage(tasksList);","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"STELLA-LYE"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"STELLA-LYE"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"STELLA-LYE"},"content":" return false;","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"STELLA-LYE"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"STELLA-LYE":29}},{"path":"src/main/java/duke/command/UnmarkedCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"STELLA-LYE"},"content":"package duke.command;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"STELLA-LYE"},"content":"import duke.DukeException;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"STELLA-LYE"},"content":"import duke.Storage;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"STELLA-LYE"},"content":"import duke.TaskList;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"STELLA-LYE"},"content":"import duke.TextUi;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"STELLA-LYE"},"content":"import duke.task.Task;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"STELLA-LYE"},"content":"class UnmarkCommand extends Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"STELLA-LYE"},"content":" private final int TASK_NUM;","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"STELLA-LYE"},"content":" public UnmarkCommand(String taskNum) {","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"STELLA-LYE"},"content":" this.TASK_NUM \u003d Integer.parseInt(taskNum);","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"STELLA-LYE"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"STELLA-LYE"},"content":" public void execute(TaskList tasksList, TextUi ui, Storage storage) throws DukeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"STELLA-LYE"},"content":" if (TASK_NUM \u003c\u003d 0 | TASK_NUM \u003e tasksList.getList().size()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"STELLA-LYE"},"content":" throw new DukeException(\"Invalid task number -.-!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"STELLA-LYE"},"content":" tasksList.unMark(TASK_NUM);","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"STELLA-LYE"},"content":" Task unMarkedTask \u003d tasksList.get(TASK_NUM);","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"STELLA-LYE"},"content":" ui.showUnmarkTaskMessage(unMarkedTask);","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"STELLA-LYE"},"content":" storage.saveToFile(tasksList.getList());","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"STELLA-LYE"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"STELLA-LYE"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"STELLA-LYE"},"content":" return false;","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"STELLA-LYE"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"STELLA-LYE":32}},{"path":"src/main/java/duke/task/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"STELLA-LYE"},"content":"package duke.task;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"STELLA-LYE"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"STELLA-LYE"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"STELLA-LYE"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"STELLA-LYE"},"content":" //private final static Pattern OUTPUT_DATE_PATTERN \u003d Pattern.compile(\"^\\\\d{4}-\\\\d{2}-\\\\d{2}$\"); //In yyyy-MM-dd","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"STELLA-LYE"},"content":" //private final static Pattern STORAGE_DATE_PATTERN \u003d Pattern.compile(\"^\\\\w{3} \\\\d{2} \\\\d{4}$\"); //In MMM dd yyyy","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"STELLA-LYE"},"content":" private final static String OUTPUT_DATE_FORMAT \u003d \"yyyy-MM-dd\" ;","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"STELLA-LYE"},"content":" private final static String STORAGE_DATE_FORMAT \u003d \"MMM dd yyyy\" ;","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"STELLA-LYE"},"content":" protected String date;","lastModifiedDate":"2024-01-26"},{"lineNumber":13,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":14,"author":{"gitId":"STELLA-LYE"},"content":" public Deadline(String description, String endDate) {","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"STELLA-LYE"},"content":" super(description);","lastModifiedDate":"2024-01-26"},{"lineNumber":16,"author":{"gitId":"STELLA-LYE"},"content":" this.date \u003d LocalDate.parse(endDate, DateTimeFormatter.ofPattern(OUTPUT_DATE_FORMAT)).format(DateTimeFormatter.ofPattern(STORAGE_DATE_FORMAT));","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":18,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":19,"author":{"gitId":"STELLA-LYE"},"content":" @Override","lastModifiedDate":"2024-01-26"},{"lineNumber":20,"author":{"gitId":"STELLA-LYE"},"content":" public String toString() {","lastModifiedDate":"2024-01-26"},{"lineNumber":21,"author":{"gitId":"STELLA-LYE"},"content":" return super.toString() + \" Deadline : \" + this.description + \" [ \" + this.date + \" ]\";","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":23,"author":{"gitId":"STELLA-LYE"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"STELLA-LYE":23}},{"path":"src/main/java/duke/task/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"STELLA-LYE"},"content":"package duke.task;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"STELLA-LYE"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"STELLA-LYE"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"STELLA-LYE"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"STELLA-LYE"},"content":" private final static String OUTPUT_DATE_FORMAT \u003d \"yyyy-MM-dd\" ;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"STELLA-LYE"},"content":" private final static String STORAGE_DATE_FORMAT \u003d \"MMM dd yyyy\" ;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"STELLA-LYE"},"content":" protected String dateStart;","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"STELLA-LYE"},"content":" protected String dateEnd;","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":12,"author":{"gitId":"STELLA-LYE"},"content":" public Event(String description, String dateStart, String dateEnd) {","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"STELLA-LYE"},"content":" super(description);","lastModifiedDate":"2024-01-26"},{"lineNumber":14,"author":{"gitId":"STELLA-LYE"},"content":" this.dateStart \u003d LocalDate.parse(dateStart, DateTimeFormatter.ofPattern(OUTPUT_DATE_FORMAT)).format(DateTimeFormatter.ofPattern(STORAGE_DATE_FORMAT));","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"STELLA-LYE"},"content":" this.dateEnd \u003d LocalDate.parse(dateEnd, DateTimeFormatter.ofPattern(OUTPUT_DATE_FORMAT)).format(DateTimeFormatter.ofPattern(STORAGE_DATE_FORMAT));","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":17,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":18,"author":{"gitId":"STELLA-LYE"},"content":" @Override","lastModifiedDate":"2024-01-26"},{"lineNumber":19,"author":{"gitId":"STELLA-LYE"},"content":" public String toString() {","lastModifiedDate":"2024-01-26"},{"lineNumber":20,"author":{"gitId":"STELLA-LYE"},"content":" return super.toString() + \" Event : \" + this.description + \" [ \" + this.dateStart +","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"STELLA-LYE"},"content":" \" - \" + this.dateEnd + \" ]\";","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":23,"author":{"gitId":"STELLA-LYE"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"STELLA-LYE":23}},{"path":"src/main/java/duke/task/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"STELLA-LYE"},"content":"package duke.task;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"STELLA-LYE"},"content":"public class Task {","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"STELLA-LYE"},"content":" protected String description;","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"STELLA-LYE"},"content":" protected boolean isDone;","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"STELLA-LYE"},"content":" public Task(String description) {","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"STELLA-LYE"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"STELLA-LYE"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":12,"author":{"gitId":"STELLA-LYE"},"content":" //mark X on done tasks","lastModifiedDate":"2024-01-26"},{"lineNumber":13,"author":{"gitId":"STELLA-LYE"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-01-26"},{"lineNumber":14,"author":{"gitId":"STELLA-LYE"},"content":" return (isDone ? \"X\" : \" \");","lastModifiedDate":"2024-01-26"},{"lineNumber":15,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":16,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":17,"author":{"gitId":"STELLA-LYE"},"content":" public void check() {","lastModifiedDate":"2024-01-26"},{"lineNumber":18,"author":{"gitId":"STELLA-LYE"},"content":" this.isDone \u003d true;","lastModifiedDate":"2024-01-26"},{"lineNumber":19,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":20,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":21,"author":{"gitId":"STELLA-LYE"},"content":" public void uncheck() {","lastModifiedDate":"2024-01-26"},{"lineNumber":22,"author":{"gitId":"STELLA-LYE"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-26"},{"lineNumber":23,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":24,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":25,"author":{"gitId":"STELLA-LYE"},"content":" @Override","lastModifiedDate":"2024-01-26"},{"lineNumber":26,"author":{"gitId":"STELLA-LYE"},"content":" public String toString() {","lastModifiedDate":"2024-01-26"},{"lineNumber":27,"author":{"gitId":"STELLA-LYE"},"content":" return \"[\" + this.getStatusIcon() + \"]\";","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":29,"author":{"gitId":"STELLA-LYE"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"STELLA-LYE":29}},{"path":"src/main/java/duke/task/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"STELLA-LYE"},"content":"package duke.task;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"STELLA-LYE"},"content":"public class Todo extends Task {","lastModifiedDate":"2024-01-26"},{"lineNumber":3,"author":{"gitId":"STELLA-LYE"},"content":" public Todo(String description) {","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"STELLA-LYE"},"content":" super(description);","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"STELLA-LYE"},"content":" @Override","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"STELLA-LYE"},"content":" public String toString() {","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"STELLA-LYE"},"content":" return super.toString() + \" Todo : \" + this.description;","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"STELLA-LYE"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"STELLA-LYE":11}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"STELLA-LYE"},"content":"todo read book","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"STELLA-LYE"},"content":"deadline return book /by Monday","lastModifiedDate":"2024-01-26"},{"lineNumber":3,"author":{"gitId":"STELLA-LYE"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"STELLA-LYE"},"content":"todo join sports club","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"STELLA-LYE"},"content":"todo borrow book","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"STELLA-LYE"},"content":"list","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"STELLA-LYE"},"content":"mark 1","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"STELLA-LYE"},"content":"mark 4","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"STELLA-LYE"},"content":"list","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"STELLA-LYE"},"content":"unmark 1","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"STELLA-LYE"},"content":"list","lastModifiedDate":"2024-01-26"},{"lineNumber":12,"author":{"gitId":"STELLA-LYE"},"content":"delete 1","lastModifiedDate":"2024-01-26"},{"lineNumber":13,"author":{"gitId":"STELLA-LYE"},"content":"todo","lastModifiedDate":"2024-01-26"},{"lineNumber":14,"author":{"gitId":"STELLA-LYE"},"content":"delete4","lastModifiedDate":"2024-01-26"},{"lineNumber":15,"author":{"gitId":"STELLA-LYE"},"content":"mark 1","lastModifiedDate":"2024-01-26"},{"lineNumber":16,"author":{"gitId":"STELLA-LYE"},"content":"list","lastModifiedDate":"2024-01-26"},{"lineNumber":17,"author":{"gitId":"STELLA-LYE"},"content":"bye","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"STELLA-LYE":17}}] diff --git a/STELLA-LYE_ip_master/commits.json b/STELLA-LYE_ip_master/commits.json index 23d25742..2b67b556 100644 --- a/STELLA-LYE_ip_master/commits.json +++ b/STELLA-LYE_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"STELLA-LYE":[{"date":"2024-01-26","commitResults":[{"hash":"72db2d9faad51054c396ff1deec920e81d66e948","isMergeCommit":false,"messageTitle":"Added Level 0","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"txt":{"insertions":17,"deletions":0},"java":{"insertions":20,"deletions":6}}},{"hash":"aa4bf8eac5ecc85ef10f7870d8e7b75cddf50fc8","isMergeCommit":false,"messageTitle":"Added Level 1","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":6,"deletions":2}}},{"hash":"24330f3a6648a2c4f6ccd8cca9e6bf6ed3067fc1","isMergeCommit":false,"messageTitle":"Added Level 2","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":52,"deletions":0}}},{"hash":"d44c2c68c5e0b1abc6f6fabb44791159e65e5430","isMergeCommit":false,"messageTitle":"Added Level 3","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":31,"deletions":0}}},{"hash":"ac5bcaab11a0a3c84900de9f9af1446e4362c583","isMergeCommit":false,"messageTitle":"Added Level 4","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":90,"deletions":6}}},{"hash":"45945163cd960b0b7eb84573675f74f1afc4f10f","isMergeCommit":false,"messageTitle":"Added A-TextUiTesting","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":1}}},{"hash":"a59b3af0f74baa253d4b2f31d399c02613997896","isMergeCommit":false,"messageTitle":"Level-5","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":3}}},{"hash":"b33cadcf60204e26eac11e5c03c63b15b81ab7eb","isMergeCommit":false,"messageTitle":"Added Level-6","messageBody":"","tags":["Level-8","Level-7","Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":12,"deletions":0}}}]},{"date":"2024-01-29","commitResults":[{"hash":"c489adacf81eaa7eb13ba7b296f1d0703ad2965f","isMergeCommit":false,"messageTitle":"Added Level-7","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":73,"deletions":5}}},{"hash":"75a8e78a538e80becbde326dd9e7c9aa3608a8e0","isMergeCommit":false,"messageTitle":"Updated Level-7","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"641206eafdc06a909d9fa15d9d532ccc94732ecc","isMergeCommit":false,"messageTitle":"Updated2 Level-7","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}}]}]},"authorFileTypeContributionMap":{"STELLA-LYE":{"java":282,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":0,"txt":17}},"authorContributionVariance":{"STELLA-LYE":5831.7847},"authorDisplayNameMap":{"STELLA-LYE":"CS2103T-W10-4 STEL..I YU"}} +{"authorDailyContributionsMap":{"STELLA-LYE":[{"date":"2024-01-26","commitResults":[{"hash":"72db2d9faad51054c396ff1deec920e81d66e948","isMergeCommit":false,"messageTitle":"Added Level 0","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"txt":{"insertions":17,"deletions":0},"java":{"insertions":20,"deletions":6}}},{"hash":"aa4bf8eac5ecc85ef10f7870d8e7b75cddf50fc8","isMergeCommit":false,"messageTitle":"Added Level 1","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":6,"deletions":2}}},{"hash":"24330f3a6648a2c4f6ccd8cca9e6bf6ed3067fc1","isMergeCommit":false,"messageTitle":"Added Level 2","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":52,"deletions":0}}},{"hash":"d44c2c68c5e0b1abc6f6fabb44791159e65e5430","isMergeCommit":false,"messageTitle":"Added Level 3","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":31,"deletions":0}}},{"hash":"ac5bcaab11a0a3c84900de9f9af1446e4362c583","isMergeCommit":false,"messageTitle":"Added Level 4","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":90,"deletions":6}}},{"hash":"45945163cd960b0b7eb84573675f74f1afc4f10f","isMergeCommit":false,"messageTitle":"Added A-TextUiTesting","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":1}}},{"hash":"a59b3af0f74baa253d4b2f31d399c02613997896","isMergeCommit":false,"messageTitle":"Level-5","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":3}}},{"hash":"b33cadcf60204e26eac11e5c03c63b15b81ab7eb","isMergeCommit":false,"messageTitle":"Added Level-6","messageBody":"","tags":["Level-8","Level-7","Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":12,"deletions":0}}}]},{"date":"2024-01-29","commitResults":[{"hash":"c489adacf81eaa7eb13ba7b296f1d0703ad2965f","isMergeCommit":false,"messageTitle":"Added Level-7","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":73,"deletions":5}}},{"hash":"75a8e78a538e80becbde326dd9e7c9aa3608a8e0","isMergeCommit":false,"messageTitle":"Updated Level-7","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"641206eafdc06a909d9fa15d9d532ccc94732ecc","isMergeCommit":false,"messageTitle":"Updated2 Level-7","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"6b437ca48fc712d255232726de47dd31df1e3af2","isMergeCommit":false,"messageTitle":"Added Level-8","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":89,"deletions":15}}},{"hash":"1fd4c32587db3cb745ce1bd6986fd1e787e38531","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-Level-8","messageBody":"Merge branch-Level-8 with master\n","fileTypesAndContributionMap":{}}]},{"date":"2024-01-30","commitResults":[{"hash":"97304eeaf7faaa65fee4f61bf4288e4b39599cf2","isMergeCommit":false,"messageTitle":"Added A-MoreOOP","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{"java":{"insertions":478,"deletions":15}}},{"hash":"17cdc2da195e31a6c8864d48b45a45b931b9615e","isMergeCommit":false,"messageTitle":"Added A-Packages","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":171,"deletions":233}}},{"hash":"5d28b3eb149c7749776d51a246ae7901a661794f","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-Packages\u0027","messageBody":"A-Packages\n","tags":["A-Packages"],"fileTypesAndContributionMap":{}},{"hash":"6c8d0ae094a3412af2e0dff5468a8a0ed8598127","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into add-gradle-support","messageBody":"A-Gradle\n","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"STELLA-LYE":{"java":695,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":0,"txt":17}},"authorContributionVariance":{"STELLA-LYE":63066.5},"authorDisplayNameMap":{"STELLA-LYE":"CS2103T-W10-4 STEL..I YU"}} diff --git a/SherwynNg_ip_master/authorship.json b/SherwynNg_ip_master/authorship.json index e988c27b..fd4a9c06 100644 --- a/SherwynNg_ip_master/authorship.json +++ b/SherwynNg_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"SherwynNg"},"content":"public class Deadline extends Task{","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"SherwynNg"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"SherwynNg"},"content":" protected String by;","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"SherwynNg"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"SherwynNg"},"content":" public Deadline(String description, String by) {","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"SherwynNg"},"content":" super(description);","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"SherwynNg"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"SherwynNg"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"SherwynNg"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"SherwynNg"},"content":" public String toString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"SherwynNg"},"content":" return \"[D]\" + super.toString() + \"(by:\" + by + \")\";","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"SherwynNg"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"SherwynNg"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"SherwynNg":13}},{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"SherwynNg"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"SherwynNg"},"content":"import java.io.InputStreamReader;","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"SherwynNg"},"content":"import java.io.BufferedReader;","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"SherwynNg"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":6,"author":{"gitId":"SherwynNg"},"content":" public static void main(String[] args) throws IOException {","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"SherwynNg"},"content":" BufferedReader br \u003d new BufferedReader(new InputStreamReader(System.in));","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"SherwynNg"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"SherwynNg"},"content":" System.out.println(\"Hello! I\u0027m AcademicWeapon\");","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"SherwynNg"},"content":" System.out.println(\"What can I do for you?\");","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"SherwynNg"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"SherwynNg"},"content":" String action;","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"SherwynNg"},"content":" ArrayList\u003cTask\u003e lst \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"SherwynNg"},"content":" do {","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"SherwynNg"},"content":" String input \u003d br.readLine();","lastModifiedDate":"2024-01-22"},{"lineNumber":16,"author":{"gitId":"SherwynNg"},"content":" String[] inputParts \u003d input.split(\" \", 2);","lastModifiedDate":"2024-01-23"},{"lineNumber":17,"author":{"gitId":"SherwynNg"},"content":" action \u003d inputParts[0];","lastModifiedDate":"2024-01-23"},{"lineNumber":18,"author":{"gitId":"SherwynNg"},"content":" String parameters;","lastModifiedDate":"2024-01-23"},{"lineNumber":19,"author":{"gitId":"SherwynNg"},"content":" if (inputParts.length \u003d\u003d 2) {","lastModifiedDate":"2024-01-23"},{"lineNumber":20,"author":{"gitId":"SherwynNg"},"content":" parameters \u003d inputParts[1];","lastModifiedDate":"2024-01-23"},{"lineNumber":21,"author":{"gitId":"SherwynNg"},"content":" } else {","lastModifiedDate":"2024-01-23"},{"lineNumber":22,"author":{"gitId":"SherwynNg"},"content":" parameters \u003d \" \";","lastModifiedDate":"2024-01-23"},{"lineNumber":23,"author":{"gitId":"SherwynNg"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":24,"author":{"gitId":"SherwynNg"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":25,"author":{"gitId":"SherwynNg"},"content":" try {","lastModifiedDate":"2024-01-23"},{"lineNumber":26,"author":{"gitId":"SherwynNg"},"content":" DukeExceptions.validateInput(action, parameters);","lastModifiedDate":"2024-01-23"},{"lineNumber":27,"author":{"gitId":"SherwynNg"},"content":" } catch (DukeExceptions e) {","lastModifiedDate":"2024-01-23"},{"lineNumber":28,"author":{"gitId":"SherwynNg"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-23"},{"lineNumber":29,"author":{"gitId":"SherwynNg"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-23"},{"lineNumber":30,"author":{"gitId":"SherwynNg"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-23"},{"lineNumber":31,"author":{"gitId":"SherwynNg"},"content":" continue;","lastModifiedDate":"2024-01-23"},{"lineNumber":32,"author":{"gitId":"SherwynNg"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":33,"author":{"gitId":"SherwynNg"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":34,"author":{"gitId":"SherwynNg"},"content":" switch (action) {","lastModifiedDate":"2024-01-23"},{"lineNumber":35,"author":{"gitId":"SherwynNg"},"content":" case \"list\":","lastModifiedDate":"2024-01-22"},{"lineNumber":36,"author":{"gitId":"SherwynNg"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-22"},{"lineNumber":37,"author":{"gitId":"SherwynNg"},"content":" System.out.println(\"Here are the tasks in your list:\");","lastModifiedDate":"2024-01-22"},{"lineNumber":38,"author":{"gitId":"SherwynNg"},"content":" for (int i \u003d 0; i \u003c lst.size(); i++) {","lastModifiedDate":"2024-01-22"},{"lineNumber":39,"author":{"gitId":"SherwynNg"},"content":" Task currentTask \u003d lst.get(i);","lastModifiedDate":"2024-01-23"},{"lineNumber":40,"author":{"gitId":"SherwynNg"},"content":" System.out.println((i + 1) + \".\" + currentTask.toString());","lastModifiedDate":"2024-01-23"},{"lineNumber":41,"author":{"gitId":"SherwynNg"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":42,"author":{"gitId":"SherwynNg"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-22"},{"lineNumber":43,"author":{"gitId":"SherwynNg"},"content":" break;","lastModifiedDate":"2024-01-22"},{"lineNumber":44,"author":{"gitId":"SherwynNg"},"content":" case \"mark\":","lastModifiedDate":"2024-01-22"},{"lineNumber":45,"author":{"gitId":"SherwynNg"},"content":" int indexToMark \u003d Integer.parseInt(inputParts[1]);","lastModifiedDate":"2024-01-23"},{"lineNumber":46,"author":{"gitId":"SherwynNg"},"content":" Task markTask \u003d lst.get(indexToMark - 1);","lastModifiedDate":"2024-01-22"},{"lineNumber":47,"author":{"gitId":"SherwynNg"},"content":" markTask.markAsDone();","lastModifiedDate":"2024-01-22"},{"lineNumber":48,"author":{"gitId":"SherwynNg"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-22"},{"lineNumber":49,"author":{"gitId":"SherwynNg"},"content":" System.out.println(\"Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2024-01-22"},{"lineNumber":50,"author":{"gitId":"SherwynNg"},"content":" System.out.println(markTask.toString());","lastModifiedDate":"2024-01-23"},{"lineNumber":51,"author":{"gitId":"SherwynNg"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-22"},{"lineNumber":52,"author":{"gitId":"SherwynNg"},"content":" break;","lastModifiedDate":"2024-01-22"},{"lineNumber":53,"author":{"gitId":"SherwynNg"},"content":" case \"unmark\":","lastModifiedDate":"2024-01-22"},{"lineNumber":54,"author":{"gitId":"SherwynNg"},"content":" int indexToUnmark \u003d Integer.parseInt(inputParts[1]);","lastModifiedDate":"2024-01-23"},{"lineNumber":55,"author":{"gitId":"SherwynNg"},"content":" Task unmarkTask \u003d lst.get(indexToUnmark - 1);","lastModifiedDate":"2024-01-22"},{"lineNumber":56,"author":{"gitId":"SherwynNg"},"content":" unmarkTask.markAsNotDone();","lastModifiedDate":"2024-01-22"},{"lineNumber":57,"author":{"gitId":"SherwynNg"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-22"},{"lineNumber":58,"author":{"gitId":"SherwynNg"},"content":" System.out.println(\"OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2024-01-22"},{"lineNumber":59,"author":{"gitId":"SherwynNg"},"content":" System.out.println(unmarkTask.toString());","lastModifiedDate":"2024-01-23"},{"lineNumber":60,"author":{"gitId":"SherwynNg"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-22"},{"lineNumber":61,"author":{"gitId":"SherwynNg"},"content":" break;","lastModifiedDate":"2024-01-22"},{"lineNumber":62,"author":{"gitId":"SherwynNg"},"content":" case \"todo\":","lastModifiedDate":"2024-01-23"},{"lineNumber":63,"author":{"gitId":"SherwynNg"},"content":" Task addToDoTask \u003d new Todo(inputParts[1]);","lastModifiedDate":"2024-01-23"},{"lineNumber":64,"author":{"gitId":"SherwynNg"},"content":" lst.add(addToDoTask);","lastModifiedDate":"2024-01-23"},{"lineNumber":65,"author":{"gitId":"SherwynNg"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-23"},{"lineNumber":66,"author":{"gitId":"SherwynNg"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2024-01-23"},{"lineNumber":67,"author":{"gitId":"SherwynNg"},"content":" System.out.println(addToDoTask.toString());","lastModifiedDate":"2024-01-23"},{"lineNumber":68,"author":{"gitId":"SherwynNg"},"content":" System.out.println(\"Now you have \" + lst.size() + \" tasks in the list.\");","lastModifiedDate":"2024-01-23"},{"lineNumber":69,"author":{"gitId":"SherwynNg"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-23"},{"lineNumber":70,"author":{"gitId":"SherwynNg"},"content":" break;","lastModifiedDate":"2024-01-23"},{"lineNumber":71,"author":{"gitId":"SherwynNg"},"content":" case \"deadline\":","lastModifiedDate":"2024-01-23"},{"lineNumber":72,"author":{"gitId":"SherwynNg"},"content":" String[] splitAgain \u003d inputParts[1].split(\"/by\");","lastModifiedDate":"2024-01-23"},{"lineNumber":73,"author":{"gitId":"SherwynNg"},"content":" Task addDeadlineTask \u003d new Deadline(splitAgain[0], splitAgain[1]);","lastModifiedDate":"2024-01-23"},{"lineNumber":74,"author":{"gitId":"SherwynNg"},"content":" lst.add(addDeadlineTask);","lastModifiedDate":"2024-01-23"},{"lineNumber":75,"author":{"gitId":"SherwynNg"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-23"},{"lineNumber":76,"author":{"gitId":"SherwynNg"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2024-01-23"},{"lineNumber":77,"author":{"gitId":"SherwynNg"},"content":" System.out.println(addDeadlineTask.toString());","lastModifiedDate":"2024-01-23"},{"lineNumber":78,"author":{"gitId":"SherwynNg"},"content":" System.out.println(\"Now you have \" + lst.size() + \" tasks in the list.\");","lastModifiedDate":"2024-01-23"},{"lineNumber":79,"author":{"gitId":"SherwynNg"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-23"},{"lineNumber":80,"author":{"gitId":"SherwynNg"},"content":" break;","lastModifiedDate":"2024-01-23"},{"lineNumber":81,"author":{"gitId":"SherwynNg"},"content":" case \"event\":","lastModifiedDate":"2024-01-23"},{"lineNumber":82,"author":{"gitId":"SherwynNg"},"content":" String[] splitOnce \u003d inputParts[1].split(\"/from \");","lastModifiedDate":"2024-01-23"},{"lineNumber":83,"author":{"gitId":"SherwynNg"},"content":" String message \u003d splitOnce[0];","lastModifiedDate":"2024-01-23"},{"lineNumber":84,"author":{"gitId":"SherwynNg"},"content":" String[] splitTwice \u003d splitOnce[1].split(\"/to \");","lastModifiedDate":"2024-01-23"},{"lineNumber":85,"author":{"gitId":"SherwynNg"},"content":" Task addEventTask \u003d new Event(message, splitTwice[0], splitTwice[1]);","lastModifiedDate":"2024-01-23"},{"lineNumber":86,"author":{"gitId":"SherwynNg"},"content":" lst.add(addEventTask);","lastModifiedDate":"2024-01-23"},{"lineNumber":87,"author":{"gitId":"SherwynNg"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-23"},{"lineNumber":88,"author":{"gitId":"SherwynNg"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2024-01-23"},{"lineNumber":89,"author":{"gitId":"SherwynNg"},"content":" System.out.println(addEventTask.toString());","lastModifiedDate":"2024-01-23"},{"lineNumber":90,"author":{"gitId":"SherwynNg"},"content":" System.out.println(\"Now you have \" + lst.size() + \" tasks in the list.\");","lastModifiedDate":"2024-01-23"},{"lineNumber":91,"author":{"gitId":"SherwynNg"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-23"},{"lineNumber":92,"author":{"gitId":"SherwynNg"},"content":" break;","lastModifiedDate":"2024-01-23"},{"lineNumber":93,"author":{"gitId":"SherwynNg"},"content":" case \"bye\":","lastModifiedDate":"2024-01-23"},{"lineNumber":94,"author":{"gitId":"SherwynNg"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-23"},{"lineNumber":95,"author":{"gitId":"SherwynNg"},"content":" System.out.println(\"Bye. Hope to see you again soon!\");","lastModifiedDate":"2024-01-23"},{"lineNumber":96,"author":{"gitId":"SherwynNg"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-23"},{"lineNumber":97,"author":{"gitId":"SherwynNg"},"content":" break;","lastModifiedDate":"2024-01-23"},{"lineNumber":98,"author":{"gitId":"SherwynNg"},"content":" case \"delete\":","lastModifiedDate":"2024-01-23"},{"lineNumber":99,"author":{"gitId":"SherwynNg"},"content":" try {","lastModifiedDate":"2024-01-23"},{"lineNumber":100,"author":{"gitId":"SherwynNg"},"content":" DukeExceptions.checkListNotEmpty(lst);","lastModifiedDate":"2024-01-23"},{"lineNumber":101,"author":{"gitId":"SherwynNg"},"content":" } catch (DukeExceptions e) {","lastModifiedDate":"2024-01-23"},{"lineNumber":102,"author":{"gitId":"SherwynNg"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-23"},{"lineNumber":103,"author":{"gitId":"SherwynNg"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-23"},{"lineNumber":104,"author":{"gitId":"SherwynNg"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-23"},{"lineNumber":105,"author":{"gitId":"SherwynNg"},"content":" continue;","lastModifiedDate":"2024-01-23"},{"lineNumber":106,"author":{"gitId":"SherwynNg"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":107,"author":{"gitId":"SherwynNg"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":108,"author":{"gitId":"SherwynNg"},"content":" int deleteIndex \u003d Integer.parseInt(inputParts[1]) - 1;","lastModifiedDate":"2024-01-23"},{"lineNumber":109,"author":{"gitId":"SherwynNg"},"content":" Task toBeDeleted \u003d lst.get(deleteIndex);","lastModifiedDate":"2024-01-23"},{"lineNumber":110,"author":{"gitId":"SherwynNg"},"content":" lst.remove(deleteIndex);","lastModifiedDate":"2024-01-23"},{"lineNumber":111,"author":{"gitId":"SherwynNg"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-23"},{"lineNumber":112,"author":{"gitId":"SherwynNg"},"content":" System.out.println(\"Noted. I\u0027ve removed this task:\");","lastModifiedDate":"2024-01-23"},{"lineNumber":113,"author":{"gitId":"SherwynNg"},"content":" System.out.println(toBeDeleted.toString());","lastModifiedDate":"2024-01-23"},{"lineNumber":114,"author":{"gitId":"SherwynNg"},"content":" System.out.println(\"Now you have \" + lst.size() + \" tasks in the list.\");","lastModifiedDate":"2024-01-23"},{"lineNumber":115,"author":{"gitId":"SherwynNg"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-23"},{"lineNumber":116,"author":{"gitId":"SherwynNg"},"content":" break;","lastModifiedDate":"2024-01-23"},{"lineNumber":117,"author":{"gitId":"SherwynNg"},"content":" default:","lastModifiedDate":"2024-01-22"},{"lineNumber":118,"author":{"gitId":"SherwynNg"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-22"},{"lineNumber":119,"author":{"gitId":"SherwynNg"},"content":" System.out.println(\"added: \" + input);","lastModifiedDate":"2024-01-22"},{"lineNumber":120,"author":{"gitId":"SherwynNg"},"content":" Task toAddTask \u003d new Task(input);","lastModifiedDate":"2024-01-22"},{"lineNumber":121,"author":{"gitId":"SherwynNg"},"content":" lst.add(toAddTask);","lastModifiedDate":"2024-01-22"},{"lineNumber":122,"author":{"gitId":"SherwynNg"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-22"},{"lineNumber":123,"author":{"gitId":"SherwynNg"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":124,"author":{"gitId":"SherwynNg"},"content":" } while(!action.equals(\"bye\"));","lastModifiedDate":"2024-01-23"},{"lineNumber":125,"author":{"gitId":"SherwynNg"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":126,"author":{"gitId":"SherwynNg"},"content":" br.close();","lastModifiedDate":"2024-01-22"},{"lineNumber":127,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":128,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"SherwynNg":125,"-":3}},{"path":"src/main/java/DukeExceptions.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"SherwynNg"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"SherwynNg"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"SherwynNg"},"content":"public class DukeExceptions extends Exception {","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"SherwynNg"},"content":" public DukeExceptions(String msg) {","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"SherwynNg"},"content":" super(msg);","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"SherwynNg"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"SherwynNg"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"SherwynNg"},"content":" public static void checkListNotEmpty (ArrayList\u003cTask\u003e lst) throws DukeExceptions {","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"SherwynNg"},"content":" if (lst.size() \u003d\u003d 0) {","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"SherwynNg"},"content":" throw new DukeExceptions(\"OOPS!!! The list is empty. There is nothing to delete.\");","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"SherwynNg"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"SherwynNg"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"SherwynNg"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"SherwynNg"},"content":" public static void validateInput(String action, String parameters) throws DukeExceptions{","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"SherwynNg"},"content":" switch(action) {","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"SherwynNg"},"content":" case \"todo\":","lastModifiedDate":"2024-01-23"},{"lineNumber":17,"author":{"gitId":"SherwynNg"},"content":" if (parameters.equals(\" \")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":18,"author":{"gitId":"SherwynNg"},"content":" throw new DukeExceptions(\"OOPS!!! The description of a todo cannot be empty.\");","lastModifiedDate":"2024-01-23"},{"lineNumber":19,"author":{"gitId":"SherwynNg"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":20,"author":{"gitId":"SherwynNg"},"content":" break;","lastModifiedDate":"2024-01-23"},{"lineNumber":21,"author":{"gitId":"SherwynNg"},"content":" case \"deadline\":","lastModifiedDate":"2024-01-23"},{"lineNumber":22,"author":{"gitId":"SherwynNg"},"content":" if (parameters.equals(\" \")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":23,"author":{"gitId":"SherwynNg"},"content":" throw new DukeExceptions(\"OOPS!!! The description of a deadline cannot be empty.\");","lastModifiedDate":"2024-01-23"},{"lineNumber":24,"author":{"gitId":"SherwynNg"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":25,"author":{"gitId":"SherwynNg"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":26,"author":{"gitId":"SherwynNg"},"content":" String[] deadlineInputs \u003d parameters.split(\"/by \");","lastModifiedDate":"2024-01-23"},{"lineNumber":27,"author":{"gitId":"SherwynNg"},"content":" String dueDate;","lastModifiedDate":"2024-01-23"},{"lineNumber":28,"author":{"gitId":"SherwynNg"},"content":" if (deadlineInputs.length !\u003d 2) {","lastModifiedDate":"2024-01-23"},{"lineNumber":29,"author":{"gitId":"SherwynNg"},"content":" throw new DukeExceptions(\"OOPS!!! The due date of a deadline cannot be empty.\");","lastModifiedDate":"2024-01-23"},{"lineNumber":30,"author":{"gitId":"SherwynNg"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":31,"author":{"gitId":"SherwynNg"},"content":" break;","lastModifiedDate":"2024-01-23"},{"lineNumber":32,"author":{"gitId":"SherwynNg"},"content":" case \"event\":","lastModifiedDate":"2024-01-23"},{"lineNumber":33,"author":{"gitId":"SherwynNg"},"content":" if (parameters.equals(\" \")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":34,"author":{"gitId":"SherwynNg"},"content":" throw new DukeExceptions(\"OOPS!!! The description of an event cannot be empty.\");","lastModifiedDate":"2024-01-23"},{"lineNumber":35,"author":{"gitId":"SherwynNg"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":36,"author":{"gitId":"SherwynNg"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":37,"author":{"gitId":"SherwynNg"},"content":" String[] eventInputs \u003d parameters.split(\"/from \", 2);","lastModifiedDate":"2024-01-23"},{"lineNumber":38,"author":{"gitId":"SherwynNg"},"content":" if (eventInputs.length \u003d\u003d 2) {","lastModifiedDate":"2024-01-23"},{"lineNumber":39,"author":{"gitId":"SherwynNg"},"content":" String[] splitFromAndTo \u003d eventInputs[1].split(\"/to \");","lastModifiedDate":"2024-01-23"},{"lineNumber":40,"author":{"gitId":"SherwynNg"},"content":" if (splitFromAndTo.length !\u003d 2) {","lastModifiedDate":"2024-01-23"},{"lineNumber":41,"author":{"gitId":"SherwynNg"},"content":" throw new DukeExceptions(\"OOPS!!! Please include when does the event start and ends.\");","lastModifiedDate":"2024-01-23"},{"lineNumber":42,"author":{"gitId":"SherwynNg"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":43,"author":{"gitId":"SherwynNg"},"content":" } else {","lastModifiedDate":"2024-01-23"},{"lineNumber":44,"author":{"gitId":"SherwynNg"},"content":" throw new DukeExceptions(\"OOPS!!! The period of an event cannot be empty.\");","lastModifiedDate":"2024-01-23"},{"lineNumber":45,"author":{"gitId":"SherwynNg"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":46,"author":{"gitId":"SherwynNg"},"content":" break;","lastModifiedDate":"2024-01-23"},{"lineNumber":47,"author":{"gitId":"SherwynNg"},"content":" case \"mark\":","lastModifiedDate":"2024-01-23"},{"lineNumber":48,"author":{"gitId":"SherwynNg"},"content":" if (parameters.equals(\" \")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":49,"author":{"gitId":"SherwynNg"},"content":" throw new DukeExceptions(\"Please include the index to mark.\");","lastModifiedDate":"2024-01-23"},{"lineNumber":50,"author":{"gitId":"SherwynNg"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":51,"author":{"gitId":"SherwynNg"},"content":" break;","lastModifiedDate":"2024-01-23"},{"lineNumber":52,"author":{"gitId":"SherwynNg"},"content":" case \"unmark\":","lastModifiedDate":"2024-01-23"},{"lineNumber":53,"author":{"gitId":"SherwynNg"},"content":" if (parameters.equals(\" \")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":54,"author":{"gitId":"SherwynNg"},"content":" throw new DukeExceptions(\"Please include the index to unmark.\");","lastModifiedDate":"2024-01-23"},{"lineNumber":55,"author":{"gitId":"SherwynNg"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":56,"author":{"gitId":"SherwynNg"},"content":" break;","lastModifiedDate":"2024-01-23"},{"lineNumber":57,"author":{"gitId":"SherwynNg"},"content":" case \"list\":","lastModifiedDate":"2024-01-23"},{"lineNumber":58,"author":{"gitId":"SherwynNg"},"content":" if (!parameters.equals(\" \")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":59,"author":{"gitId":"SherwynNg"},"content":" throw new DukeExceptions(\"OOPS!!! You have included extra information, which I cannot read\");","lastModifiedDate":"2024-01-23"},{"lineNumber":60,"author":{"gitId":"SherwynNg"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":61,"author":{"gitId":"SherwynNg"},"content":" break;","lastModifiedDate":"2024-01-23"},{"lineNumber":62,"author":{"gitId":"SherwynNg"},"content":" case \"bye\":","lastModifiedDate":"2024-01-23"},{"lineNumber":63,"author":{"gitId":"SherwynNg"},"content":" if (!parameters.equals(\" \")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":64,"author":{"gitId":"SherwynNg"},"content":" throw new DukeExceptions(\"OOPS!!! You have included extra information, which I cannot read\");","lastModifiedDate":"2024-01-23"},{"lineNumber":65,"author":{"gitId":"SherwynNg"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":66,"author":{"gitId":"SherwynNg"},"content":" break;","lastModifiedDate":"2024-01-23"},{"lineNumber":67,"author":{"gitId":"SherwynNg"},"content":" case \"delete\":","lastModifiedDate":"2024-01-23"},{"lineNumber":68,"author":{"gitId":"SherwynNg"},"content":" if (parameters.equals(\" \")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":69,"author":{"gitId":"SherwynNg"},"content":" throw new DukeExceptions(\"OOPS!!! You have to include which number to delete.\");","lastModifiedDate":"2024-01-23"},{"lineNumber":70,"author":{"gitId":"SherwynNg"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":71,"author":{"gitId":"SherwynNg"},"content":" break;","lastModifiedDate":"2024-01-23"},{"lineNumber":72,"author":{"gitId":"SherwynNg"},"content":" default:","lastModifiedDate":"2024-01-23"},{"lineNumber":73,"author":{"gitId":"SherwynNg"},"content":" throw new DukeExceptions(\"OOPS!!! I\u0027m sorry, but I don\u0027t know what that means :-(\");","lastModifiedDate":"2024-01-23"},{"lineNumber":74,"author":{"gitId":"SherwynNg"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":75,"author":{"gitId":"SherwynNg"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":76,"author":{"gitId":"SherwynNg"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"SherwynNg":76}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"SherwynNg"},"content":"public class Event extends Task{","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"SherwynNg"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"SherwynNg"},"content":" protected String from;","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"SherwynNg"},"content":" protected String to;","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"SherwynNg"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"SherwynNg"},"content":" public Event(String description, String from, String to) {","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"SherwynNg"},"content":" super(description);","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"SherwynNg"},"content":" this.from \u003d from;","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"SherwynNg"},"content":" this.to \u003d to;","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"SherwynNg"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"SherwynNg"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"SherwynNg"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"SherwynNg"},"content":" public String toString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"SherwynNg"},"content":" return \"[E]\" + super.toString() + \"(from: \" + from + \"to: \" + to + \")\";","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"SherwynNg"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"SherwynNg"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"SherwynNg":16}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"SherwynNg"},"content":"public class Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"SherwynNg"},"content":" protected String description;","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"SherwynNg"},"content":" protected boolean isDone;","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"SherwynNg"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"SherwynNg"},"content":" public Task(String description) {","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"SherwynNg"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"SherwynNg"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"SherwynNg"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"SherwynNg"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"SherwynNg"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"SherwynNg"},"content":" return (isDone ? \"X\" : \" \");","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"SherwynNg"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":13,"author":{"gitId":"SherwynNg"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":14,"author":{"gitId":"SherwynNg"},"content":" public void markAsDone() {","lastModifiedDate":"2024-01-22"},{"lineNumber":15,"author":{"gitId":"SherwynNg"},"content":" isDone \u003d true;","lastModifiedDate":"2024-01-22"},{"lineNumber":16,"author":{"gitId":"SherwynNg"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":17,"author":{"gitId":"SherwynNg"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":18,"author":{"gitId":"SherwynNg"},"content":" public void markAsNotDone() {","lastModifiedDate":"2024-01-22"},{"lineNumber":19,"author":{"gitId":"SherwynNg"},"content":" isDone \u003d false;","lastModifiedDate":"2024-01-22"},{"lineNumber":20,"author":{"gitId":"SherwynNg"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":21,"author":{"gitId":"SherwynNg"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":22,"author":{"gitId":"SherwynNg"},"content":" public String getDescription() {","lastModifiedDate":"2024-01-22"},{"lineNumber":23,"author":{"gitId":"SherwynNg"},"content":" return this.description;","lastModifiedDate":"2024-01-22"},{"lineNumber":24,"author":{"gitId":"SherwynNg"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":25,"author":{"gitId":"SherwynNg"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":26,"author":{"gitId":"SherwynNg"},"content":" public String toString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":27,"author":{"gitId":"SherwynNg"},"content":" return \"[\" + getStatusIcon() + \"] \" + this.description;","lastModifiedDate":"2024-01-23"},{"lineNumber":28,"author":{"gitId":"SherwynNg"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":29,"author":{"gitId":"SherwynNg"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"SherwynNg":29}},{"path":"src/main/java/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"SherwynNg"},"content":"public class Todo extends Task {","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"SherwynNg"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"SherwynNg"},"content":" public Todo(String description) {","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"SherwynNg"},"content":" super(description);","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"SherwynNg"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"SherwynNg"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"SherwynNg"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"SherwynNg"},"content":" public String toString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"SherwynNg"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"SherwynNg"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"SherwynNg"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"SherwynNg":11}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"SherwynNg"},"content":"delete 1","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"SherwynNg"},"content":"todo borrow book","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"SherwynNg"},"content":"mark 1","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"SherwynNg"},"content":"unmark 1","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"SherwynNg"},"content":"deadline return book /by Sunday","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"SherwynNg"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"SherwynNg"},"content":"list","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"SherwynNg"},"content":"mark 1","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"SherwynNg"},"content":"list","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"SherwynNg"},"content":"todo","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"SherwynNg"},"content":"deadline","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"SherwynNg"},"content":"deadline return book","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"SherwynNg"},"content":"event","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"SherwynNg"},"content":"event return book","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"SherwynNg"},"content":"event return book /from tmr","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"SherwynNg"},"content":"blah","lastModifiedDate":"2024-01-23"},{"lineNumber":17,"author":{"gitId":"SherwynNg"},"content":"delete 1","lastModifiedDate":"2024-01-23"},{"lineNumber":18,"author":{"gitId":"SherwynNg"},"content":"delete","lastModifiedDate":"2024-01-23"},{"lineNumber":19,"author":{"gitId":"SherwynNg"},"content":"bye","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"SherwynNg":19}}] +[{"path":"src/main/java/Action.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"SherwynNg"},"content":"public enum Action {","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"SherwynNg"},"content":" LIST, MARK, UNMARK, TODO, DEADLINE, EVENT, BYE, DELETE","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"SherwynNg"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"SherwynNg":3}},{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"SherwynNg"},"content":"public class Deadline extends Task{","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"SherwynNg"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"SherwynNg"},"content":" protected String by;","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"SherwynNg"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"SherwynNg"},"content":" public Deadline(String description, String by) {","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"SherwynNg"},"content":" super(description);","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"SherwynNg"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"SherwynNg"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"SherwynNg"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"SherwynNg"},"content":" public String toString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"SherwynNg"},"content":" return \"[D]\" + super.toString() + \"(by:\" + by + \")\";","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"SherwynNg"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"SherwynNg"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"SherwynNg":13}},{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"SherwynNg"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"SherwynNg"},"content":"import java.io.InputStreamReader;","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"SherwynNg"},"content":"import java.io.BufferedReader;","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"SherwynNg"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":6,"author":{"gitId":"SherwynNg"},"content":" public static void main(String[] args) throws IOException {","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"SherwynNg"},"content":" BufferedReader br \u003d new BufferedReader(new InputStreamReader(System.in));","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"SherwynNg"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"SherwynNg"},"content":" System.out.println(\"Hello! I\u0027m AcademicWeapon\");","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"SherwynNg"},"content":" System.out.println(\"What can I do for you?\");","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"SherwynNg"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"SherwynNg"},"content":" //String action;","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"SherwynNg"},"content":" Action action \u003d Action.TODO;","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"SherwynNg"},"content":" ArrayList\u003cTask\u003e lst \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"SherwynNg"},"content":" do {","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"SherwynNg"},"content":" String input \u003d br.readLine();","lastModifiedDate":"2024-01-22"},{"lineNumber":17,"author":{"gitId":"SherwynNg"},"content":" String[] inputParts \u003d input.split(\" \", 2);","lastModifiedDate":"2024-01-23"},{"lineNumber":18,"author":{"gitId":"SherwynNg"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"SherwynNg"},"content":" action \u003d Action.valueOf(inputParts[0].toUpperCase());","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"SherwynNg"},"content":" } catch (IllegalArgumentException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"SherwynNg"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"SherwynNg"},"content":" System.out.println(\"Invalid action. Please enter a valid command.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"SherwynNg"},"content":" System.out.println(\"List, mark, unmark, todo, deadline, event, bye, delete.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"SherwynNg"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"SherwynNg"},"content":" continue;","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"SherwynNg"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"SherwynNg"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"SherwynNg"},"content":" String parameters;","lastModifiedDate":"2024-01-23"},{"lineNumber":29,"author":{"gitId":"SherwynNg"},"content":" if (inputParts.length \u003d\u003d 2) {","lastModifiedDate":"2024-01-23"},{"lineNumber":30,"author":{"gitId":"SherwynNg"},"content":" parameters \u003d inputParts[1];","lastModifiedDate":"2024-01-23"},{"lineNumber":31,"author":{"gitId":"SherwynNg"},"content":" } else {","lastModifiedDate":"2024-01-23"},{"lineNumber":32,"author":{"gitId":"SherwynNg"},"content":" parameters \u003d \" \";","lastModifiedDate":"2024-01-23"},{"lineNumber":33,"author":{"gitId":"SherwynNg"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":34,"author":{"gitId":"SherwynNg"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":35,"author":{"gitId":"SherwynNg"},"content":" try {","lastModifiedDate":"2024-01-23"},{"lineNumber":36,"author":{"gitId":"SherwynNg"},"content":" DukeExceptions.validateInput(action.toString(), parameters);","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"SherwynNg"},"content":" } catch (DukeExceptions e) {","lastModifiedDate":"2024-01-23"},{"lineNumber":38,"author":{"gitId":"SherwynNg"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-23"},{"lineNumber":39,"author":{"gitId":"SherwynNg"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-23"},{"lineNumber":40,"author":{"gitId":"SherwynNg"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-23"},{"lineNumber":41,"author":{"gitId":"SherwynNg"},"content":" continue;","lastModifiedDate":"2024-01-23"},{"lineNumber":42,"author":{"gitId":"SherwynNg"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":43,"author":{"gitId":"SherwynNg"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":44,"author":{"gitId":"SherwynNg"},"content":" switch (action) {","lastModifiedDate":"2024-01-23"},{"lineNumber":45,"author":{"gitId":"SherwynNg"},"content":" case LIST:","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"SherwynNg"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-22"},{"lineNumber":47,"author":{"gitId":"SherwynNg"},"content":" System.out.println(\"Here are the tasks in your list:\");","lastModifiedDate":"2024-01-22"},{"lineNumber":48,"author":{"gitId":"SherwynNg"},"content":" for (int i \u003d 0; i \u003c lst.size(); i++) {","lastModifiedDate":"2024-01-22"},{"lineNumber":49,"author":{"gitId":"SherwynNg"},"content":" Task currentTask \u003d lst.get(i);","lastModifiedDate":"2024-01-23"},{"lineNumber":50,"author":{"gitId":"SherwynNg"},"content":" System.out.println((i + 1) + \".\" + currentTask.toString());","lastModifiedDate":"2024-01-23"},{"lineNumber":51,"author":{"gitId":"SherwynNg"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":52,"author":{"gitId":"SherwynNg"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-22"},{"lineNumber":53,"author":{"gitId":"SherwynNg"},"content":" break;","lastModifiedDate":"2024-01-22"},{"lineNumber":54,"author":{"gitId":"SherwynNg"},"content":" case MARK:","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"SherwynNg"},"content":" int indexToMark \u003d Integer.parseInt(inputParts[1]);","lastModifiedDate":"2024-01-23"},{"lineNumber":56,"author":{"gitId":"SherwynNg"},"content":" Task markTask \u003d lst.get(indexToMark - 1);","lastModifiedDate":"2024-01-22"},{"lineNumber":57,"author":{"gitId":"SherwynNg"},"content":" markTask.markAsDone();","lastModifiedDate":"2024-01-22"},{"lineNumber":58,"author":{"gitId":"SherwynNg"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-22"},{"lineNumber":59,"author":{"gitId":"SherwynNg"},"content":" System.out.println(\"Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2024-01-22"},{"lineNumber":60,"author":{"gitId":"SherwynNg"},"content":" System.out.println(markTask.toString());","lastModifiedDate":"2024-01-23"},{"lineNumber":61,"author":{"gitId":"SherwynNg"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-22"},{"lineNumber":62,"author":{"gitId":"SherwynNg"},"content":" break;","lastModifiedDate":"2024-01-22"},{"lineNumber":63,"author":{"gitId":"SherwynNg"},"content":" case UNMARK:","lastModifiedDate":"2024-01-30"},{"lineNumber":64,"author":{"gitId":"SherwynNg"},"content":" int indexToUnmark \u003d Integer.parseInt(inputParts[1]);","lastModifiedDate":"2024-01-23"},{"lineNumber":65,"author":{"gitId":"SherwynNg"},"content":" Task unmarkTask \u003d lst.get(indexToUnmark - 1);","lastModifiedDate":"2024-01-22"},{"lineNumber":66,"author":{"gitId":"SherwynNg"},"content":" unmarkTask.markAsNotDone();","lastModifiedDate":"2024-01-22"},{"lineNumber":67,"author":{"gitId":"SherwynNg"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-22"},{"lineNumber":68,"author":{"gitId":"SherwynNg"},"content":" System.out.println(\"OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2024-01-22"},{"lineNumber":69,"author":{"gitId":"SherwynNg"},"content":" System.out.println(unmarkTask.toString());","lastModifiedDate":"2024-01-23"},{"lineNumber":70,"author":{"gitId":"SherwynNg"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-22"},{"lineNumber":71,"author":{"gitId":"SherwynNg"},"content":" break;","lastModifiedDate":"2024-01-22"},{"lineNumber":72,"author":{"gitId":"SherwynNg"},"content":" case TODO:","lastModifiedDate":"2024-01-30"},{"lineNumber":73,"author":{"gitId":"SherwynNg"},"content":" Task addToDoTask \u003d new Todo(inputParts[1]);","lastModifiedDate":"2024-01-23"},{"lineNumber":74,"author":{"gitId":"SherwynNg"},"content":" lst.add(addToDoTask);","lastModifiedDate":"2024-01-23"},{"lineNumber":75,"author":{"gitId":"SherwynNg"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-23"},{"lineNumber":76,"author":{"gitId":"SherwynNg"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2024-01-23"},{"lineNumber":77,"author":{"gitId":"SherwynNg"},"content":" System.out.println(addToDoTask.toString());","lastModifiedDate":"2024-01-23"},{"lineNumber":78,"author":{"gitId":"SherwynNg"},"content":" System.out.println(\"Now you have \" + lst.size() + \" tasks in the list.\");","lastModifiedDate":"2024-01-23"},{"lineNumber":79,"author":{"gitId":"SherwynNg"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-23"},{"lineNumber":80,"author":{"gitId":"SherwynNg"},"content":" break;","lastModifiedDate":"2024-01-23"},{"lineNumber":81,"author":{"gitId":"SherwynNg"},"content":" case DEADLINE:","lastModifiedDate":"2024-01-30"},{"lineNumber":82,"author":{"gitId":"SherwynNg"},"content":" String[] splitAgain \u003d inputParts[1].split(\"/by\");","lastModifiedDate":"2024-01-23"},{"lineNumber":83,"author":{"gitId":"SherwynNg"},"content":" Task addDeadlineTask \u003d new Deadline(splitAgain[0], splitAgain[1]);","lastModifiedDate":"2024-01-23"},{"lineNumber":84,"author":{"gitId":"SherwynNg"},"content":" lst.add(addDeadlineTask);","lastModifiedDate":"2024-01-23"},{"lineNumber":85,"author":{"gitId":"SherwynNg"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-23"},{"lineNumber":86,"author":{"gitId":"SherwynNg"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2024-01-23"},{"lineNumber":87,"author":{"gitId":"SherwynNg"},"content":" System.out.println(addDeadlineTask.toString());","lastModifiedDate":"2024-01-23"},{"lineNumber":88,"author":{"gitId":"SherwynNg"},"content":" System.out.println(\"Now you have \" + lst.size() + \" tasks in the list.\");","lastModifiedDate":"2024-01-23"},{"lineNumber":89,"author":{"gitId":"SherwynNg"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-23"},{"lineNumber":90,"author":{"gitId":"SherwynNg"},"content":" break;","lastModifiedDate":"2024-01-23"},{"lineNumber":91,"author":{"gitId":"SherwynNg"},"content":" case EVENT:","lastModifiedDate":"2024-01-30"},{"lineNumber":92,"author":{"gitId":"SherwynNg"},"content":" String[] splitOnce \u003d inputParts[1].split(\"/from \");","lastModifiedDate":"2024-01-23"},{"lineNumber":93,"author":{"gitId":"SherwynNg"},"content":" String message \u003d splitOnce[0];","lastModifiedDate":"2024-01-23"},{"lineNumber":94,"author":{"gitId":"SherwynNg"},"content":" String[] splitTwice \u003d splitOnce[1].split(\"/to \");","lastModifiedDate":"2024-01-23"},{"lineNumber":95,"author":{"gitId":"SherwynNg"},"content":" Task addEventTask \u003d new Event(message, splitTwice[0], splitTwice[1]);","lastModifiedDate":"2024-01-23"},{"lineNumber":96,"author":{"gitId":"SherwynNg"},"content":" lst.add(addEventTask);","lastModifiedDate":"2024-01-23"},{"lineNumber":97,"author":{"gitId":"SherwynNg"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-23"},{"lineNumber":98,"author":{"gitId":"SherwynNg"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2024-01-23"},{"lineNumber":99,"author":{"gitId":"SherwynNg"},"content":" System.out.println(addEventTask.toString());","lastModifiedDate":"2024-01-23"},{"lineNumber":100,"author":{"gitId":"SherwynNg"},"content":" System.out.println(\"Now you have \" + lst.size() + \" tasks in the list.\");","lastModifiedDate":"2024-01-23"},{"lineNumber":101,"author":{"gitId":"SherwynNg"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-23"},{"lineNumber":102,"author":{"gitId":"SherwynNg"},"content":" break;","lastModifiedDate":"2024-01-23"},{"lineNumber":103,"author":{"gitId":"SherwynNg"},"content":" case BYE:","lastModifiedDate":"2024-01-30"},{"lineNumber":104,"author":{"gitId":"SherwynNg"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-23"},{"lineNumber":105,"author":{"gitId":"SherwynNg"},"content":" System.out.println(\"Bye. Hope to see you again soon!\");","lastModifiedDate":"2024-01-23"},{"lineNumber":106,"author":{"gitId":"SherwynNg"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-23"},{"lineNumber":107,"author":{"gitId":"SherwynNg"},"content":" break;","lastModifiedDate":"2024-01-23"},{"lineNumber":108,"author":{"gitId":"SherwynNg"},"content":" case DELETE:","lastModifiedDate":"2024-01-30"},{"lineNumber":109,"author":{"gitId":"SherwynNg"},"content":" try {","lastModifiedDate":"2024-01-23"},{"lineNumber":110,"author":{"gitId":"SherwynNg"},"content":" DukeExceptions.checkListNotEmpty(lst);","lastModifiedDate":"2024-01-23"},{"lineNumber":111,"author":{"gitId":"SherwynNg"},"content":" } catch (DukeExceptions e) {","lastModifiedDate":"2024-01-23"},{"lineNumber":112,"author":{"gitId":"SherwynNg"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-23"},{"lineNumber":113,"author":{"gitId":"SherwynNg"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-23"},{"lineNumber":114,"author":{"gitId":"SherwynNg"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-23"},{"lineNumber":115,"author":{"gitId":"SherwynNg"},"content":" continue;","lastModifiedDate":"2024-01-23"},{"lineNumber":116,"author":{"gitId":"SherwynNg"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":117,"author":{"gitId":"SherwynNg"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":118,"author":{"gitId":"SherwynNg"},"content":" int deleteIndex \u003d Integer.parseInt(inputParts[1]) - 1;","lastModifiedDate":"2024-01-23"},{"lineNumber":119,"author":{"gitId":"SherwynNg"},"content":" Task toBeDeleted \u003d lst.get(deleteIndex);","lastModifiedDate":"2024-01-23"},{"lineNumber":120,"author":{"gitId":"SherwynNg"},"content":" lst.remove(deleteIndex);","lastModifiedDate":"2024-01-23"},{"lineNumber":121,"author":{"gitId":"SherwynNg"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-23"},{"lineNumber":122,"author":{"gitId":"SherwynNg"},"content":" System.out.println(\"Noted. I\u0027ve removed this task:\");","lastModifiedDate":"2024-01-23"},{"lineNumber":123,"author":{"gitId":"SherwynNg"},"content":" System.out.println(toBeDeleted.toString());","lastModifiedDate":"2024-01-23"},{"lineNumber":124,"author":{"gitId":"SherwynNg"},"content":" System.out.println(\"Now you have \" + lst.size() + \" tasks in the list.\");","lastModifiedDate":"2024-01-23"},{"lineNumber":125,"author":{"gitId":"SherwynNg"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-23"},{"lineNumber":126,"author":{"gitId":"SherwynNg"},"content":" break;","lastModifiedDate":"2024-01-23"},{"lineNumber":127,"author":{"gitId":"SherwynNg"},"content":" default:","lastModifiedDate":"2024-01-22"},{"lineNumber":128,"author":{"gitId":"SherwynNg"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-22"},{"lineNumber":129,"author":{"gitId":"SherwynNg"},"content":" System.out.println(\"added: \" + input);","lastModifiedDate":"2024-01-22"},{"lineNumber":130,"author":{"gitId":"SherwynNg"},"content":" Task toAddTask \u003d new Task(input);","lastModifiedDate":"2024-01-22"},{"lineNumber":131,"author":{"gitId":"SherwynNg"},"content":" lst.add(toAddTask);","lastModifiedDate":"2024-01-22"},{"lineNumber":132,"author":{"gitId":"SherwynNg"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-22"},{"lineNumber":133,"author":{"gitId":"SherwynNg"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":134,"author":{"gitId":"SherwynNg"},"content":" } while(action !\u003d Action.BYE);","lastModifiedDate":"2024-01-30"},{"lineNumber":135,"author":{"gitId":"SherwynNg"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":136,"author":{"gitId":"SherwynNg"},"content":" br.close();","lastModifiedDate":"2024-01-22"},{"lineNumber":137,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":138,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"SherwynNg":135,"-":3}},{"path":"src/main/java/DukeExceptions.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"SherwynNg"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"SherwynNg"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"SherwynNg"},"content":"public class DukeExceptions extends Exception {","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"SherwynNg"},"content":" public DukeExceptions(String msg) {","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"SherwynNg"},"content":" super(msg);","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"SherwynNg"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"SherwynNg"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"SherwynNg"},"content":" public static void checkListNotEmpty (ArrayList\u003cTask\u003e lst) throws DukeExceptions {","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"SherwynNg"},"content":" if (lst.size() \u003d\u003d 0) {","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"SherwynNg"},"content":" throw new DukeExceptions(\"OOPS!!! The list is empty. There is nothing to delete.\");","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"SherwynNg"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"SherwynNg"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"SherwynNg"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"SherwynNg"},"content":" public static void validateInput(String action, String parameters) throws DukeExceptions{","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"SherwynNg"},"content":" switch(action) {","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"SherwynNg"},"content":" case \"TODO\":","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"SherwynNg"},"content":" if (parameters.equals(\" \")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":18,"author":{"gitId":"SherwynNg"},"content":" throw new DukeExceptions(\"OOPS!!! The description of a todo cannot be empty.\");","lastModifiedDate":"2024-01-23"},{"lineNumber":19,"author":{"gitId":"SherwynNg"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":20,"author":{"gitId":"SherwynNg"},"content":" break;","lastModifiedDate":"2024-01-23"},{"lineNumber":21,"author":{"gitId":"SherwynNg"},"content":" case \"DEADLINE\":","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"SherwynNg"},"content":" if (parameters.equals(\" \")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":23,"author":{"gitId":"SherwynNg"},"content":" throw new DukeExceptions(\"OOPS!!! The description of a deadline cannot be empty.\");","lastModifiedDate":"2024-01-23"},{"lineNumber":24,"author":{"gitId":"SherwynNg"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":25,"author":{"gitId":"SherwynNg"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":26,"author":{"gitId":"SherwynNg"},"content":" String[] deadlineInputs \u003d parameters.split(\"/by \");","lastModifiedDate":"2024-01-23"},{"lineNumber":27,"author":{"gitId":"SherwynNg"},"content":" String dueDate;","lastModifiedDate":"2024-01-23"},{"lineNumber":28,"author":{"gitId":"SherwynNg"},"content":" if (deadlineInputs.length !\u003d 2) {","lastModifiedDate":"2024-01-23"},{"lineNumber":29,"author":{"gitId":"SherwynNg"},"content":" throw new DukeExceptions(\"OOPS!!! The due date of a deadline cannot be empty.\");","lastModifiedDate":"2024-01-23"},{"lineNumber":30,"author":{"gitId":"SherwynNg"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":31,"author":{"gitId":"SherwynNg"},"content":" break;","lastModifiedDate":"2024-01-23"},{"lineNumber":32,"author":{"gitId":"SherwynNg"},"content":" case \"EVENT\":","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"SherwynNg"},"content":" if (parameters.equals(\" \")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":34,"author":{"gitId":"SherwynNg"},"content":" throw new DukeExceptions(\"OOPS!!! The description of an event cannot be empty.\");","lastModifiedDate":"2024-01-23"},{"lineNumber":35,"author":{"gitId":"SherwynNg"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":36,"author":{"gitId":"SherwynNg"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":37,"author":{"gitId":"SherwynNg"},"content":" String[] eventInputs \u003d parameters.split(\"/from \", 2);","lastModifiedDate":"2024-01-23"},{"lineNumber":38,"author":{"gitId":"SherwynNg"},"content":" if (eventInputs.length \u003d\u003d 2) {","lastModifiedDate":"2024-01-23"},{"lineNumber":39,"author":{"gitId":"SherwynNg"},"content":" String[] splitFromAndTo \u003d eventInputs[1].split(\"/to \");","lastModifiedDate":"2024-01-23"},{"lineNumber":40,"author":{"gitId":"SherwynNg"},"content":" if (splitFromAndTo.length !\u003d 2) {","lastModifiedDate":"2024-01-23"},{"lineNumber":41,"author":{"gitId":"SherwynNg"},"content":" throw new DukeExceptions(\"OOPS!!! Please include when does the event start and ends.\");","lastModifiedDate":"2024-01-23"},{"lineNumber":42,"author":{"gitId":"SherwynNg"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":43,"author":{"gitId":"SherwynNg"},"content":" } else {","lastModifiedDate":"2024-01-23"},{"lineNumber":44,"author":{"gitId":"SherwynNg"},"content":" throw new DukeExceptions(\"OOPS!!! The period of an event cannot be empty.\");","lastModifiedDate":"2024-01-23"},{"lineNumber":45,"author":{"gitId":"SherwynNg"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":46,"author":{"gitId":"SherwynNg"},"content":" break;","lastModifiedDate":"2024-01-23"},{"lineNumber":47,"author":{"gitId":"SherwynNg"},"content":" case \"MARK\":","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"SherwynNg"},"content":" if (parameters.equals(\" \")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":49,"author":{"gitId":"SherwynNg"},"content":" throw new DukeExceptions(\"Please include the index to mark.\");","lastModifiedDate":"2024-01-23"},{"lineNumber":50,"author":{"gitId":"SherwynNg"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":51,"author":{"gitId":"SherwynNg"},"content":" break;","lastModifiedDate":"2024-01-23"},{"lineNumber":52,"author":{"gitId":"SherwynNg"},"content":" case \"UNMARK\":","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"SherwynNg"},"content":" if (parameters.equals(\" \")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":54,"author":{"gitId":"SherwynNg"},"content":" throw new DukeExceptions(\"Please include the index to unmark.\");","lastModifiedDate":"2024-01-23"},{"lineNumber":55,"author":{"gitId":"SherwynNg"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":56,"author":{"gitId":"SherwynNg"},"content":" break;","lastModifiedDate":"2024-01-23"},{"lineNumber":57,"author":{"gitId":"SherwynNg"},"content":" case \"LIST\":","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"SherwynNg"},"content":" if (!parameters.equals(\" \")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":59,"author":{"gitId":"SherwynNg"},"content":" throw new DukeExceptions(\"OOPS!!! You have included extra information, which I cannot read\");","lastModifiedDate":"2024-01-23"},{"lineNumber":60,"author":{"gitId":"SherwynNg"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":61,"author":{"gitId":"SherwynNg"},"content":" break;","lastModifiedDate":"2024-01-23"},{"lineNumber":62,"author":{"gitId":"SherwynNg"},"content":" case \"BYE\":","lastModifiedDate":"2024-01-30"},{"lineNumber":63,"author":{"gitId":"SherwynNg"},"content":" if (!parameters.equals(\" \")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":64,"author":{"gitId":"SherwynNg"},"content":" throw new DukeExceptions(\"OOPS!!! You have included extra information, which I cannot read\");","lastModifiedDate":"2024-01-23"},{"lineNumber":65,"author":{"gitId":"SherwynNg"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":66,"author":{"gitId":"SherwynNg"},"content":" break;","lastModifiedDate":"2024-01-23"},{"lineNumber":67,"author":{"gitId":"SherwynNg"},"content":" case \"DELETE\":","lastModifiedDate":"2024-01-30"},{"lineNumber":68,"author":{"gitId":"SherwynNg"},"content":" if (parameters.equals(\" \")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":69,"author":{"gitId":"SherwynNg"},"content":" throw new DukeExceptions(\"OOPS!!! You have to include which number to delete.\");","lastModifiedDate":"2024-01-23"},{"lineNumber":70,"author":{"gitId":"SherwynNg"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":71,"author":{"gitId":"SherwynNg"},"content":" break;","lastModifiedDate":"2024-01-23"},{"lineNumber":72,"author":{"gitId":"SherwynNg"},"content":" default:","lastModifiedDate":"2024-01-23"},{"lineNumber":73,"author":{"gitId":"SherwynNg"},"content":" throw new DukeExceptions(\"OOPS!!! I\u0027m sorry, but I don\u0027t know what that means :-(\");","lastModifiedDate":"2024-01-23"},{"lineNumber":74,"author":{"gitId":"SherwynNg"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":75,"author":{"gitId":"SherwynNg"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":76,"author":{"gitId":"SherwynNg"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"SherwynNg":76}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"SherwynNg"},"content":"public class Event extends Task{","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"SherwynNg"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"SherwynNg"},"content":" protected String from;","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"SherwynNg"},"content":" protected String to;","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"SherwynNg"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"SherwynNg"},"content":" public Event(String description, String from, String to) {","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"SherwynNg"},"content":" super(description);","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"SherwynNg"},"content":" this.from \u003d from;","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"SherwynNg"},"content":" this.to \u003d to;","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"SherwynNg"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"SherwynNg"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"SherwynNg"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"SherwynNg"},"content":" public String toString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"SherwynNg"},"content":" return \"[E]\" + super.toString() + \"(from: \" + from + \"to: \" + to + \")\";","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"SherwynNg"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"SherwynNg"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"SherwynNg":16}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"SherwynNg"},"content":"public class Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"SherwynNg"},"content":" protected String description;","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"SherwynNg"},"content":" protected boolean isDone;","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"SherwynNg"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"SherwynNg"},"content":" public Task(String description) {","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"SherwynNg"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"SherwynNg"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"SherwynNg"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"SherwynNg"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"SherwynNg"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"SherwynNg"},"content":" return (isDone ? \"X\" : \" \");","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"SherwynNg"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":13,"author":{"gitId":"SherwynNg"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":14,"author":{"gitId":"SherwynNg"},"content":" public void markAsDone() {","lastModifiedDate":"2024-01-22"},{"lineNumber":15,"author":{"gitId":"SherwynNg"},"content":" isDone \u003d true;","lastModifiedDate":"2024-01-22"},{"lineNumber":16,"author":{"gitId":"SherwynNg"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":17,"author":{"gitId":"SherwynNg"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":18,"author":{"gitId":"SherwynNg"},"content":" public void markAsNotDone() {","lastModifiedDate":"2024-01-22"},{"lineNumber":19,"author":{"gitId":"SherwynNg"},"content":" isDone \u003d false;","lastModifiedDate":"2024-01-22"},{"lineNumber":20,"author":{"gitId":"SherwynNg"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":21,"author":{"gitId":"SherwynNg"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":22,"author":{"gitId":"SherwynNg"},"content":" public String getDescription() {","lastModifiedDate":"2024-01-22"},{"lineNumber":23,"author":{"gitId":"SherwynNg"},"content":" return this.description;","lastModifiedDate":"2024-01-22"},{"lineNumber":24,"author":{"gitId":"SherwynNg"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":25,"author":{"gitId":"SherwynNg"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":26,"author":{"gitId":"SherwynNg"},"content":" public String toString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":27,"author":{"gitId":"SherwynNg"},"content":" return \"[\" + getStatusIcon() + \"] \" + this.description;","lastModifiedDate":"2024-01-23"},{"lineNumber":28,"author":{"gitId":"SherwynNg"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":29,"author":{"gitId":"SherwynNg"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"SherwynNg":29}},{"path":"src/main/java/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"SherwynNg"},"content":"public class Todo extends Task {","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"SherwynNg"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"SherwynNg"},"content":" public Todo(String description) {","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"SherwynNg"},"content":" super(description);","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"SherwynNg"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"SherwynNg"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"SherwynNg"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"SherwynNg"},"content":" public String toString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"SherwynNg"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"SherwynNg"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"SherwynNg"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"SherwynNg":11}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"SherwynNg"},"content":"delete 1","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"SherwynNg"},"content":"todo borrow book","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"SherwynNg"},"content":"mark 1","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"SherwynNg"},"content":"unmark 1","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"SherwynNg"},"content":"deadline return book /by Sunday","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"SherwynNg"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"SherwynNg"},"content":"list","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"SherwynNg"},"content":"mark 1","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"SherwynNg"},"content":"list","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"SherwynNg"},"content":"todo","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"SherwynNg"},"content":"deadline","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"SherwynNg"},"content":"deadline return book","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"SherwynNg"},"content":"event","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"SherwynNg"},"content":"event return book","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"SherwynNg"},"content":"event return book /from tmr","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"SherwynNg"},"content":"blah","lastModifiedDate":"2024-01-23"},{"lineNumber":17,"author":{"gitId":"SherwynNg"},"content":"delete 1","lastModifiedDate":"2024-01-23"},{"lineNumber":18,"author":{"gitId":"SherwynNg"},"content":"delete","lastModifiedDate":"2024-01-23"},{"lineNumber":19,"author":{"gitId":"SherwynNg"},"content":"bye","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"SherwynNg":19}}] diff --git a/SherwynNg_ip_master/commits.json b/SherwynNg_ip_master/commits.json index a433b717..f31d1bfe 100644 --- a/SherwynNg_ip_master/commits.json +++ b/SherwynNg_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"SherwynNg":[{"date":"2024-01-22","commitResults":[{"hash":"76cf2ef78e6cf8207da529edc443c38e2d150bf9","isMergeCommit":false,"messageTitle":"added \"Level 0. Rename, Greet, Exit\"","messageBody":"","tags":["Level-0.-Rename,-Greet,-Exit"],"fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":6}}},{"hash":"655390bae88052cb0f7ccbeea078a47a761da2af","isMergeCommit":false,"messageTitle":"added \"level-1, echo\"","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":20,"deletions":7}}},{"hash":"1bef8c98904f8e8c51579b8eb65a34b1f660df58","isMergeCommit":false,"messageTitle":"removed printwriter","messageBody":"","tags":["Level-1.-Echo"],"fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":2}}},{"hash":"ef169c601893c81201a17db2db615a9647504d5d","isMergeCommit":false,"messageTitle":"added \"Level 2. Add, list\"","messageBody":"","tags":["Level-2.-Add,-list"],"fileTypesAndContributionMap":{"java":{"insertions":18,"deletions":3}}},{"hash":"89f774a0376a75a19fb5c4a8d78ee5822144f01e","isMergeCommit":false,"messageTitle":"added Task class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":25,"deletions":0}}},{"hash":"6f442e28c4be1d422995bb0fbf5cb2cc26326471","isMergeCommit":false,"messageTitle":"added \"Level 3. Mark as Done\"","messageBody":"","tags":["Level-3.-Mark-as-Done"],"fileTypesAndContributionMap":{"java":{"insertions":25,"deletions":7}}}]},{"date":"2024-01-23","commitResults":[{"hash":"cfd27ed606d84d72dcf740d2e9f08d700c40e07e","isMergeCommit":false,"messageTitle":"added \"Deadline class\"","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":13,"deletions":0}}},{"hash":"833f611320c3253372408565be3cd7f2788dd3af","isMergeCommit":false,"messageTitle":"added \"Event class\"","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":16,"deletions":0}}},{"hash":"7d51fed9124b3d8228fb38725cdaa5887cdfc1c4","isMergeCommit":false,"messageTitle":"added \"Todo class\"","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":11,"deletions":0}}},{"hash":"db27ae4645611269218fb7de7d9ebc966658b03f","isMergeCommit":false,"messageTitle":"added \"Level 4. ToDos, Events, Deadlines\"","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":0}}},{"hash":"d84cd332408df0fa50e958889477925732129751","isMergeCommit":false,"messageTitle":"Revert \"added \"Level 4. ToDos, Events, Deadlines\"\"","messageBody":"This reverts commit db27ae4645611269218fb7de7d9ebc966658b03f.\n","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":4}}},{"hash":"0b0c6bce04c56dbe9a02612f55d01b7540821023","isMergeCommit":false,"messageTitle":"added \"toString method\"","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":0}}},{"hash":"9954a01bfc53e1de48d7205e94d4b0acb7a6bd37","isMergeCommit":false,"messageTitle":"added \"Level 4. ToDos, Events, Deadlines\"","messageBody":"","tags":["Level-4.-Todos,-Events,-Deadlines"],"fileTypesAndContributionMap":{"java":{"insertions":43,"deletions":6}}},{"hash":"881d3ecb0d46c76fa37c4f43f7219f5ec0272a5d","isMergeCommit":false,"messageTitle":"Changed a typo","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"fccb842ec18817e48fd908550f0ba3f400cd26fd","isMergeCommit":false,"messageTitle":"Added \"Input and Expected file for testing\"","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":9,"deletions":0}}},{"hash":"d02df7b440d182e10ce87e75c492e2ea558f3671","isMergeCommit":false,"messageTitle":"Added \"DukeExceptions class\"","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":63,"deletions":0}}},{"hash":"23b406681252209904b742e09e1b1f2c24530d81","isMergeCommit":false,"messageTitle":"Included different test cases for error handling","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":7,"deletions":0}}},{"hash":"07dfeb09354783a7dec79f6c7bbd8f5b6b38f4f9","isMergeCommit":false,"messageTitle":"Added \"Level 5. Handle Errors\"","messageBody":"","tags":["Level-5.-Handle-Errors"],"fileTypesAndContributionMap":{"java":{"insertions":31,"deletions":15}}},{"hash":"53ac49f21a2dc31e9daa7e98df06a7807df2e30e","isMergeCommit":false,"messageTitle":"added exceptions to check for empty list and delete action","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":13,"deletions":0}}},{"hash":"c43b645603a366b9ebf9e0baee86c7c7e767a11a","isMergeCommit":false,"messageTitle":"updated input and expected files to include new test cases","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":0}}},{"hash":"49ed0b62c53bf4c5e24e6472a265fb7ca5d4f234","isMergeCommit":false,"messageTitle":"added \"Level 6. Delete\"","messageBody":"","tags":["Level-6.-Delete"],"fileTypesAndContributionMap":{"java":{"insertions":19,"deletions":2}}}]}]},"authorFileTypeContributionMap":{"SherwynNg":{"java":270,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":0,"txt":19}},"authorContributionVariance":{"SherwynNg":11049.039},"authorDisplayNameMap":{"SherwynNg":"CS2103T-T13-2 SHER.. XIN"}} +{"authorDailyContributionsMap":{"SherwynNg":[{"date":"2024-01-22","commitResults":[{"hash":"76cf2ef78e6cf8207da529edc443c38e2d150bf9","isMergeCommit":false,"messageTitle":"added \"Level 0. Rename, Greet, Exit\"","messageBody":"","tags":["Level-0.-Rename,-Greet,-Exit"],"fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":6}}},{"hash":"655390bae88052cb0f7ccbeea078a47a761da2af","isMergeCommit":false,"messageTitle":"added \"level-1, echo\"","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":20,"deletions":7}}},{"hash":"1bef8c98904f8e8c51579b8eb65a34b1f660df58","isMergeCommit":false,"messageTitle":"removed printwriter","messageBody":"","tags":["Level-1.-Echo"],"fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":2}}},{"hash":"ef169c601893c81201a17db2db615a9647504d5d","isMergeCommit":false,"messageTitle":"added \"Level 2. Add, list\"","messageBody":"","tags":["Level-2.-Add,-list"],"fileTypesAndContributionMap":{"java":{"insertions":18,"deletions":3}}},{"hash":"89f774a0376a75a19fb5c4a8d78ee5822144f01e","isMergeCommit":false,"messageTitle":"added Task class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":25,"deletions":0}}},{"hash":"6f442e28c4be1d422995bb0fbf5cb2cc26326471","isMergeCommit":false,"messageTitle":"added \"Level 3. Mark as Done\"","messageBody":"","tags":["Level-3.-Mark-as-Done"],"fileTypesAndContributionMap":{"java":{"insertions":25,"deletions":7}}}]},{"date":"2024-01-23","commitResults":[{"hash":"cfd27ed606d84d72dcf740d2e9f08d700c40e07e","isMergeCommit":false,"messageTitle":"added \"Deadline class\"","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":13,"deletions":0}}},{"hash":"833f611320c3253372408565be3cd7f2788dd3af","isMergeCommit":false,"messageTitle":"added \"Event class\"","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":16,"deletions":0}}},{"hash":"7d51fed9124b3d8228fb38725cdaa5887cdfc1c4","isMergeCommit":false,"messageTitle":"added \"Todo class\"","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":11,"deletions":0}}},{"hash":"db27ae4645611269218fb7de7d9ebc966658b03f","isMergeCommit":false,"messageTitle":"added \"Level 4. ToDos, Events, Deadlines\"","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":0}}},{"hash":"d84cd332408df0fa50e958889477925732129751","isMergeCommit":false,"messageTitle":"Revert \"added \"Level 4. ToDos, Events, Deadlines\"\"","messageBody":"This reverts commit db27ae4645611269218fb7de7d9ebc966658b03f.\n","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":4}}},{"hash":"0b0c6bce04c56dbe9a02612f55d01b7540821023","isMergeCommit":false,"messageTitle":"added \"toString method\"","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":0}}},{"hash":"9954a01bfc53e1de48d7205e94d4b0acb7a6bd37","isMergeCommit":false,"messageTitle":"added \"Level 4. ToDos, Events, Deadlines\"","messageBody":"","tags":["Level-4.-Todos,-Events,-Deadlines"],"fileTypesAndContributionMap":{"java":{"insertions":43,"deletions":6}}},{"hash":"881d3ecb0d46c76fa37c4f43f7219f5ec0272a5d","isMergeCommit":false,"messageTitle":"Changed a typo","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"fccb842ec18817e48fd908550f0ba3f400cd26fd","isMergeCommit":false,"messageTitle":"Added \"Input and Expected file for testing\"","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":9,"deletions":0}}},{"hash":"d02df7b440d182e10ce87e75c492e2ea558f3671","isMergeCommit":false,"messageTitle":"Added \"DukeExceptions class\"","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":63,"deletions":0}}},{"hash":"23b406681252209904b742e09e1b1f2c24530d81","isMergeCommit":false,"messageTitle":"Included different test cases for error handling","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":7,"deletions":0}}},{"hash":"07dfeb09354783a7dec79f6c7bbd8f5b6b38f4f9","isMergeCommit":false,"messageTitle":"Added \"Level 5. Handle Errors\"","messageBody":"","tags":["Level-5.-Handle-Errors"],"fileTypesAndContributionMap":{"java":{"insertions":31,"deletions":15}}},{"hash":"53ac49f21a2dc31e9daa7e98df06a7807df2e30e","isMergeCommit":false,"messageTitle":"added exceptions to check for empty list and delete action","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":13,"deletions":0}}},{"hash":"c43b645603a366b9ebf9e0baee86c7c7e767a11a","isMergeCommit":false,"messageTitle":"updated input and expected files to include new test cases","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":0}}},{"hash":"49ed0b62c53bf4c5e24e6472a265fb7ca5d4f234","isMergeCommit":false,"messageTitle":"added \"Level 6. Delete\"","messageBody":"","tags":["Level-6.-Delete"],"fileTypesAndContributionMap":{"java":{"insertions":19,"deletions":2}}}]},{"date":"2024-01-30","commitResults":[{"hash":"60dac485667b0d79db687584ae0174408650de39","isMergeCommit":false,"messageTitle":"add enums","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":33,"deletions":20}}}]}]},"authorFileTypeContributionMap":{"SherwynNg":{"java":283,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":0,"txt":19}},"authorContributionVariance":{"SherwynNg":5996.354},"authorDisplayNameMap":{"SherwynNg":"CS2103T-T13-2 SHER.. XIN"}} diff --git a/SimHanKiong_ip_master/authorship.json b/SimHanKiong_ip_master/authorship.json index a17dc8a8..8f91629c 100644 --- a/SimHanKiong_ip_master/authorship.json +++ b/SimHanKiong_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"build.gradle","fileType":"gradle","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"plugins {","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":" id \u0027java\u0027","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":" id \u0027application\u0027","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"SimHanKiong"},"content":" id \u0027checkstyle\u0027","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"-"},"content":" id \u0027com.github.johnrengelman.shadow\u0027 version \u00277.1.2\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"repositories {","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":" mavenCentral()","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":"dependencies {","lastModifiedDate":"2020-05-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":" testImplementation group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-api\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":" testRuntimeOnly group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-engine\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":32,"author":{"gitId":"SimHanKiong"},"content":" mainClass.set(\"johnny.Johnny\")","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"SimHanKiong"},"content":" archiveBaseName \u003d \"johnny\"","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2020-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":39,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":"run{","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"SimHanKiong":3,"-":40}},{"path":"src/main/java/johnny/Johnny.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"SimHanKiong"},"content":"package johnny;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"SimHanKiong"},"content":"import johnny.commands.Command;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"SimHanKiong"},"content":"import johnny.exceptions.JohnnyException;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"SimHanKiong"},"content":"import johnny.parser.Parser;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"SimHanKiong"},"content":"import johnny.storage.Storage;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"SimHanKiong"},"content":"import johnny.tasks.TaskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"SimHanKiong"},"content":"import johnny.ui.Ui;","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"SimHanKiong"},"content":"public class Johnny {","lastModifiedDate":"2024-01-20"},{"lineNumber":11,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-20"},{"lineNumber":12,"author":{"gitId":"SimHanKiong"},"content":" private Storage storage;","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"SimHanKiong"},"content":" private TaskList tasks;","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"SimHanKiong"},"content":" private Ui ui;","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-20"},{"lineNumber":16,"author":{"gitId":"SimHanKiong"},"content":" public Johnny(String filePath) {","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"SimHanKiong"},"content":" ui \u003d new Ui();","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"SimHanKiong"},"content":" storage \u003d new Storage(filePath);","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-20"},{"lineNumber":20,"author":{"gitId":"SimHanKiong"},"content":" try {","lastModifiedDate":"2024-01-21"},{"lineNumber":21,"author":{"gitId":"SimHanKiong"},"content":" tasks \u003d new TaskList(storage.load());","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"SimHanKiong"},"content":" } catch (JohnnyException e) {","lastModifiedDate":"2024-01-21"},{"lineNumber":23,"author":{"gitId":"SimHanKiong"},"content":" ui.showError(e.getMessage());","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"SimHanKiong"},"content":" tasks \u003d new TaskList();","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-20"},{"lineNumber":26,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-20"},{"lineNumber":27,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-20"},{"lineNumber":28,"author":{"gitId":"SimHanKiong"},"content":" public void run() {","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"SimHanKiong"},"content":" ui.showWelcome();","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"SimHanKiong"},"content":" boolean isExit \u003d false;","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-20"},{"lineNumber":32,"author":{"gitId":"SimHanKiong"},"content":" while (!isExit) {","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"SimHanKiong"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":34,"author":{"gitId":"SimHanKiong"},"content":" String fullCommand \u003d ui.readCommand();","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"SimHanKiong"},"content":" Command c \u003d Parser.parse(fullCommand);","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"SimHanKiong"},"content":" c.execute(tasks, ui, storage);","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"SimHanKiong"},"content":" isExit \u003d c.isExit();","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"SimHanKiong"},"content":" } catch (JohnnyException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"SimHanKiong"},"content":" ui.showError(e.getMessage());","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":41,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":42,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":43,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":44,"author":{"gitId":"SimHanKiong"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"SimHanKiong"},"content":" new Johnny(\"src/main/data/tasks.txt\").run();","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":47,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":48,"author":{"gitId":"SimHanKiong"},"content":"}","lastModifiedDate":"2024-01-20"}],"authorContributionMap":{"SimHanKiong":48}},{"path":"src/main/java/johnny/commands/AddDeadlineCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"SimHanKiong"},"content":"package johnny.commands;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"SimHanKiong"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"SimHanKiong"},"content":"import johnny.exceptions.JohnnyException;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"SimHanKiong"},"content":"import johnny.storage.Storage;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"SimHanKiong"},"content":"import johnny.tasks.Deadline;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"SimHanKiong"},"content":"import johnny.tasks.Task;","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"SimHanKiong"},"content":"import johnny.tasks.TaskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"SimHanKiong"},"content":"import johnny.ui.Ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"SimHanKiong"},"content":"public class AddDeadlineCommand extends Command {","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"SimHanKiong"},"content":" private String name;","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"SimHanKiong"},"content":" private LocalDateTime by;","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"SimHanKiong"},"content":" public AddDeadlineCommand(String name, LocalDateTime by) {","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"SimHanKiong"},"content":" this.name \u003d name;","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"SimHanKiong"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"SimHanKiong"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"SimHanKiong"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws JohnnyException {","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"SimHanKiong"},"content":" Task task \u003d new Deadline(name, by);","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"SimHanKiong"},"content":" tasks.addTask(task);","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"SimHanKiong"},"content":" storage.appendToFile(task);","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"SimHanKiong"},"content":" ui.showAddTask(task, tasks);","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"SimHanKiong"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"SimHanKiong"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"SimHanKiong"},"content":" return false;","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"SimHanKiong"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"SimHanKiong":34}},{"path":"src/main/java/johnny/commands/AddEventCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"SimHanKiong"},"content":"package johnny.commands;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"SimHanKiong"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"SimHanKiong"},"content":"import johnny.exceptions.JohnnyException;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"SimHanKiong"},"content":"import johnny.storage.Storage;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"SimHanKiong"},"content":"import johnny.tasks.Event;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"SimHanKiong"},"content":"import johnny.tasks.Task;","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"SimHanKiong"},"content":"import johnny.tasks.TaskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"SimHanKiong"},"content":"import johnny.ui.Ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"SimHanKiong"},"content":"public class AddEventCommand extends Command {","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"SimHanKiong"},"content":" private String name;","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"SimHanKiong"},"content":" private LocalDateTime from;","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"SimHanKiong"},"content":" private LocalDateTime to;","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"SimHanKiong"},"content":" public AddEventCommand(String name, LocalDateTime from, LocalDateTime to) {","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"SimHanKiong"},"content":" this.name \u003d name;","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"SimHanKiong"},"content":" this.from \u003d from;","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"SimHanKiong"},"content":" this.to \u003d to;","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"SimHanKiong"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"SimHanKiong"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws JohnnyException {","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"SimHanKiong"},"content":" Task task \u003d new Event(name, from, to);","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"SimHanKiong"},"content":" tasks.addTask(task);","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"SimHanKiong"},"content":" storage.appendToFile(task);","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"SimHanKiong"},"content":" ui.showAddTask(task, tasks);","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"SimHanKiong"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"SimHanKiong"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"SimHanKiong"},"content":" return false;","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"SimHanKiong"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"SimHanKiong":36}},{"path":"src/main/java/johnny/commands/AddTodoCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"SimHanKiong"},"content":"package johnny.commands;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"SimHanKiong"},"content":"import johnny.exceptions.JohnnyException;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"SimHanKiong"},"content":"import johnny.storage.Storage;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"SimHanKiong"},"content":"import johnny.tasks.Task;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"SimHanKiong"},"content":"import johnny.tasks.TaskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"SimHanKiong"},"content":"import johnny.tasks.ToDo;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"SimHanKiong"},"content":"import johnny.ui.Ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"SimHanKiong"},"content":"public class AddTodoCommand extends Command {","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"SimHanKiong"},"content":" private String name;","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"SimHanKiong"},"content":" public AddTodoCommand(String name) {","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"SimHanKiong"},"content":" this.name \u003d name;","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"SimHanKiong"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"SimHanKiong"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws JohnnyException {","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"SimHanKiong"},"content":" Task task \u003d new ToDo(name);","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"SimHanKiong"},"content":" tasks.addTask(task);","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"SimHanKiong"},"content":" storage.appendToFile(task);","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"SimHanKiong"},"content":" ui.showAddTask(task, tasks);","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"SimHanKiong"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"SimHanKiong"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"SimHanKiong"},"content":" return false;","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"SimHanKiong"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"SimHanKiong":29}},{"path":"src/main/java/johnny/commands/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"SimHanKiong"},"content":"package johnny.commands;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"SimHanKiong"},"content":"import johnny.exceptions.JohnnyException;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"SimHanKiong"},"content":"import johnny.storage.Storage;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"SimHanKiong"},"content":"import johnny.tasks.TaskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"SimHanKiong"},"content":"import johnny.ui.Ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"SimHanKiong"},"content":"public abstract class Command {","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"SimHanKiong"},"content":" public abstract void execute(TaskList tasks, Ui ui, Storage storage) throws JohnnyException;","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"SimHanKiong"},"content":" public abstract boolean isExit();","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"SimHanKiong"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"SimHanKiong":13}},{"path":"src/main/java/johnny/commands/DeleteCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"SimHanKiong"},"content":"package johnny.commands;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"SimHanKiong"},"content":"import johnny.exceptions.JohnnyException;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"SimHanKiong"},"content":"import johnny.storage.Storage;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"SimHanKiong"},"content":"import johnny.tasks.Task;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"SimHanKiong"},"content":"import johnny.tasks.TaskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"SimHanKiong"},"content":"import johnny.ui.Ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"SimHanKiong"},"content":"public class DeleteCommand extends Command {","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"SimHanKiong"},"content":" private int index;","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"SimHanKiong"},"content":" public DeleteCommand(int index) {","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"SimHanKiong"},"content":" this.index \u003d index;","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"SimHanKiong"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"SimHanKiong"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws JohnnyException {","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"SimHanKiong"},"content":" Task task \u003d tasks.delete(index);","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"SimHanKiong"},"content":" storage.rewriteFile(tasks);","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"SimHanKiong"},"content":" ui.showDelete(task, tasks);","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"SimHanKiong"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"SimHanKiong"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"SimHanKiong"},"content":" return false;","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"SimHanKiong"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"SimHanKiong":29}},{"path":"src/main/java/johnny/commands/ExitCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"SimHanKiong"},"content":"package johnny.commands;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"SimHanKiong"},"content":"import johnny.storage.Storage;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"SimHanKiong"},"content":"import johnny.tasks.TaskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"SimHanKiong"},"content":"import johnny.ui.Ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"SimHanKiong"},"content":"public class ExitCommand extends Command {","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"SimHanKiong"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"SimHanKiong"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"SimHanKiong"},"content":" ui.showEnd();","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"SimHanKiong"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"SimHanKiong"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"SimHanKiong"},"content":" return true;","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"SimHanKiong"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"SimHanKiong":19}},{"path":"src/main/java/johnny/commands/ListCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"SimHanKiong"},"content":"package johnny.commands;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"SimHanKiong"},"content":"import johnny.exceptions.JohnnyException;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"SimHanKiong"},"content":"import johnny.storage.Storage;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"SimHanKiong"},"content":"import johnny.tasks.TaskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"SimHanKiong"},"content":"import johnny.ui.Ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"SimHanKiong"},"content":"public class ListCommand extends Command {","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"SimHanKiong"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"SimHanKiong"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws JohnnyException {","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"SimHanKiong"},"content":" ui.showList(tasks);","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"SimHanKiong"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"SimHanKiong"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"SimHanKiong"},"content":" return false;","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"SimHanKiong"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"SimHanKiong":19}},{"path":"src/main/java/johnny/commands/MarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"SimHanKiong"},"content":"package johnny.commands;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"SimHanKiong"},"content":"import johnny.exceptions.JohnnyException;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"SimHanKiong"},"content":"import johnny.storage.Storage;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"SimHanKiong"},"content":"import johnny.tasks.Task;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"SimHanKiong"},"content":"import johnny.tasks.TaskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"SimHanKiong"},"content":"import johnny.ui.Ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"SimHanKiong"},"content":"public class MarkCommand extends Command {","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"SimHanKiong"},"content":" private int index;","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"SimHanKiong"},"content":" public MarkCommand(int index) {","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"SimHanKiong"},"content":" this.index \u003d index;","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"SimHanKiong"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"SimHanKiong"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws JohnnyException {","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"SimHanKiong"},"content":" Task task \u003d tasks.mark(index);","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"SimHanKiong"},"content":" storage.rewriteFile(tasks);","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"SimHanKiong"},"content":" ui.showMark(task);","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"SimHanKiong"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"SimHanKiong"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"SimHanKiong"},"content":" return false;","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"SimHanKiong"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"SimHanKiong":29}},{"path":"src/main/java/johnny/commands/UnmarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"SimHanKiong"},"content":"package johnny.commands;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"SimHanKiong"},"content":"import johnny.exceptions.JohnnyException;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"SimHanKiong"},"content":"import johnny.storage.Storage;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"SimHanKiong"},"content":"import johnny.tasks.Task;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"SimHanKiong"},"content":"import johnny.tasks.TaskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"SimHanKiong"},"content":"import johnny.ui.Ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"SimHanKiong"},"content":"public class UnmarkCommand extends Command {","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"SimHanKiong"},"content":" private int index;","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"SimHanKiong"},"content":" public UnmarkCommand(int index) {","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"SimHanKiong"},"content":" this.index \u003d index;","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"SimHanKiong"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"SimHanKiong"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws JohnnyException {","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"SimHanKiong"},"content":" Task task \u003d tasks.unmark(index);","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"SimHanKiong"},"content":" storage.rewriteFile(tasks);","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"SimHanKiong"},"content":" ui.showUnmark(task);","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"SimHanKiong"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"SimHanKiong"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"SimHanKiong"},"content":" return false;","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"SimHanKiong"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"SimHanKiong":29}},{"path":"src/main/java/johnny/exceptions/JohnnyException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"SimHanKiong"},"content":"package johnny.exceptions;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"SimHanKiong"},"content":"public class JohnnyException extends Exception {","lastModifiedDate":"2024-01-21"},{"lineNumber":4,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":5,"author":{"gitId":"SimHanKiong"},"content":" public JohnnyException(String errorMessage) {","lastModifiedDate":"2024-01-21"},{"lineNumber":6,"author":{"gitId":"SimHanKiong"},"content":" super(errorMessage);","lastModifiedDate":"2024-01-21"},{"lineNumber":7,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":8,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":9,"author":{"gitId":"SimHanKiong"},"content":"}","lastModifiedDate":"2024-01-21"}],"authorContributionMap":{"SimHanKiong":9}},{"path":"src/main/java/johnny/parser/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"SimHanKiong"},"content":"package johnny.parser;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"SimHanKiong"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"SimHanKiong"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"SimHanKiong"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"SimHanKiong"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"SimHanKiong"},"content":"import java.util.List;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"SimHanKiong"},"content":"import johnny.commands.AddDeadlineCommand;","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"SimHanKiong"},"content":"import johnny.commands.AddEventCommand;","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"SimHanKiong"},"content":"import johnny.commands.AddTodoCommand;","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"SimHanKiong"},"content":"import johnny.commands.Command;","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"SimHanKiong"},"content":"import johnny.commands.DeleteCommand;","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"SimHanKiong"},"content":"import johnny.commands.ExitCommand;","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"SimHanKiong"},"content":"import johnny.commands.ListCommand;","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"SimHanKiong"},"content":"import johnny.commands.MarkCommand;","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"SimHanKiong"},"content":"import johnny.commands.UnmarkCommand;","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"SimHanKiong"},"content":"import johnny.exceptions.JohnnyException;","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"SimHanKiong"},"content":"public class Parser {","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"SimHanKiong"},"content":" private static final DateTimeFormatter INPUT_DATE_FORMAT \u003d DateTimeFormatter.ofPattern(\"yyyy/MM/dd HHmm\");","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"SimHanKiong"},"content":" public static Command parse(String fullCommand) throws JohnnyException {","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"SimHanKiong"},"content":" List\u003cString\u003e parsedCommand \u003d Arrays.asList(fullCommand.split(\" \"));","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"SimHanKiong"},"content":" if (parsedCommand.isEmpty()) {","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"SimHanKiong"},"content":" throw new JohnnyException(\"Enter a command bro.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"SimHanKiong"},"content":" String command \u003d parsedCommand.get(0);","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"SimHanKiong"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"SimHanKiong"},"content":" switch (command) {","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"SimHanKiong"},"content":" case \"bye\":","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"SimHanKiong"},"content":" return new ExitCommand();","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"SimHanKiong"},"content":" case \"list\":","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"SimHanKiong"},"content":" return new ListCommand();","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"SimHanKiong"},"content":" case \"mark\":","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"SimHanKiong"},"content":" if (parsedCommand.size() \u003c 2) {","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"SimHanKiong"},"content":" throw new JohnnyException(\"Which task do you want to mark bro?\");","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"SimHanKiong"},"content":" } else if (parsedCommand.size() \u003e 2) {","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"SimHanKiong"},"content":" throw new JohnnyException(\"I can only mark 1 task bro.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"SimHanKiong"},"content":" int index \u003d Integer.parseInt(parsedCommand.get(1)) - 1;","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"SimHanKiong"},"content":" return new MarkCommand(index);","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"SimHanKiong"},"content":" case \"unmark\":","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"SimHanKiong"},"content":" if (parsedCommand.size() \u003c 2) {","lastModifiedDate":"2024-01-29"},{"lineNumber":50,"author":{"gitId":"SimHanKiong"},"content":" throw new JohnnyException(\"Which task do you want to unmark bro?\");","lastModifiedDate":"2024-01-29"},{"lineNumber":51,"author":{"gitId":"SimHanKiong"},"content":" } else if (parsedCommand.size() \u003e 2) {","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"SimHanKiong"},"content":" throw new JohnnyException(\"I can only unmark 1 task bro.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":53,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":54,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":55,"author":{"gitId":"SimHanKiong"},"content":" index \u003d Integer.parseInt(parsedCommand.get(1)) - 1;","lastModifiedDate":"2024-01-29"},{"lineNumber":56,"author":{"gitId":"SimHanKiong"},"content":" return new UnmarkCommand(index);","lastModifiedDate":"2024-01-29"},{"lineNumber":57,"author":{"gitId":"SimHanKiong"},"content":" case \"delete\":","lastModifiedDate":"2024-01-29"},{"lineNumber":58,"author":{"gitId":"SimHanKiong"},"content":" if (parsedCommand.size() \u003c 2) {","lastModifiedDate":"2024-01-29"},{"lineNumber":59,"author":{"gitId":"SimHanKiong"},"content":" throw new JohnnyException(\"Which task am I supposed to delete bro?\");","lastModifiedDate":"2024-01-29"},{"lineNumber":60,"author":{"gitId":"SimHanKiong"},"content":" } else if (parsedCommand.size() \u003e 2) {","lastModifiedDate":"2024-01-29"},{"lineNumber":61,"author":{"gitId":"SimHanKiong"},"content":" throw new JohnnyException(\"I can only delete 1 task bro.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":62,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":63,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":64,"author":{"gitId":"SimHanKiong"},"content":" index \u003d Integer.parseInt(parsedCommand.get(1)) - 1;","lastModifiedDate":"2024-01-29"},{"lineNumber":65,"author":{"gitId":"SimHanKiong"},"content":" return new DeleteCommand(index);","lastModifiedDate":"2024-01-29"},{"lineNumber":66,"author":{"gitId":"SimHanKiong"},"content":" case \"todo\":","lastModifiedDate":"2024-01-29"},{"lineNumber":67,"author":{"gitId":"SimHanKiong"},"content":" if (parsedCommand.size() \u003c 2) {","lastModifiedDate":"2024-01-29"},{"lineNumber":68,"author":{"gitId":"SimHanKiong"},"content":" throw new JohnnyException(\"What is your todo bro?\");","lastModifiedDate":"2024-01-29"},{"lineNumber":69,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":70,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":71,"author":{"gitId":"SimHanKiong"},"content":" String name \u003d String.join(\" \", parsedCommand.subList(1, parsedCommand.size()));","lastModifiedDate":"2024-01-29"},{"lineNumber":72,"author":{"gitId":"SimHanKiong"},"content":" return new AddTodoCommand(name);","lastModifiedDate":"2024-01-29"},{"lineNumber":73,"author":{"gitId":"SimHanKiong"},"content":" case \"deadline\":","lastModifiedDate":"2024-01-29"},{"lineNumber":74,"author":{"gitId":"SimHanKiong"},"content":" if (parsedCommand.size() \u003c 2) {","lastModifiedDate":"2024-01-29"},{"lineNumber":75,"author":{"gitId":"SimHanKiong"},"content":" throw new JohnnyException(\"What is your deadline bro?\");","lastModifiedDate":"2024-01-29"},{"lineNumber":76,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":77,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":78,"author":{"gitId":"SimHanKiong"},"content":" int i \u003d parsedCommand.indexOf(\"/by\");","lastModifiedDate":"2024-01-29"},{"lineNumber":79,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":80,"author":{"gitId":"SimHanKiong"},"content":" if (i \u003d\u003d -1) {","lastModifiedDate":"2024-01-29"},{"lineNumber":81,"author":{"gitId":"SimHanKiong"},"content":" throw new JohnnyException(\"When is your deadline by bro?\");","lastModifiedDate":"2024-01-29"},{"lineNumber":82,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":83,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":84,"author":{"gitId":"SimHanKiong"},"content":" name \u003d String.join(\" \", parsedCommand.subList(1, i));","lastModifiedDate":"2024-01-29"},{"lineNumber":85,"author":{"gitId":"SimHanKiong"},"content":" String by \u003d String.join(\" \", parsedCommand.subList(i + 1, parsedCommand.size()));","lastModifiedDate":"2024-01-29"},{"lineNumber":86,"author":{"gitId":"SimHanKiong"},"content":" LocalDateTime byDate \u003d LocalDateTime.parse(by, INPUT_DATE_FORMAT);","lastModifiedDate":"2024-01-29"},{"lineNumber":87,"author":{"gitId":"SimHanKiong"},"content":" return new AddDeadlineCommand(name, byDate);","lastModifiedDate":"2024-01-29"},{"lineNumber":88,"author":{"gitId":"SimHanKiong"},"content":" case \"event\":","lastModifiedDate":"2024-01-29"},{"lineNumber":89,"author":{"gitId":"SimHanKiong"},"content":" if (parsedCommand.size() \u003c 2) {","lastModifiedDate":"2024-01-29"},{"lineNumber":90,"author":{"gitId":"SimHanKiong"},"content":" throw new JohnnyException(\"What is your deadline bro?\");","lastModifiedDate":"2024-01-29"},{"lineNumber":91,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":92,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":93,"author":{"gitId":"SimHanKiong"},"content":" i \u003d parsedCommand.indexOf(\"/from\");","lastModifiedDate":"2024-01-29"},{"lineNumber":94,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":95,"author":{"gitId":"SimHanKiong"},"content":" if (i \u003d\u003d -1) {","lastModifiedDate":"2024-01-29"},{"lineNumber":96,"author":{"gitId":"SimHanKiong"},"content":" throw new JohnnyException(\"When does your event start from bro?\");","lastModifiedDate":"2024-01-29"},{"lineNumber":97,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":98,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":99,"author":{"gitId":"SimHanKiong"},"content":" int j \u003d parsedCommand.indexOf(\"/to\");","lastModifiedDate":"2024-01-29"},{"lineNumber":100,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":101,"author":{"gitId":"SimHanKiong"},"content":" if (j \u003d\u003d -1) {","lastModifiedDate":"2024-01-29"},{"lineNumber":102,"author":{"gitId":"SimHanKiong"},"content":" throw new JohnnyException(\"When does your event last to bro?\");","lastModifiedDate":"2024-01-29"},{"lineNumber":103,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":104,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":105,"author":{"gitId":"SimHanKiong"},"content":" name \u003d String.join(\" \", parsedCommand.subList(1, i));","lastModifiedDate":"2024-01-29"},{"lineNumber":106,"author":{"gitId":"SimHanKiong"},"content":" String from \u003d String.join(\" \", parsedCommand.subList(i + 1, j));","lastModifiedDate":"2024-01-29"},{"lineNumber":107,"author":{"gitId":"SimHanKiong"},"content":" String to \u003d String.join(\" \", parsedCommand.subList(j + 1, parsedCommand.size()));","lastModifiedDate":"2024-01-29"},{"lineNumber":108,"author":{"gitId":"SimHanKiong"},"content":" LocalDateTime fromDate \u003d LocalDateTime.parse(from, INPUT_DATE_FORMAT);","lastModifiedDate":"2024-01-29"},{"lineNumber":109,"author":{"gitId":"SimHanKiong"},"content":" LocalDateTime toDate \u003d LocalDateTime.parse(to, INPUT_DATE_FORMAT);","lastModifiedDate":"2024-01-29"},{"lineNumber":110,"author":{"gitId":"SimHanKiong"},"content":" return new AddEventCommand(name, fromDate, toDate);","lastModifiedDate":"2024-01-29"},{"lineNumber":111,"author":{"gitId":"SimHanKiong"},"content":" default:","lastModifiedDate":"2024-01-29"},{"lineNumber":112,"author":{"gitId":"SimHanKiong"},"content":" throw new JohnnyException(\"Your command does not make sense bro.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":113,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":114,"author":{"gitId":"SimHanKiong"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":115,"author":{"gitId":"SimHanKiong"},"content":" throw new JohnnyException(\"Enter a valid number bro.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":116,"author":{"gitId":"SimHanKiong"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":117,"author":{"gitId":"SimHanKiong"},"content":" throw new JohnnyException(\"Date and Time should be in the format of YYYY/MM/DD HHMM bro.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":118,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":119,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":120,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":121,"author":{"gitId":"SimHanKiong"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"SimHanKiong":121}},{"path":"src/main/java/johnny/storage/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"SimHanKiong"},"content":"package johnny.storage;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"SimHanKiong"},"content":"import java.io.File;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"SimHanKiong"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"SimHanKiong"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"SimHanKiong"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"SimHanKiong"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"SimHanKiong"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"SimHanKiong"},"content":"import java.util.List;","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"SimHanKiong"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"SimHanKiong"},"content":"import johnny.exceptions.JohnnyException;","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"SimHanKiong"},"content":"import johnny.tasks.Deadline;","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"SimHanKiong"},"content":"import johnny.tasks.Event;","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"SimHanKiong"},"content":"import johnny.tasks.Task;","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"SimHanKiong"},"content":"import johnny.tasks.TaskList;","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"SimHanKiong"},"content":"import johnny.tasks.ToDo;","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"SimHanKiong"},"content":"public class Storage {","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"SimHanKiong"},"content":" private static final DateTimeFormatter INPUT_DATE_FORMAT \u003d DateTimeFormatter.ofPattern(\"yyyy/MM/dd HHmm\");","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"SimHanKiong"},"content":" private String filePath;","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"SimHanKiong"},"content":" public Storage(String filePath) {","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"SimHanKiong"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"SimHanKiong"},"content":" public List\u003cTask\u003e load() throws JohnnyException {","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"SimHanKiong"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"SimHanKiong"},"content":" File file \u003d new File(filePath);","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"SimHanKiong"},"content":" List\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"SimHanKiong"},"content":" if (!file.isFile() \u0026\u0026 file.getParentFile().mkdir()) {","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"SimHanKiong"},"content":" file.createNewFile();","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"SimHanKiong"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"SimHanKiong"},"content":" Scanner scanner \u003d new Scanner(file);","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"SimHanKiong"},"content":" while (scanner.hasNext()) {","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"SimHanKiong"},"content":" String input \u003d scanner.nextLine();","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"SimHanKiong"},"content":" String[] parsedInput \u003d input.split(\" \\\\| \");","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"SimHanKiong"},"content":" Task task;","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"SimHanKiong"},"content":" String taskType \u003d parsedInput[0];","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"SimHanKiong"},"content":" switch(taskType) {","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"SimHanKiong"},"content":" case \"T\":","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"SimHanKiong"},"content":" task \u003d new ToDo(parsedInput[2]);","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"SimHanKiong"},"content":" break;","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"SimHanKiong"},"content":" case \"D\":","lastModifiedDate":"2024-01-29"},{"lineNumber":50,"author":{"gitId":"SimHanKiong"},"content":" LocalDateTime by \u003d LocalDateTime.parse(parsedInput[3], INPUT_DATE_FORMAT);","lastModifiedDate":"2024-01-29"},{"lineNumber":51,"author":{"gitId":"SimHanKiong"},"content":" task \u003d new Deadline(parsedInput[2], by);","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"SimHanKiong"},"content":" break;","lastModifiedDate":"2024-01-29"},{"lineNumber":53,"author":{"gitId":"SimHanKiong"},"content":" case \"E\":","lastModifiedDate":"2024-01-29"},{"lineNumber":54,"author":{"gitId":"SimHanKiong"},"content":" LocalDateTime from \u003d LocalDateTime.parse(parsedInput[3], INPUT_DATE_FORMAT);","lastModifiedDate":"2024-01-29"},{"lineNumber":55,"author":{"gitId":"SimHanKiong"},"content":" LocalDateTime to \u003d LocalDateTime.parse(parsedInput[4], INPUT_DATE_FORMAT);","lastModifiedDate":"2024-01-29"},{"lineNumber":56,"author":{"gitId":"SimHanKiong"},"content":" task \u003d new Event(parsedInput[2], from, to);","lastModifiedDate":"2024-01-29"},{"lineNumber":57,"author":{"gitId":"SimHanKiong"},"content":" break;","lastModifiedDate":"2024-01-29"},{"lineNumber":58,"author":{"gitId":"SimHanKiong"},"content":" default:","lastModifiedDate":"2024-01-29"},{"lineNumber":59,"author":{"gitId":"SimHanKiong"},"content":" throw new JohnnyException(\"The file has been corrupted bro.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":60,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":61,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":62,"author":{"gitId":"SimHanKiong"},"content":" if (parsedInput[1].equals(\"1\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":63,"author":{"gitId":"SimHanKiong"},"content":" task.mark();","lastModifiedDate":"2024-01-29"},{"lineNumber":64,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":65,"author":{"gitId":"SimHanKiong"},"content":" tasks.add(task);","lastModifiedDate":"2024-01-29"},{"lineNumber":66,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":67,"author":{"gitId":"SimHanKiong"},"content":" scanner.close();","lastModifiedDate":"2024-01-29"},{"lineNumber":68,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":69,"author":{"gitId":"SimHanKiong"},"content":" return tasks;","lastModifiedDate":"2024-01-29"},{"lineNumber":70,"author":{"gitId":"SimHanKiong"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":71,"author":{"gitId":"SimHanKiong"},"content":" throw new JohnnyException(\"I can\u0027t create a new file bro: \" + e.getMessage());","lastModifiedDate":"2024-01-29"},{"lineNumber":72,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":73,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":74,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":75,"author":{"gitId":"SimHanKiong"},"content":" public void rewriteFile(TaskList tasks) throws JohnnyException {","lastModifiedDate":"2024-01-29"},{"lineNumber":76,"author":{"gitId":"SimHanKiong"},"content":" try (FileWriter fw \u003d new FileWriter(filePath)) {","lastModifiedDate":"2024-01-29"},{"lineNumber":77,"author":{"gitId":"SimHanKiong"},"content":" for (int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2024-01-29"},{"lineNumber":78,"author":{"gitId":"SimHanKiong"},"content":" fw.write(tasks.get(i).addToFile());","lastModifiedDate":"2024-01-29"},{"lineNumber":79,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":80,"author":{"gitId":"SimHanKiong"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":81,"author":{"gitId":"SimHanKiong"},"content":" throw new JohnnyException(\"Cannot write to file bro: \" + e.getMessage());","lastModifiedDate":"2024-01-29"},{"lineNumber":82,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":83,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":84,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":85,"author":{"gitId":"SimHanKiong"},"content":" public void appendToFile(Task task) throws JohnnyException {","lastModifiedDate":"2024-01-29"},{"lineNumber":86,"author":{"gitId":"SimHanKiong"},"content":" try (FileWriter fw \u003d new FileWriter(filePath, true)) {","lastModifiedDate":"2024-01-29"},{"lineNumber":87,"author":{"gitId":"SimHanKiong"},"content":" fw.write(task.addToFile());","lastModifiedDate":"2024-01-29"},{"lineNumber":88,"author":{"gitId":"SimHanKiong"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":89,"author":{"gitId":"SimHanKiong"},"content":" throw new JohnnyException(\"Cannot write to file bro: \" + e.getMessage());","lastModifiedDate":"2024-01-29"},{"lineNumber":90,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":91,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":92,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":93,"author":{"gitId":"SimHanKiong"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"SimHanKiong":93}},{"path":"src/main/java/johnny/tasks/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"SimHanKiong"},"content":"package johnny.tasks;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"SimHanKiong"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"SimHanKiong"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-21"},{"lineNumber":6,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":7,"author":{"gitId":"SimHanKiong"},"content":" private LocalDateTime by;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":9,"author":{"gitId":"SimHanKiong"},"content":" public Deadline(String name, LocalDateTime by) {","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"SimHanKiong"},"content":" super(name);","lastModifiedDate":"2024-01-21"},{"lineNumber":11,"author":{"gitId":"SimHanKiong"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-21"},{"lineNumber":12,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":13,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":14,"author":{"gitId":"SimHanKiong"},"content":" @Override","lastModifiedDate":"2024-01-21"},{"lineNumber":15,"author":{"gitId":"SimHanKiong"},"content":" public String toString() {","lastModifiedDate":"2024-01-21"},{"lineNumber":16,"author":{"gitId":"SimHanKiong"},"content":" return \"[D]\" + super.toString() + \" (by: \" + super.formatOutputDate(by) + \")\";","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":18,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":19,"author":{"gitId":"SimHanKiong"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"SimHanKiong"},"content":" public String addToFile() {","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"SimHanKiong"},"content":" return \"D | \" + super.addToFile() + \" | \" + super.formatInputDate(by) + \"\\n\";","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"SimHanKiong"},"content":"}","lastModifiedDate":"2024-01-21"}],"authorContributionMap":{"SimHanKiong":24}},{"path":"src/main/java/johnny/tasks/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"SimHanKiong"},"content":"package johnny.tasks;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"SimHanKiong"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"SimHanKiong"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-21"},{"lineNumber":6,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":7,"author":{"gitId":"SimHanKiong"},"content":" private LocalDateTime from;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"SimHanKiong"},"content":" private LocalDateTime to;","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":10,"author":{"gitId":"SimHanKiong"},"content":" public Event(String name, LocalDateTime from, LocalDateTime to) {","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"SimHanKiong"},"content":" super(name);","lastModifiedDate":"2024-01-21"},{"lineNumber":12,"author":{"gitId":"SimHanKiong"},"content":" this.from \u003d from;","lastModifiedDate":"2024-01-21"},{"lineNumber":13,"author":{"gitId":"SimHanKiong"},"content":" this.to \u003d to;","lastModifiedDate":"2024-01-21"},{"lineNumber":14,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":15,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":16,"author":{"gitId":"SimHanKiong"},"content":" @Override","lastModifiedDate":"2024-01-21"},{"lineNumber":17,"author":{"gitId":"SimHanKiong"},"content":" public String toString() {","lastModifiedDate":"2024-01-21"},{"lineNumber":18,"author":{"gitId":"SimHanKiong"},"content":" return \"[E]\" + super.toString() + \" (from: \" + super.formatOutputDate(from)","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"SimHanKiong"},"content":" + \" to: \" + super.formatOutputDate(to) + \")\";","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":21,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":22,"author":{"gitId":"SimHanKiong"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"SimHanKiong"},"content":" public String addToFile() {","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"SimHanKiong"},"content":" return \"E | \" + super.addToFile() + \" | \" + super.formatInputDate(from)","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"SimHanKiong"},"content":" + \" | \" + super.formatInputDate(to) + \"\\n\";","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"SimHanKiong"},"content":"}","lastModifiedDate":"2024-01-21"}],"authorContributionMap":{"SimHanKiong":28}},{"path":"src/main/java/johnny/tasks/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"SimHanKiong"},"content":"package johnny.tasks;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"SimHanKiong"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"SimHanKiong"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"SimHanKiong"},"content":"public class Task {","lastModifiedDate":"2024-01-20"},{"lineNumber":7,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-20"},{"lineNumber":8,"author":{"gitId":"SimHanKiong"},"content":" private static final DateTimeFormatter INPUT_DATE_FORMAT \u003d DateTimeFormatter.ofPattern(\"yyyy/MM/dd HHmm\");","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"SimHanKiong"},"content":" private static final DateTimeFormatter OUTPUT_DATE_FORMAT \u003d DateTimeFormatter.ofPattern(\"MMM dd yyyy hh:mm a\");","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"SimHanKiong"},"content":" private String name;","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"SimHanKiong"},"content":" private boolean isDone \u003d false;","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-20"},{"lineNumber":14,"author":{"gitId":"SimHanKiong"},"content":" public Task(String name) {","lastModifiedDate":"2024-01-20"},{"lineNumber":15,"author":{"gitId":"SimHanKiong"},"content":" this.name \u003d name;","lastModifiedDate":"2024-01-20"},{"lineNumber":16,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-20"},{"lineNumber":17,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-20"},{"lineNumber":18,"author":{"gitId":"SimHanKiong"},"content":" public void mark() {","lastModifiedDate":"2024-01-20"},{"lineNumber":19,"author":{"gitId":"SimHanKiong"},"content":" isDone \u003d true;","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-20"},{"lineNumber":21,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-20"},{"lineNumber":22,"author":{"gitId":"SimHanKiong"},"content":" public void unmark() {","lastModifiedDate":"2024-01-20"},{"lineNumber":23,"author":{"gitId":"SimHanKiong"},"content":" isDone \u003d false;","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-20"},{"lineNumber":25,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-20"},{"lineNumber":26,"author":{"gitId":"SimHanKiong"},"content":" @Override","lastModifiedDate":"2024-01-20"},{"lineNumber":27,"author":{"gitId":"SimHanKiong"},"content":" public String toString() {","lastModifiedDate":"2024-01-20"},{"lineNumber":28,"author":{"gitId":"SimHanKiong"},"content":" String x \u003d isDone ? \"X\" : \" \";","lastModifiedDate":"2024-01-20"},{"lineNumber":29,"author":{"gitId":"SimHanKiong"},"content":" return \"[\" + x + \"] \" + name;","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"SimHanKiong"},"content":" public String addToFile() {","lastModifiedDate":"2024-01-28"},{"lineNumber":33,"author":{"gitId":"SimHanKiong"},"content":" String isDone \u003d this.isDone ? \"1\" : \"0\";","lastModifiedDate":"2024-01-28"},{"lineNumber":34,"author":{"gitId":"SimHanKiong"},"content":" return isDone + \" | \" + name;","lastModifiedDate":"2024-01-28"},{"lineNumber":35,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-20"},{"lineNumber":36,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-20"},{"lineNumber":37,"author":{"gitId":"SimHanKiong"},"content":" public String formatInputDate(LocalDateTime dateTime) {","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"SimHanKiong"},"content":" return dateTime.format(INPUT_DATE_FORMAT);","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"SimHanKiong"},"content":" public String formatOutputDate(LocalDateTime dateTime) {","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"SimHanKiong"},"content":" return dateTime.format(OUTPUT_DATE_FORMAT);","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"SimHanKiong"},"content":"}","lastModifiedDate":"2024-01-20"}],"authorContributionMap":{"SimHanKiong":45}},{"path":"src/main/java/johnny/tasks/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"SimHanKiong"},"content":"package johnny.tasks;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"SimHanKiong"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"SimHanKiong"},"content":"import java.util.List;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"SimHanKiong"},"content":"import johnny.exceptions.JohnnyException;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"SimHanKiong"},"content":"public class TaskList {","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"SimHanKiong"},"content":" private List\u003cTask\u003e tasks;","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"SimHanKiong"},"content":" public TaskList(List\u003cTask\u003e tasks) {","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"SimHanKiong"},"content":" this.tasks \u003d tasks;","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"SimHanKiong"},"content":" public TaskList() {","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"SimHanKiong"},"content":" tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"SimHanKiong"},"content":" public Task get(int index) throws JohnnyException {","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"SimHanKiong"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"SimHanKiong"},"content":" return tasks.get(index);","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"SimHanKiong"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"SimHanKiong"},"content":" throw new JohnnyException(\"This task does not exist bro.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"SimHanKiong"},"content":" public Task mark(int index) throws JohnnyException {","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"SimHanKiong"},"content":" Task task \u003d get(index);","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"SimHanKiong"},"content":" task.mark();","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"SimHanKiong"},"content":" return task;","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"SimHanKiong"},"content":" public Task unmark(int index) throws JohnnyException {","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"SimHanKiong"},"content":" Task task \u003d get(index);","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"SimHanKiong"},"content":" task.unmark();","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"SimHanKiong"},"content":" return task;","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"SimHanKiong"},"content":" public Task delete(int index) throws JohnnyException {","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"SimHanKiong"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"SimHanKiong"},"content":" Task task \u003d tasks.remove(index);","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"SimHanKiong"},"content":" return task;","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"SimHanKiong"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"SimHanKiong"},"content":" throw new JohnnyException(\"This task does not exist bro.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"SimHanKiong"},"content":" public int size() {","lastModifiedDate":"2024-01-29"},{"lineNumber":50,"author":{"gitId":"SimHanKiong"},"content":" return tasks.size();","lastModifiedDate":"2024-01-29"},{"lineNumber":51,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":53,"author":{"gitId":"SimHanKiong"},"content":" public void addTask(Task task) {","lastModifiedDate":"2024-01-29"},{"lineNumber":54,"author":{"gitId":"SimHanKiong"},"content":" tasks.add(task);","lastModifiedDate":"2024-01-29"},{"lineNumber":55,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":56,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":57,"author":{"gitId":"SimHanKiong"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"SimHanKiong":57}},{"path":"src/main/java/johnny/tasks/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"SimHanKiong"},"content":"package johnny.tasks;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"SimHanKiong"},"content":"public class ToDo extends Task {","lastModifiedDate":"2024-01-21"},{"lineNumber":4,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":5,"author":{"gitId":"SimHanKiong"},"content":" public ToDo(String name) {","lastModifiedDate":"2024-01-21"},{"lineNumber":6,"author":{"gitId":"SimHanKiong"},"content":" super(name);","lastModifiedDate":"2024-01-21"},{"lineNumber":7,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":8,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":9,"author":{"gitId":"SimHanKiong"},"content":" @Override","lastModifiedDate":"2024-01-21"},{"lineNumber":10,"author":{"gitId":"SimHanKiong"},"content":" public String toString() {","lastModifiedDate":"2024-01-21"},{"lineNumber":11,"author":{"gitId":"SimHanKiong"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2024-01-21"},{"lineNumber":12,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":13,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"SimHanKiong"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"SimHanKiong"},"content":" public String addToFile() {","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"SimHanKiong"},"content":" return \"T | \" + super.addToFile() + \"\\n\";","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"SimHanKiong"},"content":"}","lastModifiedDate":"2024-01-21"}],"authorContributionMap":{"SimHanKiong":19}},{"path":"src/main/java/johnny/ui/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"SimHanKiong"},"content":"package johnny.ui;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"SimHanKiong"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"SimHanKiong"},"content":"import johnny.exceptions.JohnnyException;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"SimHanKiong"},"content":"import johnny.tasks.Task;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"SimHanKiong"},"content":"import johnny.tasks.TaskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"SimHanKiong"},"content":"public class Ui {","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"SimHanKiong"},"content":" private Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"SimHanKiong"},"content":" public void showError(String errorMessage) {","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"SimHanKiong"},"content":" System.out.println(errorMessage + \"\\n\");","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"SimHanKiong"},"content":" public void showWelcome() {","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"SimHanKiong"},"content":" System.out.println(\"Johnny here. What do you want bro?\\n\");","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"SimHanKiong"},"content":" public void showEnd() {","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"SimHanKiong"},"content":" scanner.close();","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"SimHanKiong"},"content":" System.out.println(\"Bye bro. I\u0027m going back to sleep.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"SimHanKiong"},"content":" public void showList(TaskList tasks) throws JohnnyException {","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"SimHanKiong"},"content":" System.out.println(\"Get all these done bro:\");","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"SimHanKiong"},"content":" for (int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"SimHanKiong"},"content":" System.out.println(i + 1 + \". \" + tasks.get(i));","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"SimHanKiong"},"content":" System.out.println();","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"SimHanKiong"},"content":" public void showMark(Task task) {","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"SimHanKiong"},"content":" System.out.println(\"Finally done bro.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"SimHanKiong"},"content":" System.out.println(task + \"\\n\");","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"SimHanKiong"},"content":" public void showUnmark(Task task) {","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"SimHanKiong"},"content":" System.out.println(\"Why are you not done yet bro?\");","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"SimHanKiong"},"content":" System.out.println(task + \"\\n\");","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"SimHanKiong"},"content":" public void showDelete(Task task, TaskList tasks) {","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"SimHanKiong"},"content":" System.out.println(\"Task removed. Why so lazy bro?\");","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"SimHanKiong"},"content":" System.out.println(task);","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"SimHanKiong"},"content":" System.out.println(\"You still have \" + tasks.size() + \" tasks in your list bro.\\n\");","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":50,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":51,"author":{"gitId":"SimHanKiong"},"content":" public void showAddTask(Task task, TaskList tasks) {","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"SimHanKiong"},"content":" System.out.println(\"Go get this done bro:\");","lastModifiedDate":"2024-01-29"},{"lineNumber":53,"author":{"gitId":"SimHanKiong"},"content":" System.out.println(task);","lastModifiedDate":"2024-01-29"},{"lineNumber":54,"author":{"gitId":"SimHanKiong"},"content":" System.out.println(\"You still have \" + tasks.size() + \" tasks in your list bro.\\n\");","lastModifiedDate":"2024-01-29"},{"lineNumber":55,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":56,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":57,"author":{"gitId":"SimHanKiong"},"content":" public String readCommand() {","lastModifiedDate":"2024-01-29"},{"lineNumber":58,"author":{"gitId":"SimHanKiong"},"content":" return scanner.nextLine();","lastModifiedDate":"2024-01-29"},{"lineNumber":59,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":60,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":61,"author":{"gitId":"SimHanKiong"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"SimHanKiong":61}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"SimHanKiong"},"content":"todo borrow book","lastModifiedDate":"2024-01-21"},{"lineNumber":2,"author":{"gitId":"SimHanKiong"},"content":"deadline return book /by Sunday","lastModifiedDate":"2024-01-21"},{"lineNumber":3,"author":{"gitId":"SimHanKiong"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2024-01-21"},{"lineNumber":4,"author":{"gitId":"SimHanKiong"},"content":"list","lastModifiedDate":"2024-01-21"},{"lineNumber":5,"author":{"gitId":"SimHanKiong"},"content":"mark 1","lastModifiedDate":"2024-01-21"},{"lineNumber":6,"author":{"gitId":"SimHanKiong"},"content":"list","lastModifiedDate":"2024-01-21"},{"lineNumber":7,"author":{"gitId":"SimHanKiong"},"content":"unmark 1","lastModifiedDate":"2024-01-21"},{"lineNumber":8,"author":{"gitId":"SimHanKiong"},"content":"list","lastModifiedDate":"2024-01-21"},{"lineNumber":9,"author":{"gitId":"SimHanKiong"},"content":"delete 2","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"SimHanKiong"},"content":"blablabla","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"SimHanKiong"},"content":"bye","lastModifiedDate":"2024-01-21"}],"authorContributionMap":{"SimHanKiong":11}},{"path":"text-ui-test/runtest.bat","fileType":"bat","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@ECHO OFF","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"REM create bin directory if it doesn\u0027t exist","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"if not exist ..\\bin mkdir ..\\bin","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"REM delete output from previous run","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"if exist ACTUAL.TXT del ACTUAL.TXT","lastModifiedDate":"2020-08-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"REM compile the code into the bin folder","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"javac -cp ..\\src\\main\\java -Xlint:none -d ..\\bin ..\\src\\main\\java\\*.java","lastModifiedDate":"2020-08-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"IF ERRORLEVEL 1 (","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":" echo ********** BUILD FAILURE **********","lastModifiedDate":"2020-05-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":" exit /b 1","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":")","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"REM no error here, errorlevel \u003d\u003d 0","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"SimHanKiong"},"content":"REM run the program, feed johnny.commands from input.txt file and redirect the output to the ACTUAL.TXT","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"-"},"content":"java -classpath ..\\bin Duke \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"REM compare the output to the expected output","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"FC ACTUAL.TXT EXPECTED.TXT","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"SimHanKiong":1,"-":20}},{"path":"text-ui-test/runtest.sh","fileType":"sh","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"#!/usr/bin/env bash","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"# create bin directory if it doesn\u0027t exist","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"if [ ! -d \"../bin\" ]","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":" mkdir ../bin","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"# delete output from previous run","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"if [ -e \"./ACTUAL.TXT\" ]","lastModifiedDate":"2020-05-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":" rm ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"# compile the code into the bin folder, terminates if error occurred","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"SimHanKiong"},"content":"if ! javac -cp ../src/main/java/johnny -Xlint:none -d ../bin ../src/main/java/johnny/*.java","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" echo \"********** BUILD FAILURE **********\"","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" exit 1","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"SimHanKiong"},"content":"# run the program, feed johnny.commands from input.txt file and redirect the output to the ACTUAL.TXT","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"SimHanKiong"},"content":"java -classpath ../bin Johnny \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-01-21"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":"# convert to UNIX format","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":"cp EXPECTED.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":"dos2unix ACTUAL.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"# compare the output to the expected output","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"diff ACTUAL.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":"if [ $? -eq 0 ]","lastModifiedDate":"2020-05-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":" echo \"Test result: PASSED\"","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":" exit 0","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":"else","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" echo \"Test result: FAILED\"","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" exit 1","lastModifiedDate":"2020-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"SimHanKiong":3,"-":35}}] +[{"path":"build.gradle","fileType":"gradle","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"plugins {","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":" id \u0027java\u0027","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":" id \u0027application\u0027","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"SimHanKiong"},"content":" id \u0027checkstyle\u0027","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"-"},"content":" id \u0027com.github.johnrengelman.shadow\u0027 version \u00277.1.2\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"repositories {","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":" mavenCentral()","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":"dependencies {","lastModifiedDate":"2020-05-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":" testImplementation group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-api\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":" testRuntimeOnly group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-engine\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":32,"author":{"gitId":"SimHanKiong"},"content":" mainClass.set(\"johnny.Johnny\")","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"SimHanKiong"},"content":" archiveBaseName \u003d \"Johnny\"","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2020-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":39,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":"run{","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"SimHanKiong":3,"-":40}},{"path":"src/main/java/johnny/Johnny.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"SimHanKiong"},"content":"package johnny;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"SimHanKiong"},"content":"import johnny.commands.Command;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"SimHanKiong"},"content":"import johnny.exceptions.JohnnyException;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"SimHanKiong"},"content":"import johnny.parser.Parser;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"SimHanKiong"},"content":"import johnny.storage.Storage;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"SimHanKiong"},"content":"import johnny.tasks.TaskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"SimHanKiong"},"content":"import johnny.ui.Ui;","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"SimHanKiong"},"content":"public class Johnny {","lastModifiedDate":"2024-01-20"},{"lineNumber":11,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-20"},{"lineNumber":12,"author":{"gitId":"SimHanKiong"},"content":" private Storage storage;","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"SimHanKiong"},"content":" private TaskList tasks;","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"SimHanKiong"},"content":" private Ui ui;","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-20"},{"lineNumber":16,"author":{"gitId":"SimHanKiong"},"content":" public Johnny(String filePath) {","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"SimHanKiong"},"content":" ui \u003d new Ui();","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"SimHanKiong"},"content":" storage \u003d new Storage(filePath);","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-20"},{"lineNumber":20,"author":{"gitId":"SimHanKiong"},"content":" try {","lastModifiedDate":"2024-01-21"},{"lineNumber":21,"author":{"gitId":"SimHanKiong"},"content":" tasks \u003d new TaskList(storage.load());","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"SimHanKiong"},"content":" } catch (JohnnyException e) {","lastModifiedDate":"2024-01-21"},{"lineNumber":23,"author":{"gitId":"SimHanKiong"},"content":" ui.showError(e.getMessage());","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"SimHanKiong"},"content":" tasks \u003d new TaskList();","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-20"},{"lineNumber":26,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-20"},{"lineNumber":27,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-20"},{"lineNumber":28,"author":{"gitId":"SimHanKiong"},"content":" public void run() {","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"SimHanKiong"},"content":" ui.showWelcome();","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"SimHanKiong"},"content":" boolean isExit \u003d false;","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-20"},{"lineNumber":32,"author":{"gitId":"SimHanKiong"},"content":" while (!isExit) {","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"SimHanKiong"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":34,"author":{"gitId":"SimHanKiong"},"content":" String fullCommand \u003d ui.readCommand();","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"SimHanKiong"},"content":" Command c \u003d Parser.parse(fullCommand);","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"SimHanKiong"},"content":" c.execute(tasks, ui, storage);","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"SimHanKiong"},"content":" isExit \u003d c.isExit();","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"SimHanKiong"},"content":" } catch (JohnnyException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"SimHanKiong"},"content":" ui.showError(e.getMessage());","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":41,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":42,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":43,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":44,"author":{"gitId":"SimHanKiong"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"SimHanKiong"},"content":" new Johnny(\"data/tasks.txt\").run();","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":47,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":48,"author":{"gitId":"SimHanKiong"},"content":"}","lastModifiedDate":"2024-01-20"}],"authorContributionMap":{"SimHanKiong":48}},{"path":"src/main/java/johnny/commands/AddDeadlineCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"SimHanKiong"},"content":"package johnny.commands;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"SimHanKiong"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"SimHanKiong"},"content":"import johnny.exceptions.JohnnyException;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"SimHanKiong"},"content":"import johnny.storage.Storage;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"SimHanKiong"},"content":"import johnny.tasks.Deadline;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"SimHanKiong"},"content":"import johnny.tasks.Task;","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"SimHanKiong"},"content":"import johnny.tasks.TaskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"SimHanKiong"},"content":"import johnny.ui.Ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"SimHanKiong"},"content":"public class AddDeadlineCommand extends Command {","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"SimHanKiong"},"content":" private String name;","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"SimHanKiong"},"content":" private LocalDateTime by;","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"SimHanKiong"},"content":" public AddDeadlineCommand(String name, LocalDateTime by) {","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"SimHanKiong"},"content":" this.name \u003d name;","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"SimHanKiong"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"SimHanKiong"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"SimHanKiong"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws JohnnyException {","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"SimHanKiong"},"content":" Task task \u003d new Deadline(name, by);","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"SimHanKiong"},"content":" tasks.addTask(task);","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"SimHanKiong"},"content":" storage.appendToFile(task);","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"SimHanKiong"},"content":" ui.showAddTask(task, tasks);","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"SimHanKiong"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"SimHanKiong"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"SimHanKiong"},"content":" return false;","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"SimHanKiong"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"SimHanKiong":34}},{"path":"src/main/java/johnny/commands/AddEventCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"SimHanKiong"},"content":"package johnny.commands;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"SimHanKiong"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"SimHanKiong"},"content":"import johnny.exceptions.JohnnyException;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"SimHanKiong"},"content":"import johnny.storage.Storage;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"SimHanKiong"},"content":"import johnny.tasks.Event;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"SimHanKiong"},"content":"import johnny.tasks.Task;","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"SimHanKiong"},"content":"import johnny.tasks.TaskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"SimHanKiong"},"content":"import johnny.ui.Ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"SimHanKiong"},"content":"public class AddEventCommand extends Command {","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"SimHanKiong"},"content":" private String name;","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"SimHanKiong"},"content":" private LocalDateTime from;","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"SimHanKiong"},"content":" private LocalDateTime to;","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"SimHanKiong"},"content":" public AddEventCommand(String name, LocalDateTime from, LocalDateTime to) {","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"SimHanKiong"},"content":" this.name \u003d name;","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"SimHanKiong"},"content":" this.from \u003d from;","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"SimHanKiong"},"content":" this.to \u003d to;","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"SimHanKiong"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"SimHanKiong"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws JohnnyException {","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"SimHanKiong"},"content":" Task task \u003d new Event(name, from, to);","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"SimHanKiong"},"content":" tasks.addTask(task);","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"SimHanKiong"},"content":" storage.appendToFile(task);","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"SimHanKiong"},"content":" ui.showAddTask(task, tasks);","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"SimHanKiong"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"SimHanKiong"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"SimHanKiong"},"content":" return false;","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"SimHanKiong"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"SimHanKiong":36}},{"path":"src/main/java/johnny/commands/AddTodoCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"SimHanKiong"},"content":"package johnny.commands;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"SimHanKiong"},"content":"import johnny.exceptions.JohnnyException;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"SimHanKiong"},"content":"import johnny.storage.Storage;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"SimHanKiong"},"content":"import johnny.tasks.Task;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"SimHanKiong"},"content":"import johnny.tasks.TaskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"SimHanKiong"},"content":"import johnny.tasks.ToDo;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"SimHanKiong"},"content":"import johnny.ui.Ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"SimHanKiong"},"content":"public class AddTodoCommand extends Command {","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"SimHanKiong"},"content":" private String name;","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"SimHanKiong"},"content":" public AddTodoCommand(String name) {","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"SimHanKiong"},"content":" this.name \u003d name;","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"SimHanKiong"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"SimHanKiong"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws JohnnyException {","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"SimHanKiong"},"content":" Task task \u003d new ToDo(name);","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"SimHanKiong"},"content":" tasks.addTask(task);","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"SimHanKiong"},"content":" storage.appendToFile(task);","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"SimHanKiong"},"content":" ui.showAddTask(task, tasks);","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"SimHanKiong"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"SimHanKiong"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"SimHanKiong"},"content":" return false;","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"SimHanKiong"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"SimHanKiong":29}},{"path":"src/main/java/johnny/commands/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"SimHanKiong"},"content":"package johnny.commands;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"SimHanKiong"},"content":"import johnny.exceptions.JohnnyException;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"SimHanKiong"},"content":"import johnny.storage.Storage;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"SimHanKiong"},"content":"import johnny.tasks.TaskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"SimHanKiong"},"content":"import johnny.ui.Ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"SimHanKiong"},"content":"public abstract class Command {","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"SimHanKiong"},"content":" public abstract void execute(TaskList tasks, Ui ui, Storage storage) throws JohnnyException;","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"SimHanKiong"},"content":" public abstract boolean isExit();","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"SimHanKiong"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"SimHanKiong":13}},{"path":"src/main/java/johnny/commands/DeleteCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"SimHanKiong"},"content":"package johnny.commands;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"SimHanKiong"},"content":"import johnny.exceptions.JohnnyException;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"SimHanKiong"},"content":"import johnny.storage.Storage;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"SimHanKiong"},"content":"import johnny.tasks.Task;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"SimHanKiong"},"content":"import johnny.tasks.TaskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"SimHanKiong"},"content":"import johnny.ui.Ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"SimHanKiong"},"content":"public class DeleteCommand extends Command {","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"SimHanKiong"},"content":" private int index;","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"SimHanKiong"},"content":" public DeleteCommand(int index) {","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"SimHanKiong"},"content":" this.index \u003d index;","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"SimHanKiong"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"SimHanKiong"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws JohnnyException {","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"SimHanKiong"},"content":" Task task \u003d tasks.delete(index);","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"SimHanKiong"},"content":" storage.rewriteFile(tasks);","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"SimHanKiong"},"content":" ui.showDelete(task, tasks);","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"SimHanKiong"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"SimHanKiong"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"SimHanKiong"},"content":" return false;","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"SimHanKiong"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"SimHanKiong":29}},{"path":"src/main/java/johnny/commands/ExitCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"SimHanKiong"},"content":"package johnny.commands;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"SimHanKiong"},"content":"import johnny.storage.Storage;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"SimHanKiong"},"content":"import johnny.tasks.TaskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"SimHanKiong"},"content":"import johnny.ui.Ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"SimHanKiong"},"content":"public class ExitCommand extends Command {","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"SimHanKiong"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"SimHanKiong"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"SimHanKiong"},"content":" ui.showEnd();","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"SimHanKiong"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"SimHanKiong"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"SimHanKiong"},"content":" return true;","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"SimHanKiong"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"SimHanKiong":19}},{"path":"src/main/java/johnny/commands/ListCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"SimHanKiong"},"content":"package johnny.commands;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"SimHanKiong"},"content":"import johnny.exceptions.JohnnyException;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"SimHanKiong"},"content":"import johnny.storage.Storage;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"SimHanKiong"},"content":"import johnny.tasks.TaskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"SimHanKiong"},"content":"import johnny.ui.Ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"SimHanKiong"},"content":"public class ListCommand extends Command {","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"SimHanKiong"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"SimHanKiong"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws JohnnyException {","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"SimHanKiong"},"content":" ui.showList(tasks);","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"SimHanKiong"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"SimHanKiong"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"SimHanKiong"},"content":" return false;","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"SimHanKiong"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"SimHanKiong":19}},{"path":"src/main/java/johnny/commands/MarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"SimHanKiong"},"content":"package johnny.commands;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"SimHanKiong"},"content":"import johnny.exceptions.JohnnyException;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"SimHanKiong"},"content":"import johnny.storage.Storage;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"SimHanKiong"},"content":"import johnny.tasks.Task;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"SimHanKiong"},"content":"import johnny.tasks.TaskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"SimHanKiong"},"content":"import johnny.ui.Ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"SimHanKiong"},"content":"public class MarkCommand extends Command {","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"SimHanKiong"},"content":" private int index;","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"SimHanKiong"},"content":" public MarkCommand(int index) {","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"SimHanKiong"},"content":" this.index \u003d index;","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"SimHanKiong"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"SimHanKiong"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws JohnnyException {","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"SimHanKiong"},"content":" Task task \u003d tasks.mark(index);","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"SimHanKiong"},"content":" storage.rewriteFile(tasks);","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"SimHanKiong"},"content":" ui.showMark(task);","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"SimHanKiong"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"SimHanKiong"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"SimHanKiong"},"content":" return false;","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"SimHanKiong"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"SimHanKiong":29}},{"path":"src/main/java/johnny/commands/UnmarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"SimHanKiong"},"content":"package johnny.commands;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"SimHanKiong"},"content":"import johnny.exceptions.JohnnyException;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"SimHanKiong"},"content":"import johnny.storage.Storage;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"SimHanKiong"},"content":"import johnny.tasks.Task;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"SimHanKiong"},"content":"import johnny.tasks.TaskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"SimHanKiong"},"content":"import johnny.ui.Ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"SimHanKiong"},"content":"public class UnmarkCommand extends Command {","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"SimHanKiong"},"content":" private int index;","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"SimHanKiong"},"content":" public UnmarkCommand(int index) {","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"SimHanKiong"},"content":" this.index \u003d index;","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"SimHanKiong"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"SimHanKiong"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws JohnnyException {","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"SimHanKiong"},"content":" Task task \u003d tasks.unmark(index);","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"SimHanKiong"},"content":" storage.rewriteFile(tasks);","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"SimHanKiong"},"content":" ui.showUnmark(task);","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"SimHanKiong"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"SimHanKiong"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"SimHanKiong"},"content":" return false;","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"SimHanKiong"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"SimHanKiong":29}},{"path":"src/main/java/johnny/exceptions/JohnnyException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"SimHanKiong"},"content":"package johnny.exceptions;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"SimHanKiong"},"content":"public class JohnnyException extends Exception {","lastModifiedDate":"2024-01-21"},{"lineNumber":4,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":5,"author":{"gitId":"SimHanKiong"},"content":" public JohnnyException(String errorMessage) {","lastModifiedDate":"2024-01-21"},{"lineNumber":6,"author":{"gitId":"SimHanKiong"},"content":" super(errorMessage);","lastModifiedDate":"2024-01-21"},{"lineNumber":7,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":8,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":9,"author":{"gitId":"SimHanKiong"},"content":"}","lastModifiedDate":"2024-01-21"}],"authorContributionMap":{"SimHanKiong":9}},{"path":"src/main/java/johnny/parser/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"SimHanKiong"},"content":"package johnny.parser;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"SimHanKiong"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"SimHanKiong"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"SimHanKiong"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"SimHanKiong"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"SimHanKiong"},"content":"import java.util.List;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"SimHanKiong"},"content":"import johnny.commands.AddDeadlineCommand;","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"SimHanKiong"},"content":"import johnny.commands.AddEventCommand;","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"SimHanKiong"},"content":"import johnny.commands.AddTodoCommand;","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"SimHanKiong"},"content":"import johnny.commands.Command;","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"SimHanKiong"},"content":"import johnny.commands.DeleteCommand;","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"SimHanKiong"},"content":"import johnny.commands.ExitCommand;","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"SimHanKiong"},"content":"import johnny.commands.ListCommand;","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"SimHanKiong"},"content":"import johnny.commands.MarkCommand;","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"SimHanKiong"},"content":"import johnny.commands.UnmarkCommand;","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"SimHanKiong"},"content":"import johnny.exceptions.JohnnyException;","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"SimHanKiong"},"content":"public class Parser {","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"SimHanKiong"},"content":" private static final DateTimeFormatter INPUT_DATE_FORMAT \u003d DateTimeFormatter.ofPattern(\"yyyy/MM/dd HHmm\");","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"SimHanKiong"},"content":" public static Command parse(String fullCommand) throws JohnnyException {","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"SimHanKiong"},"content":" List\u003cString\u003e parsedCommand \u003d Arrays.asList(fullCommand.split(\" \"));","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"SimHanKiong"},"content":" if (parsedCommand.isEmpty()) {","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"SimHanKiong"},"content":" throw new JohnnyException(\"Enter a command bro.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"SimHanKiong"},"content":" String command \u003d parsedCommand.get(0);","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"SimHanKiong"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"SimHanKiong"},"content":" switch (command) {","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"SimHanKiong"},"content":" case \"bye\":","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"SimHanKiong"},"content":" return new ExitCommand();","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"SimHanKiong"},"content":" case \"list\":","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"SimHanKiong"},"content":" return new ListCommand();","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"SimHanKiong"},"content":" case \"mark\":","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"SimHanKiong"},"content":" if (parsedCommand.size() \u003c 2) {","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"SimHanKiong"},"content":" throw new JohnnyException(\"Which task do you want to mark bro?\");","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"SimHanKiong"},"content":" } else if (parsedCommand.size() \u003e 2) {","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"SimHanKiong"},"content":" throw new JohnnyException(\"I can only mark 1 task bro.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"SimHanKiong"},"content":" int index \u003d Integer.parseInt(parsedCommand.get(1)) - 1;","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"SimHanKiong"},"content":" return new MarkCommand(index);","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"SimHanKiong"},"content":" case \"unmark\":","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"SimHanKiong"},"content":" if (parsedCommand.size() \u003c 2) {","lastModifiedDate":"2024-01-29"},{"lineNumber":50,"author":{"gitId":"SimHanKiong"},"content":" throw new JohnnyException(\"Which task do you want to unmark bro?\");","lastModifiedDate":"2024-01-29"},{"lineNumber":51,"author":{"gitId":"SimHanKiong"},"content":" } else if (parsedCommand.size() \u003e 2) {","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"SimHanKiong"},"content":" throw new JohnnyException(\"I can only unmark 1 task bro.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":53,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":54,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":55,"author":{"gitId":"SimHanKiong"},"content":" index \u003d Integer.parseInt(parsedCommand.get(1)) - 1;","lastModifiedDate":"2024-01-29"},{"lineNumber":56,"author":{"gitId":"SimHanKiong"},"content":" return new UnmarkCommand(index);","lastModifiedDate":"2024-01-29"},{"lineNumber":57,"author":{"gitId":"SimHanKiong"},"content":" case \"delete\":","lastModifiedDate":"2024-01-29"},{"lineNumber":58,"author":{"gitId":"SimHanKiong"},"content":" if (parsedCommand.size() \u003c 2) {","lastModifiedDate":"2024-01-29"},{"lineNumber":59,"author":{"gitId":"SimHanKiong"},"content":" throw new JohnnyException(\"Which task am I supposed to delete bro?\");","lastModifiedDate":"2024-01-29"},{"lineNumber":60,"author":{"gitId":"SimHanKiong"},"content":" } else if (parsedCommand.size() \u003e 2) {","lastModifiedDate":"2024-01-29"},{"lineNumber":61,"author":{"gitId":"SimHanKiong"},"content":" throw new JohnnyException(\"I can only delete 1 task bro.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":62,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":63,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":64,"author":{"gitId":"SimHanKiong"},"content":" index \u003d Integer.parseInt(parsedCommand.get(1)) - 1;","lastModifiedDate":"2024-01-29"},{"lineNumber":65,"author":{"gitId":"SimHanKiong"},"content":" return new DeleteCommand(index);","lastModifiedDate":"2024-01-29"},{"lineNumber":66,"author":{"gitId":"SimHanKiong"},"content":" case \"todo\":","lastModifiedDate":"2024-01-29"},{"lineNumber":67,"author":{"gitId":"SimHanKiong"},"content":" if (parsedCommand.size() \u003c 2) {","lastModifiedDate":"2024-01-29"},{"lineNumber":68,"author":{"gitId":"SimHanKiong"},"content":" throw new JohnnyException(\"What is your todo bro?\");","lastModifiedDate":"2024-01-29"},{"lineNumber":69,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":70,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":71,"author":{"gitId":"SimHanKiong"},"content":" String name \u003d String.join(\" \", parsedCommand.subList(1, parsedCommand.size()));","lastModifiedDate":"2024-01-29"},{"lineNumber":72,"author":{"gitId":"SimHanKiong"},"content":" return new AddTodoCommand(name);","lastModifiedDate":"2024-01-29"},{"lineNumber":73,"author":{"gitId":"SimHanKiong"},"content":" case \"deadline\":","lastModifiedDate":"2024-01-29"},{"lineNumber":74,"author":{"gitId":"SimHanKiong"},"content":" if (parsedCommand.size() \u003c 2) {","lastModifiedDate":"2024-01-29"},{"lineNumber":75,"author":{"gitId":"SimHanKiong"},"content":" throw new JohnnyException(\"What is your deadline bro?\");","lastModifiedDate":"2024-01-29"},{"lineNumber":76,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":77,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":78,"author":{"gitId":"SimHanKiong"},"content":" int i \u003d parsedCommand.indexOf(\"/by\");","lastModifiedDate":"2024-01-29"},{"lineNumber":79,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":80,"author":{"gitId":"SimHanKiong"},"content":" if (i \u003d\u003d -1) {","lastModifiedDate":"2024-01-29"},{"lineNumber":81,"author":{"gitId":"SimHanKiong"},"content":" throw new JohnnyException(\"When is your deadline by bro?\");","lastModifiedDate":"2024-01-29"},{"lineNumber":82,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":83,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":84,"author":{"gitId":"SimHanKiong"},"content":" name \u003d String.join(\" \", parsedCommand.subList(1, i));","lastModifiedDate":"2024-01-29"},{"lineNumber":85,"author":{"gitId":"SimHanKiong"},"content":" String by \u003d String.join(\" \", parsedCommand.subList(i + 1, parsedCommand.size()));","lastModifiedDate":"2024-01-29"},{"lineNumber":86,"author":{"gitId":"SimHanKiong"},"content":" LocalDateTime byDate \u003d LocalDateTime.parse(by, INPUT_DATE_FORMAT);","lastModifiedDate":"2024-01-29"},{"lineNumber":87,"author":{"gitId":"SimHanKiong"},"content":" return new AddDeadlineCommand(name, byDate);","lastModifiedDate":"2024-01-29"},{"lineNumber":88,"author":{"gitId":"SimHanKiong"},"content":" case \"event\":","lastModifiedDate":"2024-01-29"},{"lineNumber":89,"author":{"gitId":"SimHanKiong"},"content":" if (parsedCommand.size() \u003c 2) {","lastModifiedDate":"2024-01-29"},{"lineNumber":90,"author":{"gitId":"SimHanKiong"},"content":" throw new JohnnyException(\"What is your deadline bro?\");","lastModifiedDate":"2024-01-29"},{"lineNumber":91,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":92,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":93,"author":{"gitId":"SimHanKiong"},"content":" i \u003d parsedCommand.indexOf(\"/from\");","lastModifiedDate":"2024-01-29"},{"lineNumber":94,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":95,"author":{"gitId":"SimHanKiong"},"content":" if (i \u003d\u003d -1) {","lastModifiedDate":"2024-01-29"},{"lineNumber":96,"author":{"gitId":"SimHanKiong"},"content":" throw new JohnnyException(\"When does your event start from bro?\");","lastModifiedDate":"2024-01-29"},{"lineNumber":97,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":98,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":99,"author":{"gitId":"SimHanKiong"},"content":" int j \u003d parsedCommand.indexOf(\"/to\");","lastModifiedDate":"2024-01-29"},{"lineNumber":100,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":101,"author":{"gitId":"SimHanKiong"},"content":" if (j \u003d\u003d -1) {","lastModifiedDate":"2024-01-29"},{"lineNumber":102,"author":{"gitId":"SimHanKiong"},"content":" throw new JohnnyException(\"When does your event last to bro?\");","lastModifiedDate":"2024-01-29"},{"lineNumber":103,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":104,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":105,"author":{"gitId":"SimHanKiong"},"content":" name \u003d String.join(\" \", parsedCommand.subList(1, i));","lastModifiedDate":"2024-01-29"},{"lineNumber":106,"author":{"gitId":"SimHanKiong"},"content":" String from \u003d String.join(\" \", parsedCommand.subList(i + 1, j));","lastModifiedDate":"2024-01-29"},{"lineNumber":107,"author":{"gitId":"SimHanKiong"},"content":" String to \u003d String.join(\" \", parsedCommand.subList(j + 1, parsedCommand.size()));","lastModifiedDate":"2024-01-29"},{"lineNumber":108,"author":{"gitId":"SimHanKiong"},"content":" LocalDateTime fromDate \u003d LocalDateTime.parse(from, INPUT_DATE_FORMAT);","lastModifiedDate":"2024-01-29"},{"lineNumber":109,"author":{"gitId":"SimHanKiong"},"content":" LocalDateTime toDate \u003d LocalDateTime.parse(to, INPUT_DATE_FORMAT);","lastModifiedDate":"2024-01-29"},{"lineNumber":110,"author":{"gitId":"SimHanKiong"},"content":" return new AddEventCommand(name, fromDate, toDate);","lastModifiedDate":"2024-01-29"},{"lineNumber":111,"author":{"gitId":"SimHanKiong"},"content":" default:","lastModifiedDate":"2024-01-29"},{"lineNumber":112,"author":{"gitId":"SimHanKiong"},"content":" throw new JohnnyException(\"Your command does not make sense bro.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":113,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":114,"author":{"gitId":"SimHanKiong"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":115,"author":{"gitId":"SimHanKiong"},"content":" throw new JohnnyException(\"Enter a valid number bro.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":116,"author":{"gitId":"SimHanKiong"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":117,"author":{"gitId":"SimHanKiong"},"content":" throw new JohnnyException(\"Date and Time should be in the format of YYYY/MM/DD HHMM bro.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":118,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":119,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":120,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":121,"author":{"gitId":"SimHanKiong"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"SimHanKiong":121}},{"path":"src/main/java/johnny/storage/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"SimHanKiong"},"content":"package johnny.storage;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"SimHanKiong"},"content":"import java.io.File;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"SimHanKiong"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"SimHanKiong"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"SimHanKiong"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"SimHanKiong"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"SimHanKiong"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"SimHanKiong"},"content":"import java.util.List;","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"SimHanKiong"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"SimHanKiong"},"content":"import johnny.exceptions.JohnnyException;","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"SimHanKiong"},"content":"import johnny.tasks.Deadline;","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"SimHanKiong"},"content":"import johnny.tasks.Event;","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"SimHanKiong"},"content":"import johnny.tasks.Task;","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"SimHanKiong"},"content":"import johnny.tasks.TaskList;","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"SimHanKiong"},"content":"import johnny.tasks.ToDo;","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"SimHanKiong"},"content":"public class Storage {","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"SimHanKiong"},"content":" private static final DateTimeFormatter INPUT_DATE_FORMAT \u003d DateTimeFormatter.ofPattern(\"yyyy/MM/dd HHmm\");","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"SimHanKiong"},"content":" private String filePath;","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"SimHanKiong"},"content":" public Storage(String filePath) {","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"SimHanKiong"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"SimHanKiong"},"content":" public List\u003cTask\u003e load() throws JohnnyException {","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"SimHanKiong"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"SimHanKiong"},"content":" File file \u003d new File(filePath);","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"SimHanKiong"},"content":" List\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"SimHanKiong"},"content":" if (!file.isFile() \u0026\u0026 file.getParentFile().mkdir()) {","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"SimHanKiong"},"content":" file.createNewFile();","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"SimHanKiong"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"SimHanKiong"},"content":" Scanner scanner \u003d new Scanner(file);","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"SimHanKiong"},"content":" while (scanner.hasNext()) {","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"SimHanKiong"},"content":" String input \u003d scanner.nextLine();","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"SimHanKiong"},"content":" String[] parsedInput \u003d input.split(\" \\\\| \");","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"SimHanKiong"},"content":" Task task;","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"SimHanKiong"},"content":" String taskType \u003d parsedInput[0];","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"SimHanKiong"},"content":" switch(taskType) {","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"SimHanKiong"},"content":" case \"T\":","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"SimHanKiong"},"content":" task \u003d new ToDo(parsedInput[2]);","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"SimHanKiong"},"content":" break;","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"SimHanKiong"},"content":" case \"D\":","lastModifiedDate":"2024-01-29"},{"lineNumber":50,"author":{"gitId":"SimHanKiong"},"content":" LocalDateTime by \u003d LocalDateTime.parse(parsedInput[3], INPUT_DATE_FORMAT);","lastModifiedDate":"2024-01-29"},{"lineNumber":51,"author":{"gitId":"SimHanKiong"},"content":" task \u003d new Deadline(parsedInput[2], by);","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"SimHanKiong"},"content":" break;","lastModifiedDate":"2024-01-29"},{"lineNumber":53,"author":{"gitId":"SimHanKiong"},"content":" case \"E\":","lastModifiedDate":"2024-01-29"},{"lineNumber":54,"author":{"gitId":"SimHanKiong"},"content":" LocalDateTime from \u003d LocalDateTime.parse(parsedInput[3], INPUT_DATE_FORMAT);","lastModifiedDate":"2024-01-29"},{"lineNumber":55,"author":{"gitId":"SimHanKiong"},"content":" LocalDateTime to \u003d LocalDateTime.parse(parsedInput[4], INPUT_DATE_FORMAT);","lastModifiedDate":"2024-01-29"},{"lineNumber":56,"author":{"gitId":"SimHanKiong"},"content":" task \u003d new Event(parsedInput[2], from, to);","lastModifiedDate":"2024-01-29"},{"lineNumber":57,"author":{"gitId":"SimHanKiong"},"content":" break;","lastModifiedDate":"2024-01-29"},{"lineNumber":58,"author":{"gitId":"SimHanKiong"},"content":" default:","lastModifiedDate":"2024-01-29"},{"lineNumber":59,"author":{"gitId":"SimHanKiong"},"content":" throw new JohnnyException(\"The file has been corrupted bro.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":60,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":61,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":62,"author":{"gitId":"SimHanKiong"},"content":" if (parsedInput[1].equals(\"1\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":63,"author":{"gitId":"SimHanKiong"},"content":" task.mark();","lastModifiedDate":"2024-01-29"},{"lineNumber":64,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":65,"author":{"gitId":"SimHanKiong"},"content":" tasks.add(task);","lastModifiedDate":"2024-01-29"},{"lineNumber":66,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":67,"author":{"gitId":"SimHanKiong"},"content":" scanner.close();","lastModifiedDate":"2024-01-29"},{"lineNumber":68,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":69,"author":{"gitId":"SimHanKiong"},"content":" return tasks;","lastModifiedDate":"2024-01-29"},{"lineNumber":70,"author":{"gitId":"SimHanKiong"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":71,"author":{"gitId":"SimHanKiong"},"content":" throw new JohnnyException(\"I can\u0027t create a new file bro: \" + e.getMessage());","lastModifiedDate":"2024-01-29"},{"lineNumber":72,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":73,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":74,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":75,"author":{"gitId":"SimHanKiong"},"content":" public void rewriteFile(TaskList tasks) throws JohnnyException {","lastModifiedDate":"2024-01-29"},{"lineNumber":76,"author":{"gitId":"SimHanKiong"},"content":" try (FileWriter fw \u003d new FileWriter(filePath)) {","lastModifiedDate":"2024-01-29"},{"lineNumber":77,"author":{"gitId":"SimHanKiong"},"content":" for (int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2024-01-29"},{"lineNumber":78,"author":{"gitId":"SimHanKiong"},"content":" fw.write(tasks.get(i).addToFile());","lastModifiedDate":"2024-01-29"},{"lineNumber":79,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":80,"author":{"gitId":"SimHanKiong"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":81,"author":{"gitId":"SimHanKiong"},"content":" throw new JohnnyException(\"Cannot write to file bro: \" + e.getMessage());","lastModifiedDate":"2024-01-29"},{"lineNumber":82,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":83,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":84,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":85,"author":{"gitId":"SimHanKiong"},"content":" public void appendToFile(Task task) throws JohnnyException {","lastModifiedDate":"2024-01-29"},{"lineNumber":86,"author":{"gitId":"SimHanKiong"},"content":" try (FileWriter fw \u003d new FileWriter(filePath, true)) {","lastModifiedDate":"2024-01-29"},{"lineNumber":87,"author":{"gitId":"SimHanKiong"},"content":" fw.write(task.addToFile());","lastModifiedDate":"2024-01-29"},{"lineNumber":88,"author":{"gitId":"SimHanKiong"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":89,"author":{"gitId":"SimHanKiong"},"content":" throw new JohnnyException(\"Cannot write to file bro: \" + e.getMessage());","lastModifiedDate":"2024-01-29"},{"lineNumber":90,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":91,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":92,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":93,"author":{"gitId":"SimHanKiong"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"SimHanKiong":93}},{"path":"src/main/java/johnny/tasks/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"SimHanKiong"},"content":"package johnny.tasks;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"SimHanKiong"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"SimHanKiong"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-21"},{"lineNumber":6,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":7,"author":{"gitId":"SimHanKiong"},"content":" private LocalDateTime by;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":9,"author":{"gitId":"SimHanKiong"},"content":" public Deadline(String name, LocalDateTime by) {","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"SimHanKiong"},"content":" super(name);","lastModifiedDate":"2024-01-21"},{"lineNumber":11,"author":{"gitId":"SimHanKiong"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-21"},{"lineNumber":12,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":13,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":14,"author":{"gitId":"SimHanKiong"},"content":" @Override","lastModifiedDate":"2024-01-21"},{"lineNumber":15,"author":{"gitId":"SimHanKiong"},"content":" public String toString() {","lastModifiedDate":"2024-01-21"},{"lineNumber":16,"author":{"gitId":"SimHanKiong"},"content":" return \"[D]\" + super.toString() + \" (by: \" + super.formatOutputDate(by) + \")\";","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":18,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":19,"author":{"gitId":"SimHanKiong"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"SimHanKiong"},"content":" public String addToFile() {","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"SimHanKiong"},"content":" return \"D | \" + super.addToFile() + \" | \" + super.formatInputDate(by) + \"\\n\";","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"SimHanKiong"},"content":"}","lastModifiedDate":"2024-01-21"}],"authorContributionMap":{"SimHanKiong":24}},{"path":"src/main/java/johnny/tasks/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"SimHanKiong"},"content":"package johnny.tasks;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"SimHanKiong"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"SimHanKiong"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-21"},{"lineNumber":6,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":7,"author":{"gitId":"SimHanKiong"},"content":" private LocalDateTime from;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"SimHanKiong"},"content":" private LocalDateTime to;","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":10,"author":{"gitId":"SimHanKiong"},"content":" public Event(String name, LocalDateTime from, LocalDateTime to) {","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"SimHanKiong"},"content":" super(name);","lastModifiedDate":"2024-01-21"},{"lineNumber":12,"author":{"gitId":"SimHanKiong"},"content":" this.from \u003d from;","lastModifiedDate":"2024-01-21"},{"lineNumber":13,"author":{"gitId":"SimHanKiong"},"content":" this.to \u003d to;","lastModifiedDate":"2024-01-21"},{"lineNumber":14,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":15,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":16,"author":{"gitId":"SimHanKiong"},"content":" @Override","lastModifiedDate":"2024-01-21"},{"lineNumber":17,"author":{"gitId":"SimHanKiong"},"content":" public String toString() {","lastModifiedDate":"2024-01-21"},{"lineNumber":18,"author":{"gitId":"SimHanKiong"},"content":" return \"[E]\" + super.toString() + \" (from: \" + super.formatOutputDate(from)","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"SimHanKiong"},"content":" + \" to: \" + super.formatOutputDate(to) + \")\";","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":21,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":22,"author":{"gitId":"SimHanKiong"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"SimHanKiong"},"content":" public String addToFile() {","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"SimHanKiong"},"content":" return \"E | \" + super.addToFile() + \" | \" + super.formatInputDate(from)","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"SimHanKiong"},"content":" + \" | \" + super.formatInputDate(to) + \"\\n\";","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"SimHanKiong"},"content":"}","lastModifiedDate":"2024-01-21"}],"authorContributionMap":{"SimHanKiong":28}},{"path":"src/main/java/johnny/tasks/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"SimHanKiong"},"content":"package johnny.tasks;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"SimHanKiong"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"SimHanKiong"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"SimHanKiong"},"content":"public class Task {","lastModifiedDate":"2024-01-20"},{"lineNumber":7,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-20"},{"lineNumber":8,"author":{"gitId":"SimHanKiong"},"content":" private static final DateTimeFormatter INPUT_DATE_FORMAT \u003d DateTimeFormatter.ofPattern(\"yyyy/MM/dd HHmm\");","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"SimHanKiong"},"content":" private static final DateTimeFormatter OUTPUT_DATE_FORMAT \u003d DateTimeFormatter.ofPattern(\"MMM dd yyyy hh:mm a\");","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"SimHanKiong"},"content":" private String name;","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"SimHanKiong"},"content":" private boolean isDone \u003d false;","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-20"},{"lineNumber":14,"author":{"gitId":"SimHanKiong"},"content":" public Task(String name) {","lastModifiedDate":"2024-01-20"},{"lineNumber":15,"author":{"gitId":"SimHanKiong"},"content":" this.name \u003d name;","lastModifiedDate":"2024-01-20"},{"lineNumber":16,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-20"},{"lineNumber":17,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-20"},{"lineNumber":18,"author":{"gitId":"SimHanKiong"},"content":" public void mark() {","lastModifiedDate":"2024-01-20"},{"lineNumber":19,"author":{"gitId":"SimHanKiong"},"content":" isDone \u003d true;","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-20"},{"lineNumber":21,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-20"},{"lineNumber":22,"author":{"gitId":"SimHanKiong"},"content":" public void unmark() {","lastModifiedDate":"2024-01-20"},{"lineNumber":23,"author":{"gitId":"SimHanKiong"},"content":" isDone \u003d false;","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-20"},{"lineNumber":25,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-20"},{"lineNumber":26,"author":{"gitId":"SimHanKiong"},"content":" @Override","lastModifiedDate":"2024-01-20"},{"lineNumber":27,"author":{"gitId":"SimHanKiong"},"content":" public String toString() {","lastModifiedDate":"2024-01-20"},{"lineNumber":28,"author":{"gitId":"SimHanKiong"},"content":" String x \u003d isDone ? \"X\" : \" \";","lastModifiedDate":"2024-01-20"},{"lineNumber":29,"author":{"gitId":"SimHanKiong"},"content":" return \"[\" + x + \"] \" + name;","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"SimHanKiong"},"content":" public String addToFile() {","lastModifiedDate":"2024-01-28"},{"lineNumber":33,"author":{"gitId":"SimHanKiong"},"content":" String isDone \u003d this.isDone ? \"1\" : \"0\";","lastModifiedDate":"2024-01-28"},{"lineNumber":34,"author":{"gitId":"SimHanKiong"},"content":" return isDone + \" | \" + name;","lastModifiedDate":"2024-01-28"},{"lineNumber":35,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-20"},{"lineNumber":36,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-20"},{"lineNumber":37,"author":{"gitId":"SimHanKiong"},"content":" public String formatInputDate(LocalDateTime dateTime) {","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"SimHanKiong"},"content":" return dateTime.format(INPUT_DATE_FORMAT);","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"SimHanKiong"},"content":" public String formatOutputDate(LocalDateTime dateTime) {","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"SimHanKiong"},"content":" return dateTime.format(OUTPUT_DATE_FORMAT);","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"SimHanKiong"},"content":"}","lastModifiedDate":"2024-01-20"}],"authorContributionMap":{"SimHanKiong":45}},{"path":"src/main/java/johnny/tasks/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"SimHanKiong"},"content":"package johnny.tasks;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"SimHanKiong"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"SimHanKiong"},"content":"import java.util.List;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"SimHanKiong"},"content":"import johnny.exceptions.JohnnyException;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"SimHanKiong"},"content":"public class TaskList {","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"SimHanKiong"},"content":" private List\u003cTask\u003e tasks;","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"SimHanKiong"},"content":" public TaskList(List\u003cTask\u003e tasks) {","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"SimHanKiong"},"content":" this.tasks \u003d tasks;","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"SimHanKiong"},"content":" public TaskList() {","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"SimHanKiong"},"content":" tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"SimHanKiong"},"content":" public Task get(int index) throws JohnnyException {","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"SimHanKiong"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"SimHanKiong"},"content":" return tasks.get(index);","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"SimHanKiong"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"SimHanKiong"},"content":" throw new JohnnyException(\"This task does not exist bro.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"SimHanKiong"},"content":" public Task mark(int index) throws JohnnyException {","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"SimHanKiong"},"content":" Task task \u003d get(index);","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"SimHanKiong"},"content":" task.mark();","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"SimHanKiong"},"content":" return task;","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"SimHanKiong"},"content":" public Task unmark(int index) throws JohnnyException {","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"SimHanKiong"},"content":" Task task \u003d get(index);","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"SimHanKiong"},"content":" task.unmark();","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"SimHanKiong"},"content":" return task;","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"SimHanKiong"},"content":" public Task delete(int index) throws JohnnyException {","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"SimHanKiong"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"SimHanKiong"},"content":" Task task \u003d tasks.remove(index);","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"SimHanKiong"},"content":" return task;","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"SimHanKiong"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"SimHanKiong"},"content":" throw new JohnnyException(\"This task does not exist bro.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"SimHanKiong"},"content":" public int size() {","lastModifiedDate":"2024-01-29"},{"lineNumber":50,"author":{"gitId":"SimHanKiong"},"content":" return tasks.size();","lastModifiedDate":"2024-01-29"},{"lineNumber":51,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":53,"author":{"gitId":"SimHanKiong"},"content":" public void addTask(Task task) {","lastModifiedDate":"2024-01-29"},{"lineNumber":54,"author":{"gitId":"SimHanKiong"},"content":" tasks.add(task);","lastModifiedDate":"2024-01-29"},{"lineNumber":55,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":56,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":57,"author":{"gitId":"SimHanKiong"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"SimHanKiong":57}},{"path":"src/main/java/johnny/tasks/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"SimHanKiong"},"content":"package johnny.tasks;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"SimHanKiong"},"content":"public class ToDo extends Task {","lastModifiedDate":"2024-01-21"},{"lineNumber":4,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":5,"author":{"gitId":"SimHanKiong"},"content":" public ToDo(String name) {","lastModifiedDate":"2024-01-21"},{"lineNumber":6,"author":{"gitId":"SimHanKiong"},"content":" super(name);","lastModifiedDate":"2024-01-21"},{"lineNumber":7,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":8,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":9,"author":{"gitId":"SimHanKiong"},"content":" @Override","lastModifiedDate":"2024-01-21"},{"lineNumber":10,"author":{"gitId":"SimHanKiong"},"content":" public String toString() {","lastModifiedDate":"2024-01-21"},{"lineNumber":11,"author":{"gitId":"SimHanKiong"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2024-01-21"},{"lineNumber":12,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":13,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"SimHanKiong"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"SimHanKiong"},"content":" public String addToFile() {","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"SimHanKiong"},"content":" return \"T | \" + super.addToFile() + \"\\n\";","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"SimHanKiong"},"content":"}","lastModifiedDate":"2024-01-21"}],"authorContributionMap":{"SimHanKiong":19}},{"path":"src/main/java/johnny/ui/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"SimHanKiong"},"content":"package johnny.ui;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"SimHanKiong"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"SimHanKiong"},"content":"import johnny.exceptions.JohnnyException;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"SimHanKiong"},"content":"import johnny.tasks.Task;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"SimHanKiong"},"content":"import johnny.tasks.TaskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"SimHanKiong"},"content":"public class Ui {","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"SimHanKiong"},"content":" private Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"SimHanKiong"},"content":" public void showError(String errorMessage) {","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"SimHanKiong"},"content":" System.out.println(errorMessage + \"\\n\");","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"SimHanKiong"},"content":" public void showWelcome() {","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"SimHanKiong"},"content":" System.out.println(\"Johnny here. What do you want bro?\\n\");","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"SimHanKiong"},"content":" public void showEnd() {","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"SimHanKiong"},"content":" scanner.close();","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"SimHanKiong"},"content":" System.out.println(\"Bye bro. I\u0027m going back to sleep.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"SimHanKiong"},"content":" public void showList(TaskList tasks) throws JohnnyException {","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"SimHanKiong"},"content":" System.out.println(\"Get all these done bro:\");","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"SimHanKiong"},"content":" for (int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"SimHanKiong"},"content":" System.out.println(i + 1 + \". \" + tasks.get(i));","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"SimHanKiong"},"content":" System.out.println();","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"SimHanKiong"},"content":" public void showMark(Task task) {","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"SimHanKiong"},"content":" System.out.println(\"Finally done bro.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"SimHanKiong"},"content":" System.out.println(task + \"\\n\");","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"SimHanKiong"},"content":" public void showUnmark(Task task) {","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"SimHanKiong"},"content":" System.out.println(\"Why are you not done yet bro?\");","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"SimHanKiong"},"content":" System.out.println(task + \"\\n\");","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"SimHanKiong"},"content":" public void showDelete(Task task, TaskList tasks) {","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"SimHanKiong"},"content":" System.out.println(\"Task removed. Why so lazy bro?\");","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"SimHanKiong"},"content":" System.out.println(task);","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"SimHanKiong"},"content":" System.out.println(\"You still have \" + tasks.size() + \" tasks in your list bro.\\n\");","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":50,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":51,"author":{"gitId":"SimHanKiong"},"content":" public void showAddTask(Task task, TaskList tasks) {","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"SimHanKiong"},"content":" System.out.println(\"Go get this done bro:\");","lastModifiedDate":"2024-01-29"},{"lineNumber":53,"author":{"gitId":"SimHanKiong"},"content":" System.out.println(task);","lastModifiedDate":"2024-01-29"},{"lineNumber":54,"author":{"gitId":"SimHanKiong"},"content":" System.out.println(\"You still have \" + tasks.size() + \" tasks in your list bro.\\n\");","lastModifiedDate":"2024-01-29"},{"lineNumber":55,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":56,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":57,"author":{"gitId":"SimHanKiong"},"content":" public String readCommand() {","lastModifiedDate":"2024-01-29"},{"lineNumber":58,"author":{"gitId":"SimHanKiong"},"content":" return scanner.nextLine();","lastModifiedDate":"2024-01-29"},{"lineNumber":59,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":60,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":61,"author":{"gitId":"SimHanKiong"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"SimHanKiong":61}},{"path":"src/test/java/johnny/tasks/DeadlineTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"SimHanKiong"},"content":"package johnny.tasks;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"SimHanKiong"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"SimHanKiong"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"SimHanKiong"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"SimHanKiong"},"content":"public class DeadlineTest {","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"SimHanKiong"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"SimHanKiong"},"content":" public void toString_unMarkedDeadline_success() {","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"SimHanKiong"},"content":" Deadline deadline \u003d new Deadline(\"return book\", LocalDateTime.parse(\"2013-06-15T23:50\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"SimHanKiong"},"content":" assertEquals(\"[D][ ] return book (by: Jun 15 2013 11:50 PM)\", deadline.toString());","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"SimHanKiong"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"SimHanKiong"},"content":" public void toString_markedDeadline_success() {","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"SimHanKiong"},"content":" Deadline deadline \u003d new Deadline(\"return book\", LocalDateTime.parse(\"2013-06-15T23:50\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"SimHanKiong"},"content":" deadline.mark();","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"SimHanKiong"},"content":" assertEquals(\"[D][X] return book (by: Jun 15 2013 11:50 PM)\", deadline.toString());","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"SimHanKiong"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"SimHanKiong"},"content":" public void addToFile_unMarkedDeadline_success() {","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"SimHanKiong"},"content":" Deadline deadline \u003d new Deadline(\"return book\", LocalDateTime.parse(\"2013-06-15T23:50\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"SimHanKiong"},"content":" assertEquals(\"D | 0 | return book | 2013/06/15 2350\\n\", deadline.addToFile());","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"SimHanKiong"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"SimHanKiong"},"content":" public void addToFile_markedDeadline_success() {","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"SimHanKiong"},"content":" Deadline deadline \u003d new Deadline(\"return book\", LocalDateTime.parse(\"2013-06-15T23:50\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"SimHanKiong"},"content":" deadline.mark();","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"SimHanKiong"},"content":" assertEquals(\"D | 1 | return book | 2013/06/15 2350\\n\", deadline.addToFile());","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"SimHanKiong"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"SimHanKiong":37}},{"path":"src/test/java/johnny/tasks/EventTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"SimHanKiong"},"content":"package johnny.tasks;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"SimHanKiong"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"SimHanKiong"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"SimHanKiong"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"SimHanKiong"},"content":"public class EventTest {","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"SimHanKiong"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"SimHanKiong"},"content":" public void toString_unMarkedEvent_success() {","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"SimHanKiong"},"content":" Event event \u003d new Event(\"borrow book\",","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"SimHanKiong"},"content":" LocalDateTime.parse(\"2001-07-14T00:30\"),","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"SimHanKiong"},"content":" LocalDateTime.parse(\"2001-08-14T12:30\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"SimHanKiong"},"content":" assertEquals(\"[E][ ] borrow book (from: Jul 14 2001 12:30 AM to: Aug 14 2001 12:30 PM)\",","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"SimHanKiong"},"content":" event.toString());","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"SimHanKiong"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"SimHanKiong"},"content":" public void toString_markedEvent_success() {","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"SimHanKiong"},"content":" Event event \u003d new Event(\"borrow book\",","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"SimHanKiong"},"content":" LocalDateTime.parse(\"2001-07-14T00:30\"),","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"SimHanKiong"},"content":" LocalDateTime.parse(\"2001-08-14T12:30\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"SimHanKiong"},"content":" event.mark();","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"SimHanKiong"},"content":" assertEquals(\"[E][X] borrow book (from: Jul 14 2001 12:30 AM to: Aug 14 2001 12:30 PM)\",","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"SimHanKiong"},"content":" event.toString());","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"SimHanKiong"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"SimHanKiong"},"content":" public void addToFile_unMarkedEvent_success() {","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"SimHanKiong"},"content":" Event event \u003d new Event(\"borrow book\",","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"SimHanKiong"},"content":" LocalDateTime.parse(\"2001-07-14T00:30\"),","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"SimHanKiong"},"content":" LocalDateTime.parse(\"2001-08-14T12:30\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"SimHanKiong"},"content":" assertEquals(\"E | 0 | borrow book | 2001/07/14 0030 | 2001/08/14 1230\\n\", event.addToFile());","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"SimHanKiong"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"SimHanKiong"},"content":" public void addToFile_markedEvent_success() {","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"SimHanKiong"},"content":" Event event \u003d new Event(\"borrow book\",","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"SimHanKiong"},"content":" LocalDateTime.parse(\"2001-07-14T00:30\"),","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"SimHanKiong"},"content":" LocalDateTime.parse(\"2001-08-14T12:30\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"SimHanKiong"},"content":" event.mark();","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"SimHanKiong"},"content":" assertEquals(\"E | 1 | borrow book | 2001/07/14 0030 | 2001/08/14 1230\\n\", event.addToFile());","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"SimHanKiong"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"SimHanKiong":47}},{"path":"src/test/java/johnny/tasks/TaskListTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"SimHanKiong"},"content":"package johnny.tasks;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"SimHanKiong"},"content":"import johnny.exceptions.JohnnyException;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"SimHanKiong"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"SimHanKiong"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"SimHanKiong"},"content":"import java.util.List;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"SimHanKiong"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"SimHanKiong"},"content":"import static org.junit.jupiter.api.Assertions.fail;","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"SimHanKiong"},"content":"public class TaskListTest {","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"SimHanKiong"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"SimHanKiong"},"content":" public void get_indexWithinBounds_success() throws JohnnyException {","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"SimHanKiong"},"content":" Task expected \u003d new Task(\"dummy\");","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"SimHanKiong"},"content":" List\u003cTask\u003e list \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"SimHanKiong"},"content":" list.add(expected);","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"SimHanKiong"},"content":" TaskList tasks \u003d new TaskList(list);","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"SimHanKiong"},"content":" assertEquals(expected, tasks.get(0));","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"SimHanKiong"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"SimHanKiong"},"content":" public void get_indexOutOfBounds_exceptionThrown() {","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"SimHanKiong"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"SimHanKiong"},"content":" TaskList tasks \u003d new TaskList();","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"SimHanKiong"},"content":" tasks.get(-1);","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"SimHanKiong"},"content":" fail();","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"SimHanKiong"},"content":" } catch (JohnnyException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"SimHanKiong"},"content":" assertEquals(\"This task does not exist bro.\", e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"SimHanKiong"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"SimHanKiong"},"content":" public void mark_indexWithinBounds_success() throws JohnnyException {","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"SimHanKiong"},"content":" Task expected \u003d new Task(\"dummy\");","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"SimHanKiong"},"content":" expected.mark();","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"SimHanKiong"},"content":" List\u003cTask\u003e list \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"SimHanKiong"},"content":" list.add(expected);","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"SimHanKiong"},"content":" TaskList tasks \u003d new TaskList(list);","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"SimHanKiong"},"content":" assertEquals(expected, tasks.mark(0));","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"SimHanKiong"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"SimHanKiong"},"content":" public void unmark_indexWithinBounds_success() throws JohnnyException {","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"SimHanKiong"},"content":" Task expected \u003d new Task(\"dummy\");","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"SimHanKiong"},"content":" expected.unmark();","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"SimHanKiong"},"content":" List\u003cTask\u003e list \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"SimHanKiong"},"content":" list.add(expected);","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"SimHanKiong"},"content":" TaskList tasks \u003d new TaskList(list);","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"SimHanKiong"},"content":" assertEquals(expected, tasks.unmark(0));","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"SimHanKiong"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"SimHanKiong"},"content":" public void delete_indexWithinBounds_success() throws JohnnyException {","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"SimHanKiong"},"content":" Task expected \u003d new Task(\"dummy\");","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"SimHanKiong"},"content":" List\u003cTask\u003e list \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"SimHanKiong"},"content":" list.add(expected);","lastModifiedDate":"2024-01-30"},{"lineNumber":59,"author":{"gitId":"SimHanKiong"},"content":" TaskList tasks \u003d new TaskList(list);","lastModifiedDate":"2024-01-30"},{"lineNumber":60,"author":{"gitId":"SimHanKiong"},"content":" assertEquals(expected, tasks.delete(0));","lastModifiedDate":"2024-01-30"},{"lineNumber":61,"author":{"gitId":"SimHanKiong"},"content":" assertEquals(0, list.size());","lastModifiedDate":"2024-01-30"},{"lineNumber":62,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":63,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":64,"author":{"gitId":"SimHanKiong"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":65,"author":{"gitId":"SimHanKiong"},"content":" public void delete_indexOutOfBounds_exceptionThrown() {","lastModifiedDate":"2024-01-30"},{"lineNumber":66,"author":{"gitId":"SimHanKiong"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":67,"author":{"gitId":"SimHanKiong"},"content":" TaskList tasks \u003d new TaskList();","lastModifiedDate":"2024-01-30"},{"lineNumber":68,"author":{"gitId":"SimHanKiong"},"content":" tasks.delete(-1);","lastModifiedDate":"2024-01-30"},{"lineNumber":69,"author":{"gitId":"SimHanKiong"},"content":" fail();","lastModifiedDate":"2024-01-30"},{"lineNumber":70,"author":{"gitId":"SimHanKiong"},"content":" } catch (JohnnyException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":71,"author":{"gitId":"SimHanKiong"},"content":" assertEquals(\"This task does not exist bro.\", e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":72,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":73,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":74,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":75,"author":{"gitId":"SimHanKiong"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":76,"author":{"gitId":"SimHanKiong"},"content":" public void size_filledList_success() {","lastModifiedDate":"2024-01-30"},{"lineNumber":77,"author":{"gitId":"SimHanKiong"},"content":" List\u003cTask\u003e list \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-30"},{"lineNumber":78,"author":{"gitId":"SimHanKiong"},"content":" Task dummy1 \u003d new Task(\"dummy\");","lastModifiedDate":"2024-01-30"},{"lineNumber":79,"author":{"gitId":"SimHanKiong"},"content":" Task dummy2 \u003d new Task(\"dummy\");","lastModifiedDate":"2024-01-30"},{"lineNumber":80,"author":{"gitId":"SimHanKiong"},"content":" list.add(dummy1);","lastModifiedDate":"2024-01-30"},{"lineNumber":81,"author":{"gitId":"SimHanKiong"},"content":" list.add(dummy2);","lastModifiedDate":"2024-01-30"},{"lineNumber":82,"author":{"gitId":"SimHanKiong"},"content":" TaskList tasks \u003d new TaskList(list);","lastModifiedDate":"2024-01-30"},{"lineNumber":83,"author":{"gitId":"SimHanKiong"},"content":" assertEquals(2, tasks.size());","lastModifiedDate":"2024-01-30"},{"lineNumber":84,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":85,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":86,"author":{"gitId":"SimHanKiong"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":87,"author":{"gitId":"SimHanKiong"},"content":" public void size_emptyList_success() {","lastModifiedDate":"2024-01-30"},{"lineNumber":88,"author":{"gitId":"SimHanKiong"},"content":" TaskList tasks \u003d new TaskList();","lastModifiedDate":"2024-01-30"},{"lineNumber":89,"author":{"gitId":"SimHanKiong"},"content":" assertEquals(0, tasks.size());","lastModifiedDate":"2024-01-30"},{"lineNumber":90,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":91,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":92,"author":{"gitId":"SimHanKiong"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"SimHanKiong":92}},{"path":"src/test/java/johnny/tasks/TaskTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"SimHanKiong"},"content":"package johnny.tasks;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"SimHanKiong"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"SimHanKiong"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"SimHanKiong"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"SimHanKiong"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"SimHanKiong"},"content":"public class TaskTest {","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"SimHanKiong"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"SimHanKiong"},"content":" public void toString_unMarkedTask_success() {","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"SimHanKiong"},"content":" Task task \u003d new Task(\"do homework\");","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"SimHanKiong"},"content":" assertEquals(\"[ ] do homework\", task.toString());","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"SimHanKiong"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"SimHanKiong"},"content":" public void toString_markedTask_success() {","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"SimHanKiong"},"content":" Task task \u003d new Task(\"do homework\");","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"SimHanKiong"},"content":" task.mark();","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"SimHanKiong"},"content":" assertEquals(\"[X] do homework\", task.toString());","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"SimHanKiong"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"SimHanKiong"},"content":" public void addToFile_unMarkedTask_success() {","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"SimHanKiong"},"content":" Task task \u003d new Task(\"do homework\");","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"SimHanKiong"},"content":" assertEquals(\"0 | do homework\", task.addToFile());","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"SimHanKiong"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"SimHanKiong"},"content":" public void addToFile_markedTask_success() {","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"SimHanKiong"},"content":" Task task \u003d new Task(\"do homework\");","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"SimHanKiong"},"content":" task.mark();","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"SimHanKiong"},"content":" assertEquals(\"1 | do homework\", task.addToFile());","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"SimHanKiong"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"SimHanKiong"},"content":" public void formatInputDate_success() {","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"SimHanKiong"},"content":" LocalDateTime dateTime \u003d LocalDateTime.parse(\"2013-01-23T21:30\");","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"SimHanKiong"},"content":" assertEquals(\"2013/01/23 2130\", new Task(\"dummy\").formatInputDate(dateTime));","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"SimHanKiong"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"SimHanKiong"},"content":" public void formatOutputDate_success() {","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"SimHanKiong"},"content":" LocalDateTime dateTime \u003d LocalDateTime.parse(\"2013-01-23T21:30\");","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"SimHanKiong"},"content":" assertEquals(\"Jan 23 2013 09:30 PM\", new Task(\"dummy\").formatOutputDate(dateTime));","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"SimHanKiong"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"SimHanKiong":50}},{"path":"src/test/java/johnny/tasks/TodoTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"SimHanKiong"},"content":"package johnny.tasks;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"SimHanKiong"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"SimHanKiong"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"SimHanKiong"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"SimHanKiong"},"content":"public class TodoTest {","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"SimHanKiong"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"SimHanKiong"},"content":" public void toString_unMarkedTodo_success() {","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"SimHanKiong"},"content":" ToDo todo \u003d new ToDo(\"sleep\");","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"SimHanKiong"},"content":" assertEquals(\"[T][ ] sleep\", todo.toString());","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"SimHanKiong"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"SimHanKiong"},"content":" public void toString_markedTodo_success() {","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"SimHanKiong"},"content":" ToDo todo \u003d new ToDo(\"sleep\");","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"SimHanKiong"},"content":" todo.mark();","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"SimHanKiong"},"content":" assertEquals(\"[T][X] sleep\", todo.toString());","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"SimHanKiong"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"SimHanKiong"},"content":" public void addToFile_unMarkedTodo_success() {","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"SimHanKiong"},"content":" ToDo todo \u003d new ToDo(\"sleep\");","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"SimHanKiong"},"content":" assertEquals(\"T | 0 | sleep\\n\", todo.addToFile());","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"SimHanKiong"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"SimHanKiong"},"content":" public void addToFile_markedTodo_success() {","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"SimHanKiong"},"content":" ToDo todo \u003d new ToDo(\"sleep\");","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"SimHanKiong"},"content":" todo.mark();","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"SimHanKiong"},"content":" assertEquals(\"T | 1 | sleep\\n\", todo.addToFile());","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"SimHanKiong"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"SimHanKiong":37}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"SimHanKiong"},"content":"todo borrow book","lastModifiedDate":"2024-01-21"},{"lineNumber":2,"author":{"gitId":"SimHanKiong"},"content":"deadline return book /by Sunday","lastModifiedDate":"2024-01-21"},{"lineNumber":3,"author":{"gitId":"SimHanKiong"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2024-01-21"},{"lineNumber":4,"author":{"gitId":"SimHanKiong"},"content":"list","lastModifiedDate":"2024-01-21"},{"lineNumber":5,"author":{"gitId":"SimHanKiong"},"content":"mark 1","lastModifiedDate":"2024-01-21"},{"lineNumber":6,"author":{"gitId":"SimHanKiong"},"content":"list","lastModifiedDate":"2024-01-21"},{"lineNumber":7,"author":{"gitId":"SimHanKiong"},"content":"unmark 1","lastModifiedDate":"2024-01-21"},{"lineNumber":8,"author":{"gitId":"SimHanKiong"},"content":"list","lastModifiedDate":"2024-01-21"},{"lineNumber":9,"author":{"gitId":"SimHanKiong"},"content":"delete 2","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"SimHanKiong"},"content":"blablabla","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"SimHanKiong"},"content":"bye","lastModifiedDate":"2024-01-21"}],"authorContributionMap":{"SimHanKiong":11}},{"path":"text-ui-test/runtest.bat","fileType":"bat","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@ECHO OFF","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"REM create bin directory if it doesn\u0027t exist","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"if not exist ..\\bin mkdir ..\\bin","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"REM delete output from previous run","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"if exist ACTUAL.TXT del ACTUAL.TXT","lastModifiedDate":"2020-08-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"REM compile the code into the bin folder","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"javac -cp ..\\src\\main\\java -Xlint:none -d ..\\bin ..\\src\\main\\java\\*.java","lastModifiedDate":"2020-08-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"IF ERRORLEVEL 1 (","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":" echo ********** BUILD FAILURE **********","lastModifiedDate":"2020-05-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":" exit /b 1","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":")","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"REM no error here, errorlevel \u003d\u003d 0","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"SimHanKiong"},"content":"REM run the program, feed johnny.commands from input.txt file and redirect the output to the ACTUAL.TXT","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"-"},"content":"java -classpath ..\\bin Duke \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"REM compare the output to the expected output","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"FC ACTUAL.TXT EXPECTED.TXT","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"SimHanKiong":1,"-":20}},{"path":"text-ui-test/runtest.sh","fileType":"sh","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"#!/usr/bin/env bash","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"# create bin directory if it doesn\u0027t exist","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"if [ ! -d \"../bin\" ]","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":" mkdir ../bin","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"# delete output from previous run","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"if [ -e \"./ACTUAL.TXT\" ]","lastModifiedDate":"2020-05-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":" rm ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"# compile the code into the bin folder, terminates if error occurred","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"SimHanKiong"},"content":"if ! javac -cp ../src/main/java/johnny -Xlint:none -d ../bin ../src/main/java/johnny/*.java","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" echo \"********** BUILD FAILURE **********\"","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" exit 1","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"SimHanKiong"},"content":"# run the program, feed johnny.commands from input.txt file and redirect the output to the ACTUAL.TXT","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"SimHanKiong"},"content":"java -classpath ../bin Johnny \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-01-21"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":"# convert to UNIX format","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":"cp EXPECTED.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":"dos2unix ACTUAL.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"# compare the output to the expected output","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"diff ACTUAL.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":"if [ $? -eq 0 ]","lastModifiedDate":"2020-05-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":" echo \"Test result: PASSED\"","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":" exit 0","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":"else","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" echo \"Test result: FAILED\"","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" exit 1","lastModifiedDate":"2020-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"SimHanKiong":3,"-":35}}] diff --git a/SimHanKiong_ip_master/commits.json b/SimHanKiong_ip_master/commits.json index 7ccb3881..f03eab49 100644 --- a/SimHanKiong_ip_master/commits.json +++ b/SimHanKiong_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"SimHanKiong":[{"date":"2024-01-20","commitResults":[{"hash":"227f3fb716139cafac2c7ef7a9e4b9a9364584f7","isMergeCommit":false,"messageTitle":"Reached Level 0","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":7,"deletions":10}}},{"hash":"f35e80e3192033e0c5a4c22724e1551539df97f9","isMergeCommit":false,"messageTitle":"Reached Level 1","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":21,"deletions":1}}},{"hash":"55164b92b7ff0b1c346e201cec2cae8b457eedd5","isMergeCommit":false,"messageTitle":"Reached Level 2","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":13,"deletions":4}}},{"hash":"43af79605d2867ac0a97c209337123cf2b987cd3","isMergeCommit":false,"messageTitle":"Reached Level 3","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":62,"deletions":7}}}]},{"date":"2024-01-21","commitResults":[{"hash":"801175c522066bc799461f3ecf7b3a8c73f7c974","isMergeCommit":false,"messageTitle":"Reach Level 4","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":82,"deletions":8}}},{"hash":"ac0c379174fab29a19adddaf676a77548c9f89d4","isMergeCommit":false,"messageTitle":"Reached A-TextUiTesting","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":9,"deletions":0},"java":{"insertions":1,"deletions":0},"sh":{"insertions":1,"deletions":1}}},{"hash":"4eba514e25f64e4b34339aa763372cee15186079","isMergeCommit":false,"messageTitle":"Reached Level 5","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":111,"deletions":40}}},{"hash":"51666c6e9d5cd3e5c6a6ade4449154eecb1f8872","isMergeCommit":false,"messageTitle":"Reached Level-6","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":28,"deletions":4}}}]},{"date":"2024-01-25","commitResults":[{"hash":"be703afc099f2eb32f090f97dda6f82341c9b786","isMergeCommit":false,"messageTitle":"Reached A-Enums","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":1},"java":{"insertions":38,"deletions":15}}}]},{"date":"2024-01-28","commitResults":[{"hash":"27bb72bd47cf4f0b814cfd5648fc0e60231a5322","isMergeCommit":false,"messageTitle":"Add Save Feature","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":109,"deletions":14}}},{"hash":"0a83ed5c49d383b9b081990d25fc46a13af7a5d8","isMergeCommit":false,"messageTitle":"Add data/johnny.txt Storage File","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":0}}}]},{"date":"2024-01-29","commitResults":[{"hash":"df047197314be7e02ad579a330d9dca91e8d947f","isMergeCommit":false,"messageTitle":"Add Date and Time parsing","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":74,"deletions":47}}},{"hash":"cb59eebb9744ac331baa1867cb449446756e349d","isMergeCommit":false,"messageTitle":"Remove tracking of storage file","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":4}}},{"hash":"1e1686a4543c10b3d9747696e6d1691d85cfe727","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027 into \u0027master\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}},{"hash":"f9e1e0bd5db2813fe35866a3929a391d8d39835f","isMergeCommit":false,"messageTitle":"Refactor to match OOP standards","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":510,"deletions":295}}},{"hash":"ed00f56ae2240bc226cce2cbdd1cd898a2abb64d","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-MoreOOP\u0027","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{}},{"hash":"6c01e5e9bdea67c5fe6a873ea65be2a8973a2a3e","isMergeCommit":false,"messageTitle":"Refactor code into separate packages","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":113,"deletions":5},"bat":{"insertions":1,"deletions":1},"sh":{"insertions":1,"deletions":1}}},{"hash":"48d80ae8c4ddd4793374c95a3dd3b81defb3bf22","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-Packages\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"f277a54d15a088dee3db3ed075f61f37297376ba","isMergeCommit":false,"messageTitle":"Fix package refactor error","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":20,"deletions":22},"sh":{"insertions":1,"deletions":1}}},{"hash":"b8ca1a2767b2a01c78690332ec952b2841a24086","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-Packages\u0027","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{}}]},{"date":"2024-01-30","commitResults":[{"hash":"8b24a5edeed458cb3a331be7050f2193bdd99a46","isMergeCommit":true,"messageTitle":"Merge commit \u0027add-gradle-support\u0027 into branch-A-Gradle","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"bc2fa6989b5854929a6ff2671d6f89f9c724f44b","isMergeCommit":false,"messageTitle":"Add Gradle and Refactor code to fit checkstyle requirements","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":3,"deletions":2},"java":{"insertions":37,"deletions":22}}},{"hash":"b690e8da9e09a8b3e9f9bb2f3e1228a82c702222","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-Gradle\u0027","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"SimHanKiong":{"java":742,"md":0,"fxml":0,"sh":3,"bat":1,"gradle":3,"txt":11}},"authorContributionVariance":{"SimHanKiong":88763.63},"authorDisplayNameMap":{"SimHanKiong":"CS2103T-F13-2 SIM ..IONG"}} +{"authorDailyContributionsMap":{"SimHanKiong":[{"date":"2024-01-20","commitResults":[{"hash":"227f3fb716139cafac2c7ef7a9e4b9a9364584f7","isMergeCommit":false,"messageTitle":"Reached Level 0","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":7,"deletions":10}}},{"hash":"f35e80e3192033e0c5a4c22724e1551539df97f9","isMergeCommit":false,"messageTitle":"Reached Level 1","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":21,"deletions":1}}},{"hash":"55164b92b7ff0b1c346e201cec2cae8b457eedd5","isMergeCommit":false,"messageTitle":"Reached Level 2","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":13,"deletions":4}}},{"hash":"43af79605d2867ac0a97c209337123cf2b987cd3","isMergeCommit":false,"messageTitle":"Reached Level 3","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":62,"deletions":7}}}]},{"date":"2024-01-21","commitResults":[{"hash":"801175c522066bc799461f3ecf7b3a8c73f7c974","isMergeCommit":false,"messageTitle":"Reach Level 4","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":82,"deletions":8}}},{"hash":"ac0c379174fab29a19adddaf676a77548c9f89d4","isMergeCommit":false,"messageTitle":"Reached A-TextUiTesting","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":9,"deletions":0},"java":{"insertions":1,"deletions":0},"sh":{"insertions":1,"deletions":1}}},{"hash":"4eba514e25f64e4b34339aa763372cee15186079","isMergeCommit":false,"messageTitle":"Reached Level 5","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":111,"deletions":40}}},{"hash":"51666c6e9d5cd3e5c6a6ade4449154eecb1f8872","isMergeCommit":false,"messageTitle":"Reached Level-6","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":28,"deletions":4}}}]},{"date":"2024-01-25","commitResults":[{"hash":"be703afc099f2eb32f090f97dda6f82341c9b786","isMergeCommit":false,"messageTitle":"Reached A-Enums","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":1},"java":{"insertions":38,"deletions":15}}}]},{"date":"2024-01-28","commitResults":[{"hash":"27bb72bd47cf4f0b814cfd5648fc0e60231a5322","isMergeCommit":false,"messageTitle":"Add Save Feature","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":109,"deletions":14}}},{"hash":"0a83ed5c49d383b9b081990d25fc46a13af7a5d8","isMergeCommit":false,"messageTitle":"Add data/johnny.txt Storage File","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":0}}}]},{"date":"2024-01-29","commitResults":[{"hash":"df047197314be7e02ad579a330d9dca91e8d947f","isMergeCommit":false,"messageTitle":"Add Date and Time parsing","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":74,"deletions":47}}},{"hash":"cb59eebb9744ac331baa1867cb449446756e349d","isMergeCommit":false,"messageTitle":"Remove tracking of storage file","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":4}}},{"hash":"1e1686a4543c10b3d9747696e6d1691d85cfe727","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027 into \u0027master\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}},{"hash":"f9e1e0bd5db2813fe35866a3929a391d8d39835f","isMergeCommit":false,"messageTitle":"Refactor to match OOP standards","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":510,"deletions":295}}},{"hash":"ed00f56ae2240bc226cce2cbdd1cd898a2abb64d","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-MoreOOP\u0027","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{}},{"hash":"6c01e5e9bdea67c5fe6a873ea65be2a8973a2a3e","isMergeCommit":false,"messageTitle":"Refactor code into separate packages","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":113,"deletions":5},"bat":{"insertions":1,"deletions":1},"sh":{"insertions":1,"deletions":1}}},{"hash":"48d80ae8c4ddd4793374c95a3dd3b81defb3bf22","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-Packages\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"f277a54d15a088dee3db3ed075f61f37297376ba","isMergeCommit":false,"messageTitle":"Fix package refactor error","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":20,"deletions":22},"sh":{"insertions":1,"deletions":1}}},{"hash":"b8ca1a2767b2a01c78690332ec952b2841a24086","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-Packages\u0027","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{}}]},{"date":"2024-01-30","commitResults":[{"hash":"8b24a5edeed458cb3a331be7050f2193bdd99a46","isMergeCommit":true,"messageTitle":"Merge commit \u0027add-gradle-support\u0027 into branch-A-Gradle","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"bc2fa6989b5854929a6ff2671d6f89f9c724f44b","isMergeCommit":false,"messageTitle":"Add Gradle and Refactor code to fit checkstyle requirements","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":3,"deletions":2},"java":{"insertions":37,"deletions":22}}},{"hash":"b690e8da9e09a8b3e9f9bb2f3e1228a82c702222","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-Gradle\u0027","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{}},{"hash":"ad4deaee7734a7c178f67951fb44ad1168dd344a","isMergeCommit":false,"messageTitle":"Add JUnit tests for tasks package","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":263,"deletions":0}}},{"hash":"197c8dd43cb4362dd1b1fdfdc1403240869b8c09","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-JUnit\u0027","messageBody":"","tags":["A-JUnit"],"fileTypesAndContributionMap":{}},{"hash":"ad402693fc0eac1bb6c383de3d9c66d7fac7b12f","isMergeCommit":false,"messageTitle":"Refactor to allow jar file to be created","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":1},"java":{"insertions":1,"deletions":1}}},{"hash":"91bae872973c1c21d60821b43291b48ce2c91b4d","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-Jar\u0027","messageBody":"","tags":["A-Jar"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"SimHanKiong":{"java":1005,"md":0,"fxml":0,"sh":3,"bat":1,"gradle":3,"txt":11}},"authorContributionVariance":{"SimHanKiong":90552.91},"authorDisplayNameMap":{"SimHanKiong":"CS2103T-F13-2 SIM ..IONG"}} diff --git a/Yskie_ip_master/commits.json b/Yskie_ip_master/commits.json index 74efe25c..1da78fe8 100644 --- a/Yskie_ip_master/commits.json +++ b/Yskie_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"Yskie":[{"date":"2024-01-24","commitResults":[{"hash":"163b293c334a2713f7a0d6e36bff3f30cf082107","isMergeCommit":false,"messageTitle":"Implemented Skeletal Version of Tiny","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":0}}},{"hash":"81ff1a1a1157ca52dd13d53f74ab9527f1c023df","isMergeCommit":false,"messageTitle":"Echo and Bye Function","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":22,"deletions":17}}},{"hash":"3126f232d73c7f954b38df4465fed85ad60f0d5d","isMergeCommit":false,"messageTitle":"Implemented Add and List Functions with a Task class.","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":27,"deletions":1}}},{"hash":"f887b32cf8c043fec2f4db3add3e207f0d1366c0","isMergeCommit":false,"messageTitle":"Added Mark and Umarked Function with Exception Handling.","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":108,"deletions":22}}}]},{"date":"2024-01-25","commitResults":[{"hash":"da01acab4d43dad899763c6ecd7321a34bb6a11c","isMergeCommit":false,"messageTitle":"Added “Deadline, Event and Todo class and implemented their methods.","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":205,"deletions":53}}},{"hash":"1a6ef84f64caac0d4d2ec2fcad3a4e92c682b291","isMergeCommit":false,"messageTitle":"Handled Exceptions and Incorrect Inputs.","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":3}}},{"hash":"38cd27c05e2bc86dae4afb9b1eaf98fbbce116c0","isMergeCommit":false,"messageTitle":"Tested using I/O redirection.","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":0},"java":{"insertions":1,"deletions":1},"sh":{"insertions":2,"deletions":2}}},{"hash":"be10f543020755b6bf8f52634aaf43ea0b287cf4","isMergeCommit":false,"messageTitle":"Implemented Deletion Feature.","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":36,"deletions":7}}}]},{"date":"2024-01-29","commitResults":[{"hash":"6ee7268459de06f9647845eac333ddfba40b7839","isMergeCommit":false,"messageTitle":"Add Save function and OOP optimisation with the respective class","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"java":{"insertions":381,"deletions":219}}},{"hash":"cf0cb0752adf2e5f9049485bd0351e8f1a9264f1","isMergeCommit":false,"messageTitle":"Bug fix for the data directory is not found","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"java":{"insertions":7,"deletions":0}}},{"hash":"4fc817847c40d937770a53f4509924abd5ca4738","isMergeCommit":false,"messageTitle":"Updated the varaibles modifier to be protected","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":5,"deletions":10}}},{"hash":"b4e6d09b47c3d718f6dbe741a1c1fd5adef0c112","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-01-30","commitResults":[{"hash":"2a851ccb5e255aa33c634fcf1d663da0301a9032","isMergeCommit":false,"messageTitle":"Changed deadline to be stored as LocalDateTime for deadline and event","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{"java":{"insertions":176,"deletions":37}}},{"hash":"155e0fa25e484a472586697c901e1353b314d4be","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"4e82947da2615dccc43799fddfd38e57569ddeb7","isMergeCommit":false,"messageTitle":"Refactored code to follow OOP Style","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":10}}},{"hash":"4d9c727a0f14ca38ae21165c81675498e36cd318","isMergeCommit":false,"messageTitle":"Refactor code into a package \u0027tiny\u0027","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{"java":{"insertions":37,"deletions":1}}},{"hash":"56f501503f6a6f142717b62793b3efee3dfd2ed1","isMergeCommit":false,"messageTitle":"Refactored code to follow Coding Standard","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":11,"deletions":8}}},{"hash":"208c2d08e7f1a5d122c1a67ff330343f8b61b506","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"Yskie":{"java":666,"md":0,"fxml":0,"sh":1,"bat":0,"gradle":0,"txt":5}},"authorContributionVariance":{"Yskie":37065.855},"authorDisplayNameMap":{"Yskie":"CS2103T-W13-4 YONG..KANG"}} +{"authorDailyContributionsMap":{"Yskie":[{"date":"2024-01-24","commitResults":[{"hash":"163b293c334a2713f7a0d6e36bff3f30cf082107","isMergeCommit":false,"messageTitle":"Implemented Skeletal Version of Tiny","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":0}}},{"hash":"81ff1a1a1157ca52dd13d53f74ab9527f1c023df","isMergeCommit":false,"messageTitle":"Echo and Bye Function","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":22,"deletions":17}}},{"hash":"3126f232d73c7f954b38df4465fed85ad60f0d5d","isMergeCommit":false,"messageTitle":"Implemented Add and List Functions with a Task class.","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":27,"deletions":1}}},{"hash":"f887b32cf8c043fec2f4db3add3e207f0d1366c0","isMergeCommit":false,"messageTitle":"Added Mark and Umarked Function with Exception Handling.","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":108,"deletions":22}}}]},{"date":"2024-01-25","commitResults":[{"hash":"da01acab4d43dad899763c6ecd7321a34bb6a11c","isMergeCommit":false,"messageTitle":"Added “Deadline, Event and Todo class and implemented their methods.","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":205,"deletions":53}}},{"hash":"1a6ef84f64caac0d4d2ec2fcad3a4e92c682b291","isMergeCommit":false,"messageTitle":"Handled Exceptions and Incorrect Inputs.","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":3}}},{"hash":"38cd27c05e2bc86dae4afb9b1eaf98fbbce116c0","isMergeCommit":false,"messageTitle":"Tested using I/O redirection.","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":0},"java":{"insertions":1,"deletions":1},"sh":{"insertions":2,"deletions":2}}},{"hash":"be10f543020755b6bf8f52634aaf43ea0b287cf4","isMergeCommit":false,"messageTitle":"Implemented Deletion Feature.","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":36,"deletions":7}}}]},{"date":"2024-01-29","commitResults":[{"hash":"6ee7268459de06f9647845eac333ddfba40b7839","isMergeCommit":false,"messageTitle":"Add Save function and OOP optimisation with the respective class","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"java":{"insertions":381,"deletions":219}}},{"hash":"cf0cb0752adf2e5f9049485bd0351e8f1a9264f1","isMergeCommit":false,"messageTitle":"Bug fix for the data directory is not found","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"java":{"insertions":7,"deletions":0}}},{"hash":"4fc817847c40d937770a53f4509924abd5ca4738","isMergeCommit":false,"messageTitle":"Updated the varaibles modifier to be protected","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":5,"deletions":10}}},{"hash":"b4e6d09b47c3d718f6dbe741a1c1fd5adef0c112","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-01-30","commitResults":[{"hash":"2a851ccb5e255aa33c634fcf1d663da0301a9032","isMergeCommit":false,"messageTitle":"Changed deadline to be stored as LocalDateTime for deadline and event","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{"java":{"insertions":176,"deletions":37}}},{"hash":"155e0fa25e484a472586697c901e1353b314d4be","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"4e82947da2615dccc43799fddfd38e57569ddeb7","isMergeCommit":false,"messageTitle":"Refactored code to follow OOP Style","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":10}}},{"hash":"4d9c727a0f14ca38ae21165c81675498e36cd318","isMergeCommit":false,"messageTitle":"Refactor code into a package \u0027tiny\u0027","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{"java":{"insertions":37,"deletions":1}}},{"hash":"56f501503f6a6f142717b62793b3efee3dfd2ed1","isMergeCommit":false,"messageTitle":"Refactored code to follow Coding Standard","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":11,"deletions":8}}},{"hash":"208c2d08e7f1a5d122c1a67ff330343f8b61b506","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"33594ae582d454db2240ad0414122d0b3e70b712","isMergeCommit":true,"messageTitle":"Merge pull request #1 from Yskie/add-gradle-support","messageBody":"Add gradle support","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"Yskie":{"java":666,"md":0,"fxml":0,"sh":1,"bat":0,"gradle":0,"txt":5}},"authorContributionVariance":{"Yskie":37065.855},"authorDisplayNameMap":{"Yskie":"CS2103T-W13-4 YONG..KANG"}} diff --git a/Zack-Tay_ip_master/authorship.json b/Zack-Tay_ip_master/authorship.json index b4e33ba1..a2ca912e 100644 --- a/Zack-Tay_ip_master/authorship.json +++ b/Zack-Tay_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"src/main/java/Fredricksen.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Zack-Tay"},"content":"import java.io.*;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"Zack-Tay"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"Zack-Tay"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"Zack-Tay"},"content":"public class Fredricksen {","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"Zack-Tay"},"content":" public static void greeting(String line) {","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"Zack-Tay"},"content":" System.out.println(line);","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"Zack-Tay"},"content":" System.out.println(\"Hello! I\u0027m Fredricksen\");","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"Zack-Tay"},"content":" System.out.println(\"What can I do for you?\");","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"Zack-Tay"},"content":" System.out.println(line);","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"Zack-Tay"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"Zack-Tay"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"Zack-Tay"},"content":" public static void updateFile(ArrayList\u003cTask\u003e list) {","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"Zack-Tay"},"content":" String filename \u003d \"./data/Fredricksen.txt\";","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"Zack-Tay"},"content":" File file \u003d new File(filename);","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"Zack-Tay"},"content":" try (BufferedWriter bw \u003d new BufferedWriter(new FileWriter(filename))) {","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"Zack-Tay"},"content":" if (list.size() \u003d\u003d 0) {","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"Zack-Tay"},"content":" file.delete();","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"Zack-Tay"},"content":" return;","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"Zack-Tay"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"Zack-Tay"},"content":" for (int i \u003d 0; i \u003c list.size(); i++) {","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"Zack-Tay"},"content":" Task task \u003d list.get(i);","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"Zack-Tay"},"content":" String type \u003d task.getType();","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"Zack-Tay"},"content":" String content \u003d task.getTask();","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"Zack-Tay"},"content":" boolean isDone \u003d task.getDone();","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"Zack-Tay"},"content":" bw.write(\"type: \" + type + \" isDone: \" + isDone + \" content: \" + content);","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"Zack-Tay"},"content":" bw.newLine();","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"Zack-Tay"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"Zack-Tay"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"Zack-Tay"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"Zack-Tay"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"Zack-Tay"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"Zack-Tay"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":33,"author":{"gitId":"Zack-Tay"},"content":" public static ArrayList\u003cTask\u003e loadList() {","lastModifiedDate":"2024-01-28"},{"lineNumber":34,"author":{"gitId":"Zack-Tay"},"content":" ArrayList\u003cTask\u003e list \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-28"},{"lineNumber":35,"author":{"gitId":"Zack-Tay"},"content":" String filename \u003d \"./data/Fredricksen.txt\";","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"Zack-Tay"},"content":" File file \u003d new File(filename);","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"Zack-Tay"},"content":" try (BufferedReader br \u003d new BufferedReader(new FileReader(filename))) {","lastModifiedDate":"2024-01-28"},{"lineNumber":38,"author":{"gitId":"Zack-Tay"},"content":" String next;","lastModifiedDate":"2024-01-28"},{"lineNumber":39,"author":{"gitId":"Zack-Tay"},"content":" while ((next \u003d br.readLine()) !\u003d null) {","lastModifiedDate":"2024-01-28"},{"lineNumber":40,"author":{"gitId":"Zack-Tay"},"content":" int type \u003d next.indexOf(\"type: \");","lastModifiedDate":"2024-01-28"},{"lineNumber":41,"author":{"gitId":"Zack-Tay"},"content":" int isDone \u003d next.indexOf(\"isDone: \");","lastModifiedDate":"2024-01-28"},{"lineNumber":42,"author":{"gitId":"Zack-Tay"},"content":" int content \u003d next.indexOf(\"content: \");","lastModifiedDate":"2024-01-28"},{"lineNumber":43,"author":{"gitId":"Zack-Tay"},"content":" String done \u003d next.substring(isDone + 8, isDone + 9);","lastModifiedDate":"2024-01-28"},{"lineNumber":44,"author":{"gitId":"Zack-Tay"},"content":" Task newTask \u003d new Task(next.substring(content + 9), next.substring(type + 6, type + 7), done.equals(\"t\"));","lastModifiedDate":"2024-01-28"},{"lineNumber":45,"author":{"gitId":"Zack-Tay"},"content":" list.add(newTask);","lastModifiedDate":"2024-01-28"},{"lineNumber":46,"author":{"gitId":"Zack-Tay"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":47,"author":{"gitId":"Zack-Tay"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":48,"author":{"gitId":"Zack-Tay"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-28"},{"lineNumber":49,"author":{"gitId":"Zack-Tay"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":50,"author":{"gitId":"Zack-Tay"},"content":" // read file, if have content, add to list, else leave list as empty.","lastModifiedDate":"2024-01-28"},{"lineNumber":51,"author":{"gitId":"Zack-Tay"},"content":" return list;","lastModifiedDate":"2024-01-28"},{"lineNumber":52,"author":{"gitId":"Zack-Tay"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":53,"author":{"gitId":"Zack-Tay"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":54,"author":{"gitId":"Zack-Tay"},"content":" public static void listOfCommands() {","lastModifiedDate":"2024-01-25"},{"lineNumber":55,"author":{"gitId":"Zack-Tay"},"content":" System.out.println(\"You might have entered an invalid command!\");","lastModifiedDate":"2024-01-25"},{"lineNumber":56,"author":{"gitId":"Zack-Tay"},"content":" System.out.println(\"Below are the available commands and formats to follow!\");","lastModifiedDate":"2024-01-25"},{"lineNumber":57,"author":{"gitId":"Zack-Tay"},"content":" System.out.println(\"1. To view all your current task: list\");","lastModifiedDate":"2024-01-25"},{"lineNumber":58,"author":{"gitId":"Zack-Tay"},"content":" System.out.println(\"2. To add new task:\");","lastModifiedDate":"2024-01-25"},{"lineNumber":59,"author":{"gitId":"Zack-Tay"},"content":" System.out.println(\" a. todos: todo \u003ctask\u003e\");","lastModifiedDate":"2024-01-25"},{"lineNumber":60,"author":{"gitId":"Zack-Tay"},"content":" System.out.println(\" b. deadlines: deadline \u003ctask\u003e /by \u003cdeadline\u003e\");","lastModifiedDate":"2024-01-25"},{"lineNumber":61,"author":{"gitId":"Zack-Tay"},"content":" System.out.println(\" c. event: event \u003cevent\u003e /from \u003cstartdate, starttiming\u003e /to \u003cenddate, endtiming\u003e\");","lastModifiedDate":"2024-01-25"},{"lineNumber":62,"author":{"gitId":"Zack-Tay"},"content":" System.out.println(\"3. To delete a task: delete \u003ctask number\u003e\");","lastModifiedDate":"2024-01-25"},{"lineNumber":63,"author":{"gitId":"Zack-Tay"},"content":" System.out.println(\"4. To mark task as completed: mark \u003ctask number\u003e\");","lastModifiedDate":"2024-01-25"},{"lineNumber":64,"author":{"gitId":"Zack-Tay"},"content":" System.out.println(\"5. To unmark completed task: unmark \u003ctask number\u003e\");","lastModifiedDate":"2024-01-25"},{"lineNumber":65,"author":{"gitId":"Zack-Tay"},"content":" System.out.println(\"6. To exit program: bye\");","lastModifiedDate":"2024-01-25"},{"lineNumber":66,"author":{"gitId":"Zack-Tay"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":67,"author":{"gitId":"Zack-Tay"},"content":" public enum commands {","lastModifiedDate":"2024-01-25"},{"lineNumber":68,"author":{"gitId":"Zack-Tay"},"content":" list, todo, deadline, event, mark, unmark, delete, bye","lastModifiedDate":"2024-01-25"},{"lineNumber":69,"author":{"gitId":"Zack-Tay"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":70,"author":{"gitId":"Zack-Tay"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-01-25"},{"lineNumber":71,"author":{"gitId":"Zack-Tay"},"content":" ArrayList\u003cTask\u003e list \u003d loadList();","lastModifiedDate":"2024-01-28"},{"lineNumber":72,"author":{"gitId":"Zack-Tay"},"content":" Scanner in \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-25"},{"lineNumber":73,"author":{"gitId":"Zack-Tay"},"content":" // ArrayList\u003cTask\u003e list \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-28"},{"lineNumber":74,"author":{"gitId":"Zack-Tay"},"content":" String line \u003d \"____________________________________________________________\";","lastModifiedDate":"2024-01-25"},{"lineNumber":75,"author":{"gitId":"Zack-Tay"},"content":" greeting(line);","lastModifiedDate":"2024-01-25"},{"lineNumber":76,"author":{"gitId":"Zack-Tay"},"content":" boolean loop \u003d true;","lastModifiedDate":"2024-01-25"},{"lineNumber":77,"author":{"gitId":"Zack-Tay"},"content":" while (loop) {","lastModifiedDate":"2024-01-25"},{"lineNumber":78,"author":{"gitId":"Zack-Tay"},"content":" System.out.println(\"\");","lastModifiedDate":"2024-01-25"},{"lineNumber":79,"author":{"gitId":"Zack-Tay"},"content":" String s \u003d in.nextLine();","lastModifiedDate":"2024-01-25"},{"lineNumber":80,"author":{"gitId":"Zack-Tay"},"content":" String[] split \u003d s.split(\" \");","lastModifiedDate":"2024-01-25"},{"lineNumber":81,"author":{"gitId":"Zack-Tay"},"content":" String first \u003d split[0].toLowerCase();","lastModifiedDate":"2024-01-25"},{"lineNumber":82,"author":{"gitId":"Zack-Tay"},"content":" switch (first) {","lastModifiedDate":"2024-01-25"},{"lineNumber":83,"author":{"gitId":"Zack-Tay"},"content":" case \"mark\":","lastModifiedDate":"2024-01-25"},{"lineNumber":84,"author":{"gitId":"Zack-Tay"},"content":" System.out.println(line);","lastModifiedDate":"2024-01-25"},{"lineNumber":85,"author":{"gitId":"Zack-Tay"},"content":" if (split.length \u003c\u003d 1) {","lastModifiedDate":"2024-01-25"},{"lineNumber":86,"author":{"gitId":"Zack-Tay"},"content":" listOfCommands();","lastModifiedDate":"2024-01-25"},{"lineNumber":87,"author":{"gitId":"Zack-Tay"},"content":" break;","lastModifiedDate":"2024-01-25"},{"lineNumber":88,"author":{"gitId":"Zack-Tay"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":89,"author":{"gitId":"Zack-Tay"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":90,"author":{"gitId":"Zack-Tay"},"content":" Task t1 \u003d list.get(Integer.parseInt(split[1]) - 1);","lastModifiedDate":"2024-01-25"},{"lineNumber":91,"author":{"gitId":"Zack-Tay"},"content":" System.out.println(\"Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2024-01-25"},{"lineNumber":92,"author":{"gitId":"Zack-Tay"},"content":" t1.setDone();","lastModifiedDate":"2024-01-25"},{"lineNumber":93,"author":{"gitId":"Zack-Tay"},"content":" System.out.println(\" \" + t1.printTask(t1.getType(), t1.getDone(), t1.getTask()));","lastModifiedDate":"2024-01-25"},{"lineNumber":94,"author":{"gitId":"Zack-Tay"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":95,"author":{"gitId":"Zack-Tay"},"content":" String single \u003d list.size() \u003c\u003d 1 ? \"task\" : \"tasks\";","lastModifiedDate":"2024-01-25"},{"lineNumber":96,"author":{"gitId":"Zack-Tay"},"content":" System.out.println(\"You only have \" + list.size() + \" \" + single + \" currently. Type \\\"list\\\" to view all your current \" + single);","lastModifiedDate":"2024-01-25"},{"lineNumber":97,"author":{"gitId":"Zack-Tay"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":98,"author":{"gitId":"Zack-Tay"},"content":" System.out.println(line);","lastModifiedDate":"2024-01-25"},{"lineNumber":99,"author":{"gitId":"Zack-Tay"},"content":" break;","lastModifiedDate":"2024-01-25"},{"lineNumber":100,"author":{"gitId":"Zack-Tay"},"content":" case \"unmark\":","lastModifiedDate":"2024-01-25"},{"lineNumber":101,"author":{"gitId":"Zack-Tay"},"content":" System.out.println(line);","lastModifiedDate":"2024-01-25"},{"lineNumber":102,"author":{"gitId":"Zack-Tay"},"content":" if (split.length \u003c\u003d 1) {","lastModifiedDate":"2024-01-25"},{"lineNumber":103,"author":{"gitId":"Zack-Tay"},"content":" listOfCommands();","lastModifiedDate":"2024-01-25"},{"lineNumber":104,"author":{"gitId":"Zack-Tay"},"content":" break;","lastModifiedDate":"2024-01-25"},{"lineNumber":105,"author":{"gitId":"Zack-Tay"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":106,"author":{"gitId":"Zack-Tay"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":107,"author":{"gitId":"Zack-Tay"},"content":" Task t2 \u003d list.get(Integer.parseInt(split[1]) - 1);","lastModifiedDate":"2024-01-25"},{"lineNumber":108,"author":{"gitId":"Zack-Tay"},"content":" System.out.println(\"OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2024-01-25"},{"lineNumber":109,"author":{"gitId":"Zack-Tay"},"content":" t2.setUndone();","lastModifiedDate":"2024-01-25"},{"lineNumber":110,"author":{"gitId":"Zack-Tay"},"content":" System.out.println(\" \" + t2.printTask(t2.getType(), t2.getDone(), t2.getTask()));","lastModifiedDate":"2024-01-25"},{"lineNumber":111,"author":{"gitId":"Zack-Tay"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":112,"author":{"gitId":"Zack-Tay"},"content":" String single \u003d list.size() \u003c\u003d 1 ? \"task\" : \"tasks\";","lastModifiedDate":"2024-01-25"},{"lineNumber":113,"author":{"gitId":"Zack-Tay"},"content":" System.out.println(\"You only have \" + list.size() + \" \" + single + \" currently. Type \\\"list\\\" to view all your current \" + single);","lastModifiedDate":"2024-01-25"},{"lineNumber":114,"author":{"gitId":"Zack-Tay"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":115,"author":{"gitId":"Zack-Tay"},"content":" System.out.println(line);","lastModifiedDate":"2024-01-25"},{"lineNumber":116,"author":{"gitId":"Zack-Tay"},"content":" break;","lastModifiedDate":"2024-01-25"},{"lineNumber":117,"author":{"gitId":"Zack-Tay"},"content":" case \"delete\":","lastModifiedDate":"2024-01-25"},{"lineNumber":118,"author":{"gitId":"Zack-Tay"},"content":" if (split.length \u003c\u003d 1) {","lastModifiedDate":"2024-01-25"},{"lineNumber":119,"author":{"gitId":"Zack-Tay"},"content":" listOfCommands();","lastModifiedDate":"2024-01-25"},{"lineNumber":120,"author":{"gitId":"Zack-Tay"},"content":" break;","lastModifiedDate":"2024-01-25"},{"lineNumber":121,"author":{"gitId":"Zack-Tay"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":122,"author":{"gitId":"Zack-Tay"},"content":" String single \u003d list.size() \u003c\u003d 1 ? \"task\" : \"tasks\";","lastModifiedDate":"2024-01-25"},{"lineNumber":123,"author":{"gitId":"Zack-Tay"},"content":" System.out.println(line);","lastModifiedDate":"2024-01-25"},{"lineNumber":124,"author":{"gitId":"Zack-Tay"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":125,"author":{"gitId":"Zack-Tay"},"content":" Task t2 \u003d list.get(Integer.parseInt(split[1]) - 1);","lastModifiedDate":"2024-01-25"},{"lineNumber":126,"author":{"gitId":"Zack-Tay"},"content":" System.out.println(\"Noted. I\u0027ve removed this task:\");","lastModifiedDate":"2024-01-25"},{"lineNumber":127,"author":{"gitId":"Zack-Tay"},"content":" list.remove(Integer.parseInt(split[1]) - 1);","lastModifiedDate":"2024-01-25"},{"lineNumber":128,"author":{"gitId":"Zack-Tay"},"content":" System.out.println(\" \" + t2.printTask(t2.getType(), t2.getDone(), t2.getTask()));","lastModifiedDate":"2024-01-25"},{"lineNumber":129,"author":{"gitId":"Zack-Tay"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":130,"author":{"gitId":"Zack-Tay"},"content":" System.out.println(\"You only have \" + list.size() + \" \" + single + \" currently. Type \\\"list\\\" to view all your current \" + single);","lastModifiedDate":"2024-01-25"},{"lineNumber":131,"author":{"gitId":"Zack-Tay"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":132,"author":{"gitId":"Zack-Tay"},"content":" System.out.println(\"Now you have \" + list.size() + \" \" + single + \" in the list.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":133,"author":{"gitId":"Zack-Tay"},"content":" System.out.println(line);","lastModifiedDate":"2024-01-25"},{"lineNumber":134,"author":{"gitId":"Zack-Tay"},"content":" break;","lastModifiedDate":"2024-01-25"},{"lineNumber":135,"author":{"gitId":"Zack-Tay"},"content":" case \"bye\":","lastModifiedDate":"2024-01-25"},{"lineNumber":136,"author":{"gitId":"Zack-Tay"},"content":" System.out.println(line);","lastModifiedDate":"2024-01-25"},{"lineNumber":137,"author":{"gitId":"Zack-Tay"},"content":" System.out.println(\"Bye. Hope to see you again soon!\");","lastModifiedDate":"2024-01-24"},{"lineNumber":138,"author":{"gitId":"Zack-Tay"},"content":" System.out.println(line);","lastModifiedDate":"2024-01-25"},{"lineNumber":139,"author":{"gitId":"Zack-Tay"},"content":" loop \u003d false;","lastModifiedDate":"2024-01-25"},{"lineNumber":140,"author":{"gitId":"Zack-Tay"},"content":" break;","lastModifiedDate":"2024-01-25"},{"lineNumber":141,"author":{"gitId":"Zack-Tay"},"content":" case \"\":","lastModifiedDate":"2024-01-25"},{"lineNumber":142,"author":{"gitId":"Zack-Tay"},"content":" System.out.println(line);","lastModifiedDate":"2024-01-25"},{"lineNumber":143,"author":{"gitId":"Zack-Tay"},"content":" listOfCommands();","lastModifiedDate":"2024-01-25"},{"lineNumber":144,"author":{"gitId":"Zack-Tay"},"content":" System.out.println(line);","lastModifiedDate":"2024-01-25"},{"lineNumber":145,"author":{"gitId":"Zack-Tay"},"content":" break;","lastModifiedDate":"2024-01-25"},{"lineNumber":146,"author":{"gitId":"Zack-Tay"},"content":" case \"list\":","lastModifiedDate":"2024-01-25"},{"lineNumber":147,"author":{"gitId":"Zack-Tay"},"content":" System.out.println(line);","lastModifiedDate":"2024-01-25"},{"lineNumber":148,"author":{"gitId":"Zack-Tay"},"content":" System.out.println(\"Here are the tasks in your list:\");","lastModifiedDate":"2024-01-25"},{"lineNumber":149,"author":{"gitId":"Zack-Tay"},"content":" if (list.size() \u003e 0) {","lastModifiedDate":"2024-01-25"},{"lineNumber":150,"author":{"gitId":"Zack-Tay"},"content":" Task.printList(list);","lastModifiedDate":"2024-01-25"},{"lineNumber":151,"author":{"gitId":"Zack-Tay"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":152,"author":{"gitId":"Zack-Tay"},"content":" System.out.println(line);","lastModifiedDate":"2024-01-25"},{"lineNumber":153,"author":{"gitId":"Zack-Tay"},"content":" break;","lastModifiedDate":"2024-01-25"},{"lineNumber":154,"author":{"gitId":"Zack-Tay"},"content":" case \"todo\":","lastModifiedDate":"2024-01-25"},{"lineNumber":155,"author":{"gitId":"Zack-Tay"},"content":" case \"event\":","lastModifiedDate":"2024-01-25"},{"lineNumber":156,"author":{"gitId":"Zack-Tay"},"content":" case \"deadline\":","lastModifiedDate":"2024-01-25"},{"lineNumber":157,"author":{"gitId":"Zack-Tay"},"content":" if (split.length \u003c\u003d 1) {","lastModifiedDate":"2024-01-25"},{"lineNumber":158,"author":{"gitId":"Zack-Tay"},"content":" listOfCommands();","lastModifiedDate":"2024-01-25"},{"lineNumber":159,"author":{"gitId":"Zack-Tay"},"content":" break;","lastModifiedDate":"2024-01-25"},{"lineNumber":160,"author":{"gitId":"Zack-Tay"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":161,"author":{"gitId":"Zack-Tay"},"content":" System.out.println(line);","lastModifiedDate":"2024-01-25"},{"lineNumber":162,"author":{"gitId":"Zack-Tay"},"content":" System.out.println(\"Got it. I\u0027ve added this task: \");","lastModifiedDate":"2024-01-25"},{"lineNumber":163,"author":{"gitId":"Zack-Tay"},"content":" String res \u003d \"\";","lastModifiedDate":"2024-01-25"},{"lineNumber":164,"author":{"gitId":"Zack-Tay"},"content":" switch (first) {","lastModifiedDate":"2024-01-25"},{"lineNumber":165,"author":{"gitId":"Zack-Tay"},"content":" case \"todo\":","lastModifiedDate":"2024-01-25"},{"lineNumber":166,"author":{"gitId":"Zack-Tay"},"content":" res \u003d \"T\";","lastModifiedDate":"2024-01-25"},{"lineNumber":167,"author":{"gitId":"Zack-Tay"},"content":" break;","lastModifiedDate":"2024-01-25"},{"lineNumber":168,"author":{"gitId":"Zack-Tay"},"content":" case \"event\":","lastModifiedDate":"2024-01-25"},{"lineNumber":169,"author":{"gitId":"Zack-Tay"},"content":" res \u003d \"E\";","lastModifiedDate":"2024-01-25"},{"lineNumber":170,"author":{"gitId":"Zack-Tay"},"content":" break;","lastModifiedDate":"2024-01-25"},{"lineNumber":171,"author":{"gitId":"Zack-Tay"},"content":" case \"deadline\":","lastModifiedDate":"2024-01-25"},{"lineNumber":172,"author":{"gitId":"Zack-Tay"},"content":" res \u003d \"D\";","lastModifiedDate":"2024-01-25"},{"lineNumber":173,"author":{"gitId":"Zack-Tay"},"content":" break;","lastModifiedDate":"2024-01-25"},{"lineNumber":174,"author":{"gitId":"Zack-Tay"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":175,"author":{"gitId":"Zack-Tay"},"content":" int startInd1 \u003d s.indexOf(\"/by\");","lastModifiedDate":"2024-01-25"},{"lineNumber":176,"author":{"gitId":"Zack-Tay"},"content":" int startInd2 \u003d s.indexOf(\"/from\");","lastModifiedDate":"2024-01-25"},{"lineNumber":177,"author":{"gitId":"Zack-Tay"},"content":" Task newTask \u003d null;","lastModifiedDate":"2024-01-25"},{"lineNumber":178,"author":{"gitId":"Zack-Tay"},"content":" String ss \u003d s.substring(first.length() + 1);","lastModifiedDate":"2024-01-25"},{"lineNumber":179,"author":{"gitId":"Zack-Tay"},"content":" if (startInd2 \u003d\u003d -1 \u0026\u0026 startInd1 \u003d\u003d -1) {","lastModifiedDate":"2024-01-25"},{"lineNumber":180,"author":{"gitId":"Zack-Tay"},"content":" newTask \u003d new Task(ss, res, false);","lastModifiedDate":"2024-01-25"},{"lineNumber":181,"author":{"gitId":"Zack-Tay"},"content":" } else {","lastModifiedDate":"2024-01-25"},{"lineNumber":182,"author":{"gitId":"Zack-Tay"},"content":" if (startInd1 !\u003d -1) {","lastModifiedDate":"2024-01-25"},{"lineNumber":183,"author":{"gitId":"Zack-Tay"},"content":" // dl \u003d deadline","lastModifiedDate":"2024-01-25"},{"lineNumber":184,"author":{"gitId":"Zack-Tay"},"content":" String dl \u003d s.substring(first.length() + 1, startInd1) + \"(\" + s.substring(startInd1 + 1, startInd1 + 3) + \": \" + s.substring(startInd1 + 4) + \")\";","lastModifiedDate":"2024-01-25"},{"lineNumber":185,"author":{"gitId":"Zack-Tay"},"content":" newTask \u003d new Task(dl, res, false);","lastModifiedDate":"2024-01-25"},{"lineNumber":186,"author":{"gitId":"Zack-Tay"},"content":" } else {","lastModifiedDate":"2024-01-25"},{"lineNumber":187,"author":{"gitId":"Zack-Tay"},"content":" // e \u003d event","lastModifiedDate":"2024-01-25"},{"lineNumber":188,"author":{"gitId":"Zack-Tay"},"content":" int startTo \u003d s.indexOf(\"/to\");","lastModifiedDate":"2024-01-25"},{"lineNumber":189,"author":{"gitId":"Zack-Tay"},"content":" String e \u003d s.substring(first.length() + 1, startInd2) +","lastModifiedDate":"2024-01-25"},{"lineNumber":190,"author":{"gitId":"Zack-Tay"},"content":" \"(\" + s.substring(startInd2 + 1, startInd2 + 5) + \": \" + s.substring(startInd2 + 6, startTo) + s.substring(startTo + 1, startTo + 3) +","lastModifiedDate":"2024-01-25"},{"lineNumber":191,"author":{"gitId":"Zack-Tay"},"content":" \": \" + s.substring(startTo + 4) + \")\";","lastModifiedDate":"2024-01-25"},{"lineNumber":192,"author":{"gitId":"Zack-Tay"},"content":" newTask \u003d new Task(e, res, false);","lastModifiedDate":"2024-01-25"},{"lineNumber":193,"author":{"gitId":"Zack-Tay"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":194,"author":{"gitId":"Zack-Tay"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":195,"author":{"gitId":"Zack-Tay"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":196,"author":{"gitId":"Zack-Tay"},"content":" list.add(newTask);","lastModifiedDate":"2024-01-25"},{"lineNumber":197,"author":{"gitId":"Zack-Tay"},"content":" String t \u003d newTask.printTask(res, false, newTask.getTask());","lastModifiedDate":"2024-01-25"},{"lineNumber":198,"author":{"gitId":"Zack-Tay"},"content":" // String task \u003d \" [\" + res + \"]\" + \"[] \" + s.substring(first.length() + 1, s.length());","lastModifiedDate":"2024-01-25"},{"lineNumber":199,"author":{"gitId":"Zack-Tay"},"content":" System.out.println(\" \" + t);","lastModifiedDate":"2024-01-25"},{"lineNumber":200,"author":{"gitId":"Zack-Tay"},"content":" String single1 \u003d list.size() \u003d\u003d 1 ? \"task\" : \"tasks\";","lastModifiedDate":"2024-01-25"},{"lineNumber":201,"author":{"gitId":"Zack-Tay"},"content":" System.out.println(\"Now you have \" + list.size() + \" \" + single1 + \" in the list.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":202,"author":{"gitId":"Zack-Tay"},"content":" System.out.println(line);","lastModifiedDate":"2024-01-25"},{"lineNumber":203,"author":{"gitId":"Zack-Tay"},"content":" break;","lastModifiedDate":"2024-01-25"},{"lineNumber":204,"author":{"gitId":"Zack-Tay"},"content":" default:","lastModifiedDate":"2024-01-25"},{"lineNumber":205,"author":{"gitId":"Zack-Tay"},"content":" listOfCommands();","lastModifiedDate":"2024-01-25"},{"lineNumber":206,"author":{"gitId":"Zack-Tay"},"content":" break;","lastModifiedDate":"2024-01-25"},{"lineNumber":207,"author":{"gitId":"Zack-Tay"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":208,"author":{"gitId":"Zack-Tay"},"content":" // TODO","lastModifiedDate":"2024-01-28"},{"lineNumber":209,"author":{"gitId":"Zack-Tay"},"content":" updateFile(list);","lastModifiedDate":"2024-01-28"},{"lineNumber":210,"author":{"gitId":"Zack-Tay"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":211,"author":{"gitId":"Zack-Tay"},"content":" in.close();","lastModifiedDate":"2024-01-25"},{"lineNumber":212,"author":{"gitId":"Zack-Tay"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":213,"author":{"gitId":"Zack-Tay"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"Zack-Tay":213}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Zack-Tay"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"Zack-Tay"},"content":"public class Task {","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"Zack-Tay"},"content":" private String task, type;","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"Zack-Tay"},"content":" private boolean isDone;","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"Zack-Tay"},"content":" public Task(String task, String type, boolean isDone) {","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"Zack-Tay"},"content":" this.task \u003d task;","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"Zack-Tay"},"content":" this.type \u003d type;","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"Zack-Tay"},"content":" this.isDone \u003d isDone;","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"Zack-Tay"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"Zack-Tay"},"content":" public void setDone() {","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"Zack-Tay"},"content":" this.isDone \u003d true;","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"Zack-Tay"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"Zack-Tay"},"content":" public void setUndone() {","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"Zack-Tay"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"Zack-Tay"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"Zack-Tay"},"content":" public boolean getDone() {","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"Zack-Tay"},"content":" return this.isDone;","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"Zack-Tay"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"Zack-Tay"},"content":" public String getType() {","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"Zack-Tay"},"content":" return this.type;","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"Zack-Tay"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"Zack-Tay"},"content":" public String getTask() {","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"Zack-Tay"},"content":" return this.task;","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"Zack-Tay"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"Zack-Tay"},"content":" public static void printList(ArrayList\u003cTask\u003e list) {","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"Zack-Tay"},"content":" for (int i \u003d 1; i \u003c\u003d list.size(); i++) {","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"Zack-Tay"},"content":" Task currtask \u003d list.get(i-1);","lastModifiedDate":"2024-01-25"},{"lineNumber":28,"author":{"gitId":"Zack-Tay"},"content":" String s \u003d i + \". \" + \"[\" + currtask.type + \"][\" + (currtask.isDone ? \"X\" : \"\") + \"]\" + \" \" + currtask.task;","lastModifiedDate":"2024-01-25"},{"lineNumber":29,"author":{"gitId":"Zack-Tay"},"content":" System.out.println(\" \" + s);","lastModifiedDate":"2024-01-25"},{"lineNumber":30,"author":{"gitId":"Zack-Tay"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":31,"author":{"gitId":"Zack-Tay"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":32,"author":{"gitId":"Zack-Tay"},"content":" public String printTask(String type, boolean isDone, String task) {","lastModifiedDate":"2024-01-25"},{"lineNumber":33,"author":{"gitId":"Zack-Tay"},"content":" return \"[\" + type + \"][\" + (isDone ? \"X\" : \"\") + \"]\" + \" \" + task;","lastModifiedDate":"2024-01-25"},{"lineNumber":34,"author":{"gitId":"Zack-Tay"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":35,"author":{"gitId":"Zack-Tay"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":36,"author":{"gitId":"Zack-Tay"},"content":" public void deleteTask(int index, ArrayList\u003cTask\u003e list) {","lastModifiedDate":"2024-01-25"},{"lineNumber":37,"author":{"gitId":"Zack-Tay"},"content":" Task task \u003d list.get(index-1);","lastModifiedDate":"2024-01-25"},{"lineNumber":38,"author":{"gitId":"Zack-Tay"},"content":" list.remove(task);","lastModifiedDate":"2024-01-25"},{"lineNumber":39,"author":{"gitId":"Zack-Tay"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":40,"author":{"gitId":"Zack-Tay"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"Zack-Tay":40}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"Zack-Tay"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"Zack-Tay"},"content":"event Badminton /from Tues 8pm /to 9pm","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"Zack-Tay"},"content":"todo Laundry","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"Zack-Tay"},"content":"deadline Homework /by Sunday","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"Zack-Tay"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"Zack-Tay"},"content":"deadline Homework /by Sunday","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"Zack-Tay"},"content":"deadline Essay /by Sunday","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"Zack-Tay"},"content":"list","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"Zack-Tay"},"content":"mark 1","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"Zack-Tay"},"content":"mark 3","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"Zack-Tay"},"content":"list","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"Zack-Tay"},"content":"unmark 1","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"Zack-Tay"},"content":"list","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"Zack-Tay":13}},{"path":"text-ui-test/runtest.bat","fileType":"bat","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@ECHO OFF","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"REM create bin directory if it doesn\u0027t exist","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"if not exist ..\\bin mkdir ..\\bin","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"REM delete output from previous run","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"if exist ACTUAL.TXT del ACTUAL.TXT","lastModifiedDate":"2020-08-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"REM compile the code into the bin folder","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"javac -cp ..\\src\\main\\java -Xlint:none -d ..\\bin ..\\src\\main\\java\\*.java","lastModifiedDate":"2020-08-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"IF ERRORLEVEL 1 (","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":" echo ********** BUILD FAILURE **********","lastModifiedDate":"2020-05-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":" exit /b 1","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":")","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"REM no error here, errorlevel \u003d\u003d 0","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"REM run the program, feed commands from input.txt file and redirect the output to the ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"Zack-Tay"},"content":"java -classpath ..\\bin Fredricksen \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"REM compare the output to the expected output","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"FC ACTUAL.TXT EXPECTED.TXT","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"Zack-Tay":1,"-":20}}] +[{"path":"src/main/java/Fredricksen.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Zack-Tay"},"content":"import java.io.*;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"Zack-Tay"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"Zack-Tay"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"Zack-Tay"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"Zack-Tay"},"content":"import java.util.Date;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"Zack-Tay"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"Zack-Tay"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"Zack-Tay"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"Zack-Tay"},"content":"import java.time.temporal.ChronoUnit;","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"Zack-Tay"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"Zack-Tay"},"content":"public class Fredricksen {","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"Zack-Tay"},"content":" public static void greeting(String line) {","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"Zack-Tay"},"content":" System.out.println(line);","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"Zack-Tay"},"content":" System.out.println(\"Hello! I\u0027m Fredricksen\");","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"Zack-Tay"},"content":" System.out.println(\"What can I do for you?\");","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"Zack-Tay"},"content":" System.out.println(line);","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"Zack-Tay"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"Zack-Tay"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"Zack-Tay"},"content":" public static void updateFile(ArrayList\u003cTask\u003e list) {","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"Zack-Tay"},"content":" String filename \u003d \"./data/Fredricksen.txt\";","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"Zack-Tay"},"content":" File file \u003d new File(filename);","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"Zack-Tay"},"content":" try (BufferedWriter bw \u003d new BufferedWriter(new FileWriter(filename))) {","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"Zack-Tay"},"content":" if (list.size() \u003d\u003d 0) {","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"Zack-Tay"},"content":" file.delete();","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"Zack-Tay"},"content":" return;","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"Zack-Tay"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"Zack-Tay"},"content":" for (int i \u003d 0; i \u003c list.size(); i++) {","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"Zack-Tay"},"content":" Task task \u003d list.get(i);","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"Zack-Tay"},"content":" String type \u003d task.getType();","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"Zack-Tay"},"content":" String content \u003d task.getTask();","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"Zack-Tay"},"content":" boolean isDone \u003d task.getDone();","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"Zack-Tay"},"content":" bw.write(\"type: \" + type + \" isDone: \" + isDone + \" content: \" + content);","lastModifiedDate":"2024-01-28"},{"lineNumber":33,"author":{"gitId":"Zack-Tay"},"content":" bw.newLine();","lastModifiedDate":"2024-01-28"},{"lineNumber":34,"author":{"gitId":"Zack-Tay"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":35,"author":{"gitId":"Zack-Tay"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"Zack-Tay"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"Zack-Tay"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":38,"author":{"gitId":"Zack-Tay"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":39,"author":{"gitId":"Zack-Tay"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":40,"author":{"gitId":"Zack-Tay"},"content":" public static ArrayList\u003cTask\u003e loadList() {","lastModifiedDate":"2024-01-28"},{"lineNumber":41,"author":{"gitId":"Zack-Tay"},"content":" ArrayList\u003cTask\u003e list \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-28"},{"lineNumber":42,"author":{"gitId":"Zack-Tay"},"content":" String filename \u003d \"./data/Fredricksen.txt\";","lastModifiedDate":"2024-01-28"},{"lineNumber":43,"author":{"gitId":"Zack-Tay"},"content":" File file \u003d new File(filename);","lastModifiedDate":"2024-01-28"},{"lineNumber":44,"author":{"gitId":"Zack-Tay"},"content":" try (BufferedReader br \u003d new BufferedReader(new FileReader(filename))) {","lastModifiedDate":"2024-01-28"},{"lineNumber":45,"author":{"gitId":"Zack-Tay"},"content":" String next;","lastModifiedDate":"2024-01-28"},{"lineNumber":46,"author":{"gitId":"Zack-Tay"},"content":" while ((next \u003d br.readLine()) !\u003d null) {","lastModifiedDate":"2024-01-28"},{"lineNumber":47,"author":{"gitId":"Zack-Tay"},"content":" int type \u003d next.indexOf(\"type: \");","lastModifiedDate":"2024-01-28"},{"lineNumber":48,"author":{"gitId":"Zack-Tay"},"content":" int isDone \u003d next.indexOf(\"isDone: \");","lastModifiedDate":"2024-01-28"},{"lineNumber":49,"author":{"gitId":"Zack-Tay"},"content":" int content \u003d next.indexOf(\"content: \");","lastModifiedDate":"2024-01-28"},{"lineNumber":50,"author":{"gitId":"Zack-Tay"},"content":" String done \u003d next.substring(isDone + 8, isDone + 9);","lastModifiedDate":"2024-01-28"},{"lineNumber":51,"author":{"gitId":"Zack-Tay"},"content":" Task newTask \u003d new Task(next.substring(content + 9), next.substring(type + 6, type + 7), done.equals(\"t\"));","lastModifiedDate":"2024-01-28"},{"lineNumber":52,"author":{"gitId":"Zack-Tay"},"content":" list.add(newTask);","lastModifiedDate":"2024-01-28"},{"lineNumber":53,"author":{"gitId":"Zack-Tay"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":54,"author":{"gitId":"Zack-Tay"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":55,"author":{"gitId":"Zack-Tay"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-28"},{"lineNumber":56,"author":{"gitId":"Zack-Tay"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":57,"author":{"gitId":"Zack-Tay"},"content":" // read file, if have content, add to list, else leave list as empty.","lastModifiedDate":"2024-01-28"},{"lineNumber":58,"author":{"gitId":"Zack-Tay"},"content":" return list;","lastModifiedDate":"2024-01-28"},{"lineNumber":59,"author":{"gitId":"Zack-Tay"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":60,"author":{"gitId":"Zack-Tay"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":61,"author":{"gitId":"Zack-Tay"},"content":" public static void listOfCommands() {","lastModifiedDate":"2024-01-25"},{"lineNumber":62,"author":{"gitId":"Zack-Tay"},"content":" System.out.println(\"You might have entered an invalid command!\");","lastModifiedDate":"2024-01-25"},{"lineNumber":63,"author":{"gitId":"Zack-Tay"},"content":" System.out.println(\"Below are the available commands and formats to follow!\");","lastModifiedDate":"2024-01-25"},{"lineNumber":64,"author":{"gitId":"Zack-Tay"},"content":" System.out.println(\"1. To view all your current task: list\");","lastModifiedDate":"2024-01-25"},{"lineNumber":65,"author":{"gitId":"Zack-Tay"},"content":" System.out.println(\"2. To add new task:\");","lastModifiedDate":"2024-01-25"},{"lineNumber":66,"author":{"gitId":"Zack-Tay"},"content":" System.out.println(\" a. todos: todo \u003ctask\u003e\");","lastModifiedDate":"2024-01-25"},{"lineNumber":67,"author":{"gitId":"Zack-Tay"},"content":" System.out.println(\" b. deadlines: deadline \u003ctask\u003e /by \u003cdeadline\u003e\");","lastModifiedDate":"2024-01-25"},{"lineNumber":68,"author":{"gitId":"Zack-Tay"},"content":" System.out.println(\" c. event: Event \u003cevent\u003e /from \u003cstartdate, starttiming\u003e /to \u003cenddate, endtiming\u003e\");","lastModifiedDate":"2024-01-30"},{"lineNumber":69,"author":{"gitId":"Zack-Tay"},"content":" System.out.println(\"3. To delete a task: delete \u003ctask number\u003e\");","lastModifiedDate":"2024-01-25"},{"lineNumber":70,"author":{"gitId":"Zack-Tay"},"content":" System.out.println(\"4. To mark task as completed: mark \u003ctask number\u003e\");","lastModifiedDate":"2024-01-25"},{"lineNumber":71,"author":{"gitId":"Zack-Tay"},"content":" System.out.println(\"5. To unmark completed task: unmark \u003ctask number\u003e\");","lastModifiedDate":"2024-01-25"},{"lineNumber":72,"author":{"gitId":"Zack-Tay"},"content":" System.out.println(\"6. To exit program: bye\");","lastModifiedDate":"2024-01-25"},{"lineNumber":73,"author":{"gitId":"Zack-Tay"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":74,"author":{"gitId":"Zack-Tay"},"content":" public enum commands {","lastModifiedDate":"2024-01-25"},{"lineNumber":75,"author":{"gitId":"Zack-Tay"},"content":" list, todo, deadline, event, mark, unmark, delete, bye","lastModifiedDate":"2024-01-25"},{"lineNumber":76,"author":{"gitId":"Zack-Tay"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":77,"author":{"gitId":"Zack-Tay"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-01-25"},{"lineNumber":78,"author":{"gitId":"Zack-Tay"},"content":" ArrayList\u003cTask\u003e list \u003d loadList();","lastModifiedDate":"2024-01-28"},{"lineNumber":79,"author":{"gitId":"Zack-Tay"},"content":" Scanner in \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-25"},{"lineNumber":80,"author":{"gitId":"Zack-Tay"},"content":" // ArrayList\u003cTask\u003e list \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-28"},{"lineNumber":81,"author":{"gitId":"Zack-Tay"},"content":" String line \u003d \"____________________________________________________________\";","lastModifiedDate":"2024-01-25"},{"lineNumber":82,"author":{"gitId":"Zack-Tay"},"content":" greeting(line);","lastModifiedDate":"2024-01-25"},{"lineNumber":83,"author":{"gitId":"Zack-Tay"},"content":" boolean loop \u003d true;","lastModifiedDate":"2024-01-25"},{"lineNumber":84,"author":{"gitId":"Zack-Tay"},"content":" while (loop) {","lastModifiedDate":"2024-01-25"},{"lineNumber":85,"author":{"gitId":"Zack-Tay"},"content":" System.out.println(\"\");","lastModifiedDate":"2024-01-25"},{"lineNumber":86,"author":{"gitId":"Zack-Tay"},"content":" String s \u003d in.nextLine();","lastModifiedDate":"2024-01-25"},{"lineNumber":87,"author":{"gitId":"Zack-Tay"},"content":" String[] split \u003d s.split(\" \");","lastModifiedDate":"2024-01-25"},{"lineNumber":88,"author":{"gitId":"Zack-Tay"},"content":" String first \u003d split[0].toLowerCase();","lastModifiedDate":"2024-01-25"},{"lineNumber":89,"author":{"gitId":"Zack-Tay"},"content":" switch (first) {","lastModifiedDate":"2024-01-25"},{"lineNumber":90,"author":{"gitId":"Zack-Tay"},"content":" case \"mark\":","lastModifiedDate":"2024-01-25"},{"lineNumber":91,"author":{"gitId":"Zack-Tay"},"content":" System.out.println(line);","lastModifiedDate":"2024-01-25"},{"lineNumber":92,"author":{"gitId":"Zack-Tay"},"content":" if (split.length \u003c\u003d 1) {","lastModifiedDate":"2024-01-25"},{"lineNumber":93,"author":{"gitId":"Zack-Tay"},"content":" listOfCommands();","lastModifiedDate":"2024-01-25"},{"lineNumber":94,"author":{"gitId":"Zack-Tay"},"content":" break;","lastModifiedDate":"2024-01-25"},{"lineNumber":95,"author":{"gitId":"Zack-Tay"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":96,"author":{"gitId":"Zack-Tay"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":97,"author":{"gitId":"Zack-Tay"},"content":" Task t1 \u003d list.get(Integer.parseInt(split[1]) - 1);","lastModifiedDate":"2024-01-25"},{"lineNumber":98,"author":{"gitId":"Zack-Tay"},"content":" System.out.println(\"Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2024-01-25"},{"lineNumber":99,"author":{"gitId":"Zack-Tay"},"content":" t1.setDone();","lastModifiedDate":"2024-01-25"},{"lineNumber":100,"author":{"gitId":"Zack-Tay"},"content":" System.out.println(\" \" + t1.printTask(t1.getType(), t1.getDone(), t1.getTask()));","lastModifiedDate":"2024-01-25"},{"lineNumber":101,"author":{"gitId":"Zack-Tay"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":102,"author":{"gitId":"Zack-Tay"},"content":" String single \u003d list.size() \u003c\u003d 1 ? \"task\" : \"tasks\";","lastModifiedDate":"2024-01-25"},{"lineNumber":103,"author":{"gitId":"Zack-Tay"},"content":" System.out.println(\"You only have \" + list.size() + \" \" + single + \" currently. Type \\\"list\\\" to view all your current \" + single);","lastModifiedDate":"2024-01-25"},{"lineNumber":104,"author":{"gitId":"Zack-Tay"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":105,"author":{"gitId":"Zack-Tay"},"content":" System.out.println(line);","lastModifiedDate":"2024-01-25"},{"lineNumber":106,"author":{"gitId":"Zack-Tay"},"content":" break;","lastModifiedDate":"2024-01-25"},{"lineNumber":107,"author":{"gitId":"Zack-Tay"},"content":" case \"unmark\":","lastModifiedDate":"2024-01-25"},{"lineNumber":108,"author":{"gitId":"Zack-Tay"},"content":" System.out.println(line);","lastModifiedDate":"2024-01-25"},{"lineNumber":109,"author":{"gitId":"Zack-Tay"},"content":" if (split.length \u003c\u003d 1) {","lastModifiedDate":"2024-01-25"},{"lineNumber":110,"author":{"gitId":"Zack-Tay"},"content":" listOfCommands();","lastModifiedDate":"2024-01-25"},{"lineNumber":111,"author":{"gitId":"Zack-Tay"},"content":" break;","lastModifiedDate":"2024-01-25"},{"lineNumber":112,"author":{"gitId":"Zack-Tay"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":113,"author":{"gitId":"Zack-Tay"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":114,"author":{"gitId":"Zack-Tay"},"content":" Task t2 \u003d list.get(Integer.parseInt(split[1]) - 1);","lastModifiedDate":"2024-01-25"},{"lineNumber":115,"author":{"gitId":"Zack-Tay"},"content":" System.out.println(\"OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2024-01-25"},{"lineNumber":116,"author":{"gitId":"Zack-Tay"},"content":" t2.setUndone();","lastModifiedDate":"2024-01-25"},{"lineNumber":117,"author":{"gitId":"Zack-Tay"},"content":" System.out.println(\" \" + t2.printTask(t2.getType(), t2.getDone(), t2.getTask()));","lastModifiedDate":"2024-01-25"},{"lineNumber":118,"author":{"gitId":"Zack-Tay"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":119,"author":{"gitId":"Zack-Tay"},"content":" String single \u003d list.size() \u003c\u003d 1 ? \"task\" : \"tasks\";","lastModifiedDate":"2024-01-25"},{"lineNumber":120,"author":{"gitId":"Zack-Tay"},"content":" System.out.println(\"You only have \" + list.size() + \" \" + single + \" currently. Type \\\"list\\\" to view all your current \" + single);","lastModifiedDate":"2024-01-25"},{"lineNumber":121,"author":{"gitId":"Zack-Tay"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":122,"author":{"gitId":"Zack-Tay"},"content":" System.out.println(line);","lastModifiedDate":"2024-01-25"},{"lineNumber":123,"author":{"gitId":"Zack-Tay"},"content":" break;","lastModifiedDate":"2024-01-25"},{"lineNumber":124,"author":{"gitId":"Zack-Tay"},"content":" case \"delete\":","lastModifiedDate":"2024-01-25"},{"lineNumber":125,"author":{"gitId":"Zack-Tay"},"content":" if (split.length \u003c\u003d 1) {","lastModifiedDate":"2024-01-25"},{"lineNumber":126,"author":{"gitId":"Zack-Tay"},"content":" listOfCommands();","lastModifiedDate":"2024-01-25"},{"lineNumber":127,"author":{"gitId":"Zack-Tay"},"content":" break;","lastModifiedDate":"2024-01-25"},{"lineNumber":128,"author":{"gitId":"Zack-Tay"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":129,"author":{"gitId":"Zack-Tay"},"content":" String single \u003d list.size() \u003c\u003d 1 ? \"task\" : \"tasks\";","lastModifiedDate":"2024-01-25"},{"lineNumber":130,"author":{"gitId":"Zack-Tay"},"content":" System.out.println(line);","lastModifiedDate":"2024-01-25"},{"lineNumber":131,"author":{"gitId":"Zack-Tay"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":132,"author":{"gitId":"Zack-Tay"},"content":" Task t2 \u003d list.get(Integer.parseInt(split[1]) - 1);","lastModifiedDate":"2024-01-25"},{"lineNumber":133,"author":{"gitId":"Zack-Tay"},"content":" System.out.println(\"Noted. I\u0027ve removed this task:\");","lastModifiedDate":"2024-01-25"},{"lineNumber":134,"author":{"gitId":"Zack-Tay"},"content":" list.remove(Integer.parseInt(split[1]) - 1);","lastModifiedDate":"2024-01-25"},{"lineNumber":135,"author":{"gitId":"Zack-Tay"},"content":" System.out.println(\" \" + t2.printTask(t2.getType(), t2.getDone(), t2.getTask()));","lastModifiedDate":"2024-01-25"},{"lineNumber":136,"author":{"gitId":"Zack-Tay"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":137,"author":{"gitId":"Zack-Tay"},"content":" System.out.println(\"You only have \" + list.size() + \" \" + single + \" currently. Type \\\"list\\\" to view all your current \" + single);","lastModifiedDate":"2024-01-25"},{"lineNumber":138,"author":{"gitId":"Zack-Tay"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":139,"author":{"gitId":"Zack-Tay"},"content":" System.out.println(\"Now you have \" + list.size() + \" \" + single + \" in the list.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":140,"author":{"gitId":"Zack-Tay"},"content":" System.out.println(line);","lastModifiedDate":"2024-01-25"},{"lineNumber":141,"author":{"gitId":"Zack-Tay"},"content":" break;","lastModifiedDate":"2024-01-25"},{"lineNumber":142,"author":{"gitId":"Zack-Tay"},"content":" case \"bye\":","lastModifiedDate":"2024-01-25"},{"lineNumber":143,"author":{"gitId":"Zack-Tay"},"content":" System.out.println(line);","lastModifiedDate":"2024-01-25"},{"lineNumber":144,"author":{"gitId":"Zack-Tay"},"content":" System.out.println(\"Bye. Hope to see you again soon!\");","lastModifiedDate":"2024-01-24"},{"lineNumber":145,"author":{"gitId":"Zack-Tay"},"content":" System.out.println(line);","lastModifiedDate":"2024-01-25"},{"lineNumber":146,"author":{"gitId":"Zack-Tay"},"content":" loop \u003d false;","lastModifiedDate":"2024-01-25"},{"lineNumber":147,"author":{"gitId":"Zack-Tay"},"content":" break;","lastModifiedDate":"2024-01-25"},{"lineNumber":148,"author":{"gitId":"Zack-Tay"},"content":" case \"\":","lastModifiedDate":"2024-01-25"},{"lineNumber":149,"author":{"gitId":"Zack-Tay"},"content":" System.out.println(line);","lastModifiedDate":"2024-01-25"},{"lineNumber":150,"author":{"gitId":"Zack-Tay"},"content":" listOfCommands();","lastModifiedDate":"2024-01-25"},{"lineNumber":151,"author":{"gitId":"Zack-Tay"},"content":" System.out.println(line);","lastModifiedDate":"2024-01-25"},{"lineNumber":152,"author":{"gitId":"Zack-Tay"},"content":" break;","lastModifiedDate":"2024-01-25"},{"lineNumber":153,"author":{"gitId":"Zack-Tay"},"content":" case \"list\":","lastModifiedDate":"2024-01-25"},{"lineNumber":154,"author":{"gitId":"Zack-Tay"},"content":" System.out.println(line);","lastModifiedDate":"2024-01-25"},{"lineNumber":155,"author":{"gitId":"Zack-Tay"},"content":" System.out.println(\"Here are the tasks in your list:\");","lastModifiedDate":"2024-01-25"},{"lineNumber":156,"author":{"gitId":"Zack-Tay"},"content":" if (list.size() \u003e 0) {","lastModifiedDate":"2024-01-25"},{"lineNumber":157,"author":{"gitId":"Zack-Tay"},"content":" Task.printList(list);","lastModifiedDate":"2024-01-25"},{"lineNumber":158,"author":{"gitId":"Zack-Tay"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":159,"author":{"gitId":"Zack-Tay"},"content":" System.out.println(line);","lastModifiedDate":"2024-01-25"},{"lineNumber":160,"author":{"gitId":"Zack-Tay"},"content":" break;","lastModifiedDate":"2024-01-25"},{"lineNumber":161,"author":{"gitId":"Zack-Tay"},"content":" case \"todo\":","lastModifiedDate":"2024-01-25"},{"lineNumber":162,"author":{"gitId":"Zack-Tay"},"content":" case \"event\":","lastModifiedDate":"2024-01-25"},{"lineNumber":163,"author":{"gitId":"Zack-Tay"},"content":" case \"deadline\":","lastModifiedDate":"2024-01-25"},{"lineNumber":164,"author":{"gitId":"Zack-Tay"},"content":" if (split.length \u003c\u003d 1) {","lastModifiedDate":"2024-01-25"},{"lineNumber":165,"author":{"gitId":"Zack-Tay"},"content":" listOfCommands();","lastModifiedDate":"2024-01-25"},{"lineNumber":166,"author":{"gitId":"Zack-Tay"},"content":" break;","lastModifiedDate":"2024-01-25"},{"lineNumber":167,"author":{"gitId":"Zack-Tay"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":168,"author":{"gitId":"Zack-Tay"},"content":" System.out.println(line);","lastModifiedDate":"2024-01-25"},{"lineNumber":169,"author":{"gitId":"Zack-Tay"},"content":" System.out.println(\"Got it. I\u0027ve added this task: \");","lastModifiedDate":"2024-01-25"},{"lineNumber":170,"author":{"gitId":"Zack-Tay"},"content":" String res \u003d \"\";","lastModifiedDate":"2024-01-25"},{"lineNumber":171,"author":{"gitId":"Zack-Tay"},"content":" switch (first) {","lastModifiedDate":"2024-01-25"},{"lineNumber":172,"author":{"gitId":"Zack-Tay"},"content":" case \"todo\":","lastModifiedDate":"2024-01-25"},{"lineNumber":173,"author":{"gitId":"Zack-Tay"},"content":" res \u003d \"T\";","lastModifiedDate":"2024-01-25"},{"lineNumber":174,"author":{"gitId":"Zack-Tay"},"content":" break;","lastModifiedDate":"2024-01-25"},{"lineNumber":175,"author":{"gitId":"Zack-Tay"},"content":" case \"event\":","lastModifiedDate":"2024-01-25"},{"lineNumber":176,"author":{"gitId":"Zack-Tay"},"content":" res \u003d \"E\";","lastModifiedDate":"2024-01-25"},{"lineNumber":177,"author":{"gitId":"Zack-Tay"},"content":" break;","lastModifiedDate":"2024-01-25"},{"lineNumber":178,"author":{"gitId":"Zack-Tay"},"content":" case \"deadline\":","lastModifiedDate":"2024-01-25"},{"lineNumber":179,"author":{"gitId":"Zack-Tay"},"content":" res \u003d \"D\";","lastModifiedDate":"2024-01-25"},{"lineNumber":180,"author":{"gitId":"Zack-Tay"},"content":" break;","lastModifiedDate":"2024-01-25"},{"lineNumber":181,"author":{"gitId":"Zack-Tay"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":182,"author":{"gitId":"Zack-Tay"},"content":" int startInd1 \u003d s.indexOf(\"/by\");","lastModifiedDate":"2024-01-25"},{"lineNumber":183,"author":{"gitId":"Zack-Tay"},"content":" int startInd2 \u003d s.indexOf(\"/from\");","lastModifiedDate":"2024-01-25"},{"lineNumber":184,"author":{"gitId":"Zack-Tay"},"content":" Task newTask \u003d null;","lastModifiedDate":"2024-01-25"},{"lineNumber":185,"author":{"gitId":"Zack-Tay"},"content":" String ss \u003d s.substring(first.length() + 1);","lastModifiedDate":"2024-01-25"},{"lineNumber":186,"author":{"gitId":"Zack-Tay"},"content":" if (startInd2 \u003d\u003d -1 \u0026\u0026 startInd1 \u003d\u003d -1) {","lastModifiedDate":"2024-01-25"},{"lineNumber":187,"author":{"gitId":"Zack-Tay"},"content":" newTask \u003d new Task(ss, res, false);","lastModifiedDate":"2024-01-25"},{"lineNumber":188,"author":{"gitId":"Zack-Tay"},"content":" } else {","lastModifiedDate":"2024-01-25"},{"lineNumber":189,"author":{"gitId":"Zack-Tay"},"content":" DateTimeFormatter[] formats \u003d new DateTimeFormatter[] {","lastModifiedDate":"2024-01-30"},{"lineNumber":190,"author":{"gitId":"Zack-Tay"},"content":" DateTimeFormatter.ofPattern(\"d/M/yyyy HHmm\"),","lastModifiedDate":"2024-01-30"},{"lineNumber":191,"author":{"gitId":"Zack-Tay"},"content":" DateTimeFormatter.ofPattern(\"d/M/yyyy\"),","lastModifiedDate":"2024-01-30"},{"lineNumber":192,"author":{"gitId":"Zack-Tay"},"content":" DateTimeFormatter.ofPattern(\"d-M-yyyy\"),","lastModifiedDate":"2024-01-30"},{"lineNumber":193,"author":{"gitId":"Zack-Tay"},"content":" };","lastModifiedDate":"2024-01-30"},{"lineNumber":194,"author":{"gitId":"Zack-Tay"},"content":" if (startInd1 !\u003d -1) {","lastModifiedDate":"2024-01-25"},{"lineNumber":195,"author":{"gitId":"Zack-Tay"},"content":" // dl \u003d deadline","lastModifiedDate":"2024-01-25"},{"lineNumber":196,"author":{"gitId":"Zack-Tay"},"content":" String spl1 \u003d s.substring(startInd1 + 4);","lastModifiedDate":"2024-01-30"},{"lineNumber":197,"author":{"gitId":"Zack-Tay"},"content":" LocalDateTime deadline \u003d null;","lastModifiedDate":"2024-01-30"},{"lineNumber":198,"author":{"gitId":"Zack-Tay"},"content":" for (DateTimeFormatter format : formats) {","lastModifiedDate":"2024-01-30"},{"lineNumber":199,"author":{"gitId":"Zack-Tay"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":200,"author":{"gitId":"Zack-Tay"},"content":" deadline \u003d LocalDateTime.parse(spl1, format);","lastModifiedDate":"2024-01-30"},{"lineNumber":201,"author":{"gitId":"Zack-Tay"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":202,"author":{"gitId":"Zack-Tay"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":203,"author":{"gitId":"Zack-Tay"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":204,"author":{"gitId":"Zack-Tay"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":205,"author":{"gitId":"Zack-Tay"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":206,"author":{"gitId":"Zack-Tay"},"content":" /** if (deadline !\u003d null) {","lastModifiedDate":"2024-01-30"},{"lineNumber":207,"author":{"gitId":"Zack-Tay"},"content":" System.out.println(deadline.format(DateTimeFormatter.ofPattern(\"MMM d yyyy, hh:mm a\")));","lastModifiedDate":"2024-01-30"},{"lineNumber":208,"author":{"gitId":"Zack-Tay"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":209,"author":{"gitId":"Zack-Tay"},"content":" System.out.println(\"Failed to parse date\");","lastModifiedDate":"2024-01-30"},{"lineNumber":210,"author":{"gitId":"Zack-Tay"},"content":" } **/","lastModifiedDate":"2024-01-30"},{"lineNumber":211,"author":{"gitId":"Zack-Tay"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":212,"author":{"gitId":"Zack-Tay"},"content":" String dl \u003d s.substring(first.length() + 1, startInd1) + \"(\" + s.substring(startInd1 + 1, startInd1 + 3) + \": \" + deadline.format(DateTimeFormatter.ofPattern(\"MMM d yyyy, hh:mm a\")) + \")\";","lastModifiedDate":"2024-01-30"},{"lineNumber":213,"author":{"gitId":"Zack-Tay"},"content":" newTask \u003d new Task(dl, res, false, deadline);","lastModifiedDate":"2024-01-30"},{"lineNumber":214,"author":{"gitId":"Zack-Tay"},"content":" } else {","lastModifiedDate":"2024-01-25"},{"lineNumber":215,"author":{"gitId":"Zack-Tay"},"content":" // e \u003d event","lastModifiedDate":"2024-01-25"},{"lineNumber":216,"author":{"gitId":"Zack-Tay"},"content":" int startTo \u003d s.indexOf(\"/to\");","lastModifiedDate":"2024-01-25"},{"lineNumber":217,"author":{"gitId":"Zack-Tay"},"content":" String from \u003d s.substring(startInd2 + 6, startTo - 1);","lastModifiedDate":"2024-01-30"},{"lineNumber":218,"author":{"gitId":"Zack-Tay"},"content":" String to \u003d s.substring(startTo + 4);","lastModifiedDate":"2024-01-30"},{"lineNumber":219,"author":{"gitId":"Zack-Tay"},"content":" LocalDateTime duefrom \u003d null;","lastModifiedDate":"2024-01-30"},{"lineNumber":220,"author":{"gitId":"Zack-Tay"},"content":" LocalDateTime dueto \u003d null;","lastModifiedDate":"2024-01-30"},{"lineNumber":221,"author":{"gitId":"Zack-Tay"},"content":" for (DateTimeFormatter format : formats) {","lastModifiedDate":"2024-01-30"},{"lineNumber":222,"author":{"gitId":"Zack-Tay"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":223,"author":{"gitId":"Zack-Tay"},"content":" duefrom \u003d LocalDateTime.parse(from, format);","lastModifiedDate":"2024-01-30"},{"lineNumber":224,"author":{"gitId":"Zack-Tay"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":225,"author":{"gitId":"Zack-Tay"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":226,"author":{"gitId":"Zack-Tay"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":227,"author":{"gitId":"Zack-Tay"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":228,"author":{"gitId":"Zack-Tay"},"content":" dueto \u003d LocalDateTime.parse(to, format);","lastModifiedDate":"2024-01-30"},{"lineNumber":229,"author":{"gitId":"Zack-Tay"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":230,"author":{"gitId":"Zack-Tay"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":231,"author":{"gitId":"Zack-Tay"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":232,"author":{"gitId":"Zack-Tay"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":233,"author":{"gitId":"Zack-Tay"},"content":" String e \u003d \"\";","lastModifiedDate":"2024-01-30"},{"lineNumber":234,"author":{"gitId":"Zack-Tay"},"content":" if (dueto !\u003d null \u0026\u0026 duefrom !\u003d null) {","lastModifiedDate":"2024-01-30"},{"lineNumber":235,"author":{"gitId":"Zack-Tay"},"content":" e \u003d s.substring(first.length() + 1, startInd2) +","lastModifiedDate":"2024-01-30"},{"lineNumber":236,"author":{"gitId":"Zack-Tay"},"content":" \"(\" + s.substring(startInd2 + 1, startInd2 + 5) + \": \" + duefrom.format(DateTimeFormatter.ofPattern(\"MMM d yyyy, hh:mm a\")) + \" \" + s.substring(startTo + 1, startTo + 3) +","lastModifiedDate":"2024-01-30"},{"lineNumber":237,"author":{"gitId":"Zack-Tay"},"content":" \": \" + dueto.format(DateTimeFormatter.ofPattern(\"MMM d yyyy, hh:mm a\")) + \")\";","lastModifiedDate":"2024-01-30"},{"lineNumber":238,"author":{"gitId":"Zack-Tay"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":239,"author":{"gitId":"Zack-Tay"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":240,"author":{"gitId":"Zack-Tay"},"content":" newTask \u003d new Task(e, res, false, duefrom, dueto);","lastModifiedDate":"2024-01-30"},{"lineNumber":241,"author":{"gitId":"Zack-Tay"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":242,"author":{"gitId":"Zack-Tay"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":243,"author":{"gitId":"Zack-Tay"},"content":" list.add(newTask);","lastModifiedDate":"2024-01-25"},{"lineNumber":244,"author":{"gitId":"Zack-Tay"},"content":" String t \u003d newTask.printTask(res, false, newTask.getTask());","lastModifiedDate":"2024-01-25"},{"lineNumber":245,"author":{"gitId":"Zack-Tay"},"content":" // String task \u003d \" [\" + res + \"]\" + \"[] \" + s.substring(first.length() + 1, s.length());","lastModifiedDate":"2024-01-25"},{"lineNumber":246,"author":{"gitId":"Zack-Tay"},"content":" System.out.println(\" \" + t);","lastModifiedDate":"2024-01-25"},{"lineNumber":247,"author":{"gitId":"Zack-Tay"},"content":" String single1 \u003d list.size() \u003d\u003d 1 ? \"task\" : \"tasks\";","lastModifiedDate":"2024-01-25"},{"lineNumber":248,"author":{"gitId":"Zack-Tay"},"content":" System.out.println(\"Now you have \" + list.size() + \" \" + single1 + \" in the list.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":249,"author":{"gitId":"Zack-Tay"},"content":" System.out.println(line);","lastModifiedDate":"2024-01-25"},{"lineNumber":250,"author":{"gitId":"Zack-Tay"},"content":" break;","lastModifiedDate":"2024-01-25"},{"lineNumber":251,"author":{"gitId":"Zack-Tay"},"content":" default:","lastModifiedDate":"2024-01-25"},{"lineNumber":252,"author":{"gitId":"Zack-Tay"},"content":" listOfCommands();","lastModifiedDate":"2024-01-25"},{"lineNumber":253,"author":{"gitId":"Zack-Tay"},"content":" break;","lastModifiedDate":"2024-01-25"},{"lineNumber":254,"author":{"gitId":"Zack-Tay"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":255,"author":{"gitId":"Zack-Tay"},"content":" // TODO","lastModifiedDate":"2024-01-28"},{"lineNumber":256,"author":{"gitId":"Zack-Tay"},"content":" updateFile(list);","lastModifiedDate":"2024-01-28"},{"lineNumber":257,"author":{"gitId":"Zack-Tay"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":258,"author":{"gitId":"Zack-Tay"},"content":" in.close();","lastModifiedDate":"2024-01-25"},{"lineNumber":259,"author":{"gitId":"Zack-Tay"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":260,"author":{"gitId":"Zack-Tay"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"Zack-Tay":260}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Zack-Tay"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Zack-Tay"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"Zack-Tay"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"Zack-Tay"},"content":"public class Task {","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"Zack-Tay"},"content":" private String task, type;","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"Zack-Tay"},"content":" private boolean isDone;","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"Zack-Tay"},"content":" private LocalDateTime deadline, to;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"Zack-Tay"},"content":" private LocalDateTime deadline2;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"Zack-Tay"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"Zack-Tay"},"content":" public Task(String task, String type, boolean isDone) {","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"Zack-Tay"},"content":" this.task \u003d task;","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"Zack-Tay"},"content":" this.type \u003d type;","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"Zack-Tay"},"content":" this.isDone \u003d isDone;","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"Zack-Tay"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"Zack-Tay"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"Zack-Tay"},"content":" public Task(String task, String type, boolean isDone, LocalDateTime deadline, LocalDateTime to) {","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"Zack-Tay"},"content":" this.task \u003d task;","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"Zack-Tay"},"content":" this.type \u003d type;","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"Zack-Tay"},"content":" this.isDone \u003d isDone;","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"Zack-Tay"},"content":" this.deadline \u003d deadline;","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"Zack-Tay"},"content":" this.to \u003d to;","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"Zack-Tay"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"Zack-Tay"},"content":" public Task(String task, String type, boolean isDone, LocalDateTime deadline2) {","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"Zack-Tay"},"content":" this.task \u003d task;","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"Zack-Tay"},"content":" this.type \u003d type;","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"Zack-Tay"},"content":" this.isDone \u003d isDone;","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"Zack-Tay"},"content":" this.deadline2 \u003d deadline2;","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"Zack-Tay"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"Zack-Tay"},"content":" public void setDone() {","lastModifiedDate":"2024-01-25"},{"lineNumber":30,"author":{"gitId":"Zack-Tay"},"content":" this.isDone \u003d true;","lastModifiedDate":"2024-01-25"},{"lineNumber":31,"author":{"gitId":"Zack-Tay"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":32,"author":{"gitId":"Zack-Tay"},"content":" public void setUndone() {","lastModifiedDate":"2024-01-25"},{"lineNumber":33,"author":{"gitId":"Zack-Tay"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-25"},{"lineNumber":34,"author":{"gitId":"Zack-Tay"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":35,"author":{"gitId":"Zack-Tay"},"content":" public boolean getDone() {","lastModifiedDate":"2024-01-25"},{"lineNumber":36,"author":{"gitId":"Zack-Tay"},"content":" return this.isDone;","lastModifiedDate":"2024-01-25"},{"lineNumber":37,"author":{"gitId":"Zack-Tay"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":38,"author":{"gitId":"Zack-Tay"},"content":" public String getType() {","lastModifiedDate":"2024-01-25"},{"lineNumber":39,"author":{"gitId":"Zack-Tay"},"content":" return this.type;","lastModifiedDate":"2024-01-25"},{"lineNumber":40,"author":{"gitId":"Zack-Tay"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":41,"author":{"gitId":"Zack-Tay"},"content":" public String getTask() {","lastModifiedDate":"2024-01-25"},{"lineNumber":42,"author":{"gitId":"Zack-Tay"},"content":" return this.task;","lastModifiedDate":"2024-01-25"},{"lineNumber":43,"author":{"gitId":"Zack-Tay"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":44,"author":{"gitId":"Zack-Tay"},"content":" public static void printList(ArrayList\u003cTask\u003e list) {","lastModifiedDate":"2024-01-25"},{"lineNumber":45,"author":{"gitId":"Zack-Tay"},"content":" for (int i \u003d 1; i \u003c\u003d list.size(); i++) {","lastModifiedDate":"2024-01-25"},{"lineNumber":46,"author":{"gitId":"Zack-Tay"},"content":" Task currtask \u003d list.get(i-1);","lastModifiedDate":"2024-01-25"},{"lineNumber":47,"author":{"gitId":"Zack-Tay"},"content":" String s \u003d i + \". \" + \"[\" + currtask.type + \"][\" + (currtask.isDone ? \"X\" : \"\") + \"]\" + \" \" + currtask.task;","lastModifiedDate":"2024-01-25"},{"lineNumber":48,"author":{"gitId":"Zack-Tay"},"content":" System.out.println(\" \" + s);","lastModifiedDate":"2024-01-25"},{"lineNumber":49,"author":{"gitId":"Zack-Tay"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":50,"author":{"gitId":"Zack-Tay"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":51,"author":{"gitId":"Zack-Tay"},"content":" public String printTask(String type, boolean isDone, String task) {","lastModifiedDate":"2024-01-25"},{"lineNumber":52,"author":{"gitId":"Zack-Tay"},"content":" return \"[\" + type + \"][\" + (isDone ? \"X\" : \"\") + \"]\" + \" \" + task;","lastModifiedDate":"2024-01-25"},{"lineNumber":53,"author":{"gitId":"Zack-Tay"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":54,"author":{"gitId":"Zack-Tay"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":55,"author":{"gitId":"Zack-Tay"},"content":" public void deleteTask(int index, ArrayList\u003cTask\u003e list) {","lastModifiedDate":"2024-01-25"},{"lineNumber":56,"author":{"gitId":"Zack-Tay"},"content":" Task task \u003d list.get(index-1);","lastModifiedDate":"2024-01-25"},{"lineNumber":57,"author":{"gitId":"Zack-Tay"},"content":" list.remove(task);","lastModifiedDate":"2024-01-25"},{"lineNumber":58,"author":{"gitId":"Zack-Tay"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":59,"author":{"gitId":"Zack-Tay"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"Zack-Tay":59}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"Zack-Tay"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"Zack-Tay"},"content":"event Badminton /from Tues 8pm /to 9pm","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"Zack-Tay"},"content":"todo Laundry","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"Zack-Tay"},"content":"deadline Homework /by Sunday","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"Zack-Tay"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"Zack-Tay"},"content":"deadline Homework /by Sunday","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"Zack-Tay"},"content":"deadline Essay /by Sunday","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"Zack-Tay"},"content":"list","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"Zack-Tay"},"content":"mark 1","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"Zack-Tay"},"content":"mark 3","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"Zack-Tay"},"content":"list","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"Zack-Tay"},"content":"unmark 1","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"Zack-Tay"},"content":"list","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"Zack-Tay":13}},{"path":"text-ui-test/runtest.bat","fileType":"bat","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@ECHO OFF","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"REM create bin directory if it doesn\u0027t exist","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"if not exist ..\\bin mkdir ..\\bin","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"REM delete output from previous run","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"if exist ACTUAL.TXT del ACTUAL.TXT","lastModifiedDate":"2020-08-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"REM compile the code into the bin folder","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"javac -cp ..\\src\\main\\java -Xlint:none -d ..\\bin ..\\src\\main\\java\\*.java","lastModifiedDate":"2020-08-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"IF ERRORLEVEL 1 (","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":" echo ********** BUILD FAILURE **********","lastModifiedDate":"2020-05-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":" exit /b 1","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":")","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"REM no error here, errorlevel \u003d\u003d 0","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"REM run the program, feed commands from input.txt file and redirect the output to the ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"Zack-Tay"},"content":"java -classpath ..\\bin Fredricksen \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"REM compare the output to the expected output","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"FC ACTUAL.TXT EXPECTED.TXT","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"Zack-Tay":1,"-":20}}] diff --git a/Zack-Tay_ip_master/commits.json b/Zack-Tay_ip_master/commits.json index 5d784ef0..75829c4a 100644 --- a/Zack-Tay_ip_master/commits.json +++ b/Zack-Tay_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"Zack-Tay":[{"date":"2024-01-24","commitResults":[{"hash":"f2f92fb071d4a1086d55aa95ebb90c1b32d04313","isMergeCommit":false,"messageTitle":"Add Fredricksen.java and completed level-0","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":10}}}]},{"date":"2024-01-25","commitResults":[{"hash":"7606a0b556e10f587755aa4e510f5efb26d2a6e2","isMergeCommit":false,"messageTitle":"Add echo and bye commands to Fredricksen.java and completed Level-1","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":2}}},{"hash":"188ab8896ce04d0d41868302e08864aadd159c2f","isMergeCommit":false,"messageTitle":"add add task to list feature to Fredricksen.java","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":30,"deletions":10}}},{"hash":"c2ce2e7dea168475c6047854dfbac07c238a407f","isMergeCommit":false,"messageTitle":"add mark as done for task in Fredicksen.java Level-3","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":23,"deletions":4}}},{"hash":"6b0252807ec955ea626c4d963bde1ecbae90b303","isMergeCommit":false,"messageTitle":"created new Task.java to encapsulate each Task and completed Level-4","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":113,"deletions":33}}},{"hash":"242d024e9944ae85d553b171a9ac107b708f023b","isMergeCommit":false,"messageTitle":"add testcases for Fredricksen.java and completed A-TextUiTesting","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":13,"deletions":0},"java":{"insertions":1,"deletions":0},"bat":{"insertions":1,"deletions":1}}},{"hash":"3cf667372c423356ebdb9f6ab9fbad48fcf48278","isMergeCommit":false,"messageTitle":"add error message for some invalid inputs to Fredricksen.java and completed Level-5","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":48,"deletions":10}}},{"hash":"7043f833a694e1f095844248fa6396a84f94863a","isMergeCommit":false,"messageTitle":"add delete task feature to Fredricksen.java and completed Leve;-6","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":29,"deletions":5}}},{"hash":"b44f793de433812b93cbbc35e3983fb4962f8c55","isMergeCommit":false,"messageTitle":"add enum for list of commands for Fredricksen.java and Completed A-enums","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":1}}}]},{"date":"2024-01-28","commitResults":[{"hash":"80c5eceba7a775584fe7958ff4ba176a10ec4674","isMergeCommit":false,"messageTitle":"Add loadlist and updateList and completed Level-7","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":48,"deletions":2}}},{"hash":"6fdf442c10d3a478735f1e125a401e661e917390","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"Zack-Tay":{"java":253,"md":0,"fxml":0,"sh":0,"bat":1,"gradle":0,"txt":13}},"authorContributionVariance":{"Zack-Tay":10288.959},"authorDisplayNameMap":{"Zack-Tay":"CS2103T-T09-4 TAY .. KAI"}} +{"authorDailyContributionsMap":{"Zack-Tay":[{"date":"2024-01-24","commitResults":[{"hash":"f2f92fb071d4a1086d55aa95ebb90c1b32d04313","isMergeCommit":false,"messageTitle":"Add Fredricksen.java and completed level-0","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":10}}}]},{"date":"2024-01-25","commitResults":[{"hash":"7606a0b556e10f587755aa4e510f5efb26d2a6e2","isMergeCommit":false,"messageTitle":"Add echo and bye commands to Fredricksen.java and completed Level-1","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":2}}},{"hash":"188ab8896ce04d0d41868302e08864aadd159c2f","isMergeCommit":false,"messageTitle":"add add task to list feature to Fredricksen.java","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":30,"deletions":10}}},{"hash":"c2ce2e7dea168475c6047854dfbac07c238a407f","isMergeCommit":false,"messageTitle":"add mark as done for task in Fredicksen.java Level-3","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":23,"deletions":4}}},{"hash":"6b0252807ec955ea626c4d963bde1ecbae90b303","isMergeCommit":false,"messageTitle":"created new Task.java to encapsulate each Task and completed Level-4","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":113,"deletions":33}}},{"hash":"242d024e9944ae85d553b171a9ac107b708f023b","isMergeCommit":false,"messageTitle":"add testcases for Fredricksen.java and completed A-TextUiTesting","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":13,"deletions":0},"java":{"insertions":1,"deletions":0},"bat":{"insertions":1,"deletions":1}}},{"hash":"3cf667372c423356ebdb9f6ab9fbad48fcf48278","isMergeCommit":false,"messageTitle":"add error message for some invalid inputs to Fredricksen.java and completed Level-5","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":48,"deletions":10}}},{"hash":"7043f833a694e1f095844248fa6396a84f94863a","isMergeCommit":false,"messageTitle":"add delete task feature to Fredricksen.java and completed Leve;-6","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":29,"deletions":5}}},{"hash":"b44f793de433812b93cbbc35e3983fb4962f8c55","isMergeCommit":false,"messageTitle":"add enum for list of commands for Fredricksen.java and Completed A-enums","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":1}}}]},{"date":"2024-01-28","commitResults":[{"hash":"80c5eceba7a775584fe7958ff4ba176a10ec4674","isMergeCommit":false,"messageTitle":"Add loadlist and updateList and completed Level-7","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":48,"deletions":2}}},{"hash":"6fdf442c10d3a478735f1e125a401e661e917390","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}}]},{"date":"2024-01-30","commitResults":[{"hash":"e109dd679c34e672dcd62620f3eb6dc44472edca","isMergeCommit":false,"messageTitle":"Add DateTime feature and Completed Level-8","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":0},"java":{"insertions":73,"deletions":7}}},{"hash":"09100332d06b432f11f0a406c065c77364722439","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"Zack-Tay":{"java":319,"md":0,"fxml":0,"sh":0,"bat":1,"gradle":0,"txt":13}},"authorContributionVariance":{"Zack-Tay":8841.0},"authorDisplayNameMap":{"Zack-Tay":"CS2103T-T09-4 TAY .. KAI"}} diff --git a/appleraincoat_ip_master/authorship.json b/appleraincoat_ip_master/authorship.json index 0d1e80ad..56c5d85c 100644 --- a/appleraincoat_ip_master/authorship.json +++ b/appleraincoat_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"data/Ypxmm.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"appleraincoat"},"content":"T | 0 | eat","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"appleraincoat"},"content":"D | 0 | level 9 hmwk | 03-02-2024 2359","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"appleraincoat"},"content":"E | 0 | bros dinner | 29-01-2024 1900 to 29-01-2024 2000","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"appleraincoat":3}},{"path":"src/main/java/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"appleraincoat"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"appleraincoat"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"appleraincoat"},"content":"public enum Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"appleraincoat"},"content":" LIST {","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"appleraincoat"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"appleraincoat"},"content":" public void execute(TaskList tasklist, Ui ui, Storage storage, ArrayList\u003cString\u003e parsed) {","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"appleraincoat"},"content":" ui.printList(tasklist.tasks);","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"appleraincoat"},"content":" },","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"appleraincoat"},"content":" MARK {","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"appleraincoat"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"appleraincoat"},"content":" public void execute(TaskList tasklist, Ui ui, Storage storage, ArrayList\u003cString\u003e parsed) throws YpxmmException {","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"appleraincoat"},"content":" int index \u003d Integer.parseInt(parsed.get(1));","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"appleraincoat"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"appleraincoat"},"content":" Task task \u003d tasklist.tasks.get(index - 1);","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"appleraincoat"},"content":" task.markTask();","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"appleraincoat"},"content":" storage.reWrite(tasklist);","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"appleraincoat"},"content":" ui.markMessage(task);","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"appleraincoat"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"appleraincoat"},"content":" throw new YpxmmException(\"Eh u seh isit? Now your list got \" +","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"appleraincoat"},"content":" (tasklist.tasks.isEmpty() ? \"no tasks to mark.\" : tasklist.tasks.size() +","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"appleraincoat"},"content":" \" tasks, enter any number from 1 to \" + tasklist.tasks.size()));","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"appleraincoat"},"content":" } catch (YpxmmException y) {","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"appleraincoat"},"content":" System.out.println(y.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"appleraincoat"},"content":" },","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"appleraincoat"},"content":" UNMARK {","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"appleraincoat"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"appleraincoat"},"content":" public void execute(TaskList tasklist, Ui ui, Storage storage, ArrayList\u003cString\u003e parsed) throws YpxmmException {","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"appleraincoat"},"content":" int index \u003d Integer.parseInt(parsed.get(1));","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"appleraincoat"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"appleraincoat"},"content":" Task task \u003d tasklist.tasks.get(index - 1);","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"appleraincoat"},"content":" task.unmarkTask();","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"appleraincoat"},"content":" storage.reWrite(tasklist);","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"appleraincoat"},"content":" ui.unmarkMessage(task);","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"appleraincoat"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"appleraincoat"},"content":" throw new YpxmmException(\"Eh u seh isit? Now your list got \" +","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"appleraincoat"},"content":" (tasklist.tasks.isEmpty() ? \"no tasks to unmark.\" : tasklist.tasks.size() +","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"appleraincoat"},"content":" \" tasks, enter any number from 1 to \" + tasklist.tasks.size()));","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"appleraincoat"},"content":" } catch (YpxmmException y) {","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"appleraincoat"},"content":" System.out.println(y.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"appleraincoat"},"content":" },","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"appleraincoat"},"content":" TODO {","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"appleraincoat"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"appleraincoat"},"content":" public void execute(TaskList tasklist, Ui ui, Storage storage, ArrayList\u003cString\u003e parsed) {","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"appleraincoat"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"appleraincoat"},"content":" Task task \u003d new ToDo(parsed.get(1));","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"appleraincoat"},"content":" tasklist.addTask(parsed, task);","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"appleraincoat"},"content":" storage.appendToFile(task.toWrite());","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"appleraincoat"},"content":" ui.addTaskMessage(task, tasklist);","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"appleraincoat"},"content":" } catch (YpxmmException y) {","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"appleraincoat"},"content":" System.out.println(y.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":59,"author":{"gitId":"appleraincoat"},"content":" },","lastModifiedDate":"2024-01-30"},{"lineNumber":60,"author":{"gitId":"appleraincoat"},"content":" DEADLINE {","lastModifiedDate":"2024-01-30"},{"lineNumber":61,"author":{"gitId":"appleraincoat"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":62,"author":{"gitId":"appleraincoat"},"content":" public void execute(TaskList tasklist, Ui ui, Storage storage, ArrayList\u003cString\u003e parsed) {","lastModifiedDate":"2024-01-30"},{"lineNumber":63,"author":{"gitId":"appleraincoat"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":64,"author":{"gitId":"appleraincoat"},"content":" Task task \u003d new Deadline(parsed.get(1).trim(), parsed.get(2).trim());","lastModifiedDate":"2024-01-30"},{"lineNumber":65,"author":{"gitId":"appleraincoat"},"content":" tasklist.addTask(parsed, task);","lastModifiedDate":"2024-01-30"},{"lineNumber":66,"author":{"gitId":"appleraincoat"},"content":" storage.appendToFile(task.toWrite());","lastModifiedDate":"2024-01-30"},{"lineNumber":67,"author":{"gitId":"appleraincoat"},"content":" ui.addTaskMessage(task, tasklist);","lastModifiedDate":"2024-01-30"},{"lineNumber":68,"author":{"gitId":"appleraincoat"},"content":" } catch (YpxmmException y) {","lastModifiedDate":"2024-01-30"},{"lineNumber":69,"author":{"gitId":"appleraincoat"},"content":" System.out.println(y.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":70,"author":{"gitId":"appleraincoat"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":71,"author":{"gitId":"appleraincoat"},"content":" System.out.println(\"Brother, follow format can or not? Enter dates in dd-mm-yyyy HHmm (24-08-2024 1800)\");","lastModifiedDate":"2024-01-30"},{"lineNumber":72,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":73,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":74,"author":{"gitId":"appleraincoat"},"content":" },","lastModifiedDate":"2024-01-30"},{"lineNumber":75,"author":{"gitId":"appleraincoat"},"content":" EVENT {","lastModifiedDate":"2024-01-30"},{"lineNumber":76,"author":{"gitId":"appleraincoat"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":77,"author":{"gitId":"appleraincoat"},"content":" public void execute(TaskList tasklist, Ui ui, Storage storage, ArrayList\u003cString\u003e parsed) {","lastModifiedDate":"2024-01-30"},{"lineNumber":78,"author":{"gitId":"appleraincoat"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":79,"author":{"gitId":"appleraincoat"},"content":" Task task \u003d new Event(parsed.get(1).trim(), parsed.get(2).trim(), parsed.get(3).trim());","lastModifiedDate":"2024-01-30"},{"lineNumber":80,"author":{"gitId":"appleraincoat"},"content":" tasklist.addTask(parsed, task);","lastModifiedDate":"2024-01-30"},{"lineNumber":81,"author":{"gitId":"appleraincoat"},"content":" storage.appendToFile(task.toWrite());","lastModifiedDate":"2024-01-30"},{"lineNumber":82,"author":{"gitId":"appleraincoat"},"content":" ui.addTaskMessage(task, tasklist);","lastModifiedDate":"2024-01-30"},{"lineNumber":83,"author":{"gitId":"appleraincoat"},"content":" } catch (YpxmmException y) {","lastModifiedDate":"2024-01-30"},{"lineNumber":84,"author":{"gitId":"appleraincoat"},"content":" System.out.println(y.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":85,"author":{"gitId":"appleraincoat"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":86,"author":{"gitId":"appleraincoat"},"content":" System.out.println(\"Brother, follow format can or not? Enter dates in dd-mm-yyyy HHmm (24-08-2024 1800)\");","lastModifiedDate":"2024-01-30"},{"lineNumber":87,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":88,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":89,"author":{"gitId":"appleraincoat"},"content":" },","lastModifiedDate":"2024-01-30"},{"lineNumber":90,"author":{"gitId":"appleraincoat"},"content":" GETCOMMANDS {","lastModifiedDate":"2024-01-30"},{"lineNumber":91,"author":{"gitId":"appleraincoat"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":92,"author":{"gitId":"appleraincoat"},"content":" public void execute(TaskList tasklist, Ui ui, Storage storage, ArrayList\u003cString\u003e parsed) {","lastModifiedDate":"2024-01-30"},{"lineNumber":93,"author":{"gitId":"appleraincoat"},"content":" ui.getCommands();","lastModifiedDate":"2024-01-30"},{"lineNumber":94,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":95,"author":{"gitId":"appleraincoat"},"content":" },","lastModifiedDate":"2024-01-30"},{"lineNumber":96,"author":{"gitId":"appleraincoat"},"content":" DELETE {","lastModifiedDate":"2024-01-30"},{"lineNumber":97,"author":{"gitId":"appleraincoat"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":98,"author":{"gitId":"appleraincoat"},"content":" public void execute(TaskList tasklist, Ui ui, Storage storage, ArrayList\u003cString\u003e parsed) throws YpxmmException {","lastModifiedDate":"2024-01-30"},{"lineNumber":99,"author":{"gitId":"appleraincoat"},"content":" int index \u003d Integer.parseInt(parsed.get(1));","lastModifiedDate":"2024-01-30"},{"lineNumber":100,"author":{"gitId":"appleraincoat"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":101,"author":{"gitId":"appleraincoat"},"content":" Task task \u003d tasklist.tasks.get(index - 1);","lastModifiedDate":"2024-01-30"},{"lineNumber":102,"author":{"gitId":"appleraincoat"},"content":" tasklist.deleteTask(index);","lastModifiedDate":"2024-01-30"},{"lineNumber":103,"author":{"gitId":"appleraincoat"},"content":" storage.reWrite(tasklist);","lastModifiedDate":"2024-01-30"},{"lineNumber":104,"author":{"gitId":"appleraincoat"},"content":" ui.deleteTaskMessage(task, tasklist);","lastModifiedDate":"2024-01-30"},{"lineNumber":105,"author":{"gitId":"appleraincoat"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":106,"author":{"gitId":"appleraincoat"},"content":" throw new YpxmmException(\"Eh u seh isit? Now your list got \" +","lastModifiedDate":"2024-01-30"},{"lineNumber":107,"author":{"gitId":"appleraincoat"},"content":" (tasklist.tasks.isEmpty() ? \"no tasks to delete.\" : tasklist.tasks.size() +","lastModifiedDate":"2024-01-30"},{"lineNumber":108,"author":{"gitId":"appleraincoat"},"content":" \" tasks, enter any number from 1 to \" + tasklist.tasks.size()));","lastModifiedDate":"2024-01-30"},{"lineNumber":109,"author":{"gitId":"appleraincoat"},"content":" } catch (YpxmmException y) {","lastModifiedDate":"2024-01-30"},{"lineNumber":110,"author":{"gitId":"appleraincoat"},"content":" System.out.println(y.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":111,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":112,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":113,"author":{"gitId":"appleraincoat"},"content":" },","lastModifiedDate":"2024-01-30"},{"lineNumber":114,"author":{"gitId":"appleraincoat"},"content":" BYE {","lastModifiedDate":"2024-01-30"},{"lineNumber":115,"author":{"gitId":"appleraincoat"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":116,"author":{"gitId":"appleraincoat"},"content":" public void execute(TaskList tasklist, Ui ui, Storage storage, ArrayList\u003cString\u003e parsed) {","lastModifiedDate":"2024-01-30"},{"lineNumber":117,"author":{"gitId":"appleraincoat"},"content":" ui.sayGoodbye();","lastModifiedDate":"2024-01-30"},{"lineNumber":118,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":119,"author":{"gitId":"appleraincoat"},"content":" };","lastModifiedDate":"2024-01-30"},{"lineNumber":120,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":121,"author":{"gitId":"appleraincoat"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage, ArrayList\u003cString\u003e parsed) throws YpxmmException {","lastModifiedDate":"2024-01-30"},{"lineNumber":122,"author":{"gitId":"appleraincoat"},"content":" //should never reach here as all invalid inputs will be handled","lastModifiedDate":"2024-01-30"},{"lineNumber":123,"author":{"gitId":"appleraincoat"},"content":" //in parse method in Parser class","lastModifiedDate":"2024-01-30"},{"lineNumber":124,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":125,"author":{"gitId":"appleraincoat"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"appleraincoat":125}},{"path":"src/main/java/DateTimeParser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"appleraincoat"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"appleraincoat"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"appleraincoat"},"content":"public class DateTimeParser {","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"appleraincoat"},"content":" protected DateTimeFormatter formatter;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"appleraincoat"},"content":" public DateTimeParser() {","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"appleraincoat"},"content":" this.formatter \u003d DateTimeFormatter.ofPattern(\"dd-MM-yyyy HHmm\");","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"appleraincoat"},"content":" public LocalDateTime parseDateTime(String timeString) {","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"appleraincoat"},"content":" return LocalDateTime.parse(timeString, this.formatter);","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"appleraincoat"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"appleraincoat":13}},{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"appleraincoat"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"appleraincoat"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"appleraincoat"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"appleraincoat"},"content":" protected LocalDateTime byWhen;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"appleraincoat"},"content":" protected DateTimeParser dateTimeParser;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"appleraincoat"},"content":" public Deadline(String name, String byWhenString) {","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"appleraincoat"},"content":" super(name);","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"appleraincoat"},"content":" this.dateTimeParser \u003d new DateTimeParser();","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"appleraincoat"},"content":" this.byWhen \u003d this.dateTimeParser.parseDateTime(byWhenString);","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"appleraincoat"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"appleraincoat"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"appleraincoat"},"content":" return \"[D]\" + super.toString() + \" (by: \" + byWhen.format(DateTimeFormatter.ofPattern(\"MMM dd yyyy HHmm\")) + \")\";","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"appleraincoat"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"appleraincoat"},"content":" public String toWrite() {","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"appleraincoat"},"content":" return \"D | \" + super.toWrite() + \" | \" + byWhen.format(DateTimeFormatter.ofPattern(\"dd-MM-yyyy HHmm\"));","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"appleraincoat"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"appleraincoat":23}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"appleraincoat"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"appleraincoat"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"appleraincoat"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"appleraincoat"},"content":" protected LocalDateTime fromWhen;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"appleraincoat"},"content":" protected LocalDateTime toWhen;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"appleraincoat"},"content":" protected DateTimeParser dateTimeParser;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"appleraincoat"},"content":" public Event(String name, String fromWhenString, String toWhenString) {","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"appleraincoat"},"content":" super(name);","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"appleraincoat"},"content":" this.dateTimeParser \u003d new DateTimeParser();","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"appleraincoat"},"content":" this.fromWhen \u003d this.dateTimeParser.parseDateTime(fromWhenString);","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"appleraincoat"},"content":" this.toWhen \u003d this.dateTimeParser.parseDateTime(toWhenString);","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"appleraincoat"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"appleraincoat"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"appleraincoat"},"content":" return \"[E]\" + super.toString() + \" (from: \" + fromWhen.format(DateTimeFormatter.ofPattern(\"MMM dd yyyy HHmm\"))","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"appleraincoat"},"content":" + \" to: \" + toWhen.format(DateTimeFormatter.ofPattern(\"MMM dd yyyy HHmm\")) + \")\";","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"appleraincoat"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"appleraincoat"},"content":" public String toWrite() {","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"appleraincoat"},"content":" return \"E | \" + super.toWrite() + \" | \" + fromWhen.format(DateTimeFormatter.ofPattern(\"dd-MM-yyyy HHmm\")) +","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"appleraincoat"},"content":" \" to \" + toWhen.format(DateTimeFormatter.ofPattern(\"dd-MM-yyyy HHmm\"));","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"appleraincoat"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"appleraincoat":27}},{"path":"src/main/java/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"appleraincoat"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"appleraincoat"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"appleraincoat"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"appleraincoat"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"appleraincoat"},"content":"public class Parser {","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"appleraincoat"},"content":" public static ArrayList\u003cString\u003e parse(String input) throws YpxmmException {","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"appleraincoat"},"content":" ArrayList\u003cString\u003e parsedResult \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"appleraincoat"},"content":" String[] splitInput \u003d input.split(\" \");","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"appleraincoat"},"content":" String command \u003d splitInput[0];","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"appleraincoat"},"content":" switch (command) {","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"appleraincoat"},"content":" case \"bye\", \"list\", \"getcommands\":","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"appleraincoat"},"content":" parsedResult.add(command);","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"appleraincoat"},"content":" return parsedResult;","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"appleraincoat"},"content":" case \"mark\":","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"appleraincoat"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"appleraincoat"},"content":" int index \u003d Integer.parseInt(splitInput[1]);","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"appleraincoat"},"content":" parsedResult.add(command);","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"appleraincoat"},"content":" parsedResult.add(splitInput[1]);","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"appleraincoat"},"content":" return parsedResult;","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"appleraincoat"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"appleraincoat"},"content":" throw new YpxmmException(\"Brother, key in mark \u003cspace\u003e then a valid number\");","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"appleraincoat"},"content":" } catch (NumberFormatException n) {","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"appleraincoat"},"content":" throw new YpxmmException(\"You tell me now what task am I supposed to mark if you don\u0027t provide me with a number?\");","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"appleraincoat"},"content":" case \"unmark\":","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"appleraincoat"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"appleraincoat"},"content":" int index \u003d Integer.parseInt(splitInput[1]);","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"appleraincoat"},"content":" parsedResult.add(command);","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"appleraincoat"},"content":" parsedResult.add(splitInput[1]);","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"appleraincoat"},"content":" return parsedResult;","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"appleraincoat"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"appleraincoat"},"content":" throw new YpxmmException(\"Brother, key in unmark \u003cspace\u003e then a valid number\");","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"appleraincoat"},"content":" } catch (NumberFormatException n) {","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"appleraincoat"},"content":" throw new YpxmmException(\"You tell me now what task am I supposed to unmark if you don\u0027t provide me with a number?\");","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"appleraincoat"},"content":" case \"todo\":","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"appleraincoat"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"appleraincoat"},"content":" parsedResult.add(command);","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"appleraincoat"},"content":" String[] info \u003d input.split(\"todo \");","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"appleraincoat"},"content":" if (info[1].isBlank()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"appleraincoat"},"content":" throw new YpxmmException(\"Help la, can just tell me what is the name of your task anot?\");","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"appleraincoat"},"content":" parsedResult.add(info[1].trim());","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"appleraincoat"},"content":" return parsedResult;","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"appleraincoat"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"appleraincoat"},"content":" throw new YpxmmException(\"You trying to test my patience ah? Type \\\"get commands\\\" if u blur and dunno how to use me properly.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"appleraincoat"},"content":" case \"deadline\":","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"appleraincoat"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"appleraincoat"},"content":" parsedResult.add(command);","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"appleraincoat"},"content":" String[] info \u003d input.split(\"/\");","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"appleraincoat"},"content":" if (info[0].split(\"deadline \")[1].isBlank() || info[1].isBlank()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"appleraincoat"},"content":" throw new YpxmmException(\"Help la, can just tell me what is the name of your task anot?\");","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"appleraincoat"},"content":" parsedResult.add(info[0].substring(9).trim());","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"appleraincoat"},"content":" parsedResult.add(info[1].trim());","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"appleraincoat"},"content":" return parsedResult;","lastModifiedDate":"2024-01-30"},{"lineNumber":59,"author":{"gitId":"appleraincoat"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":60,"author":{"gitId":"appleraincoat"},"content":" throw new YpxmmException(\"You trying to test my patience ah? Check that u got key in the deadline lehhh\\n\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":61,"author":{"gitId":"appleraincoat"},"content":" \"Type \\\"get commands\\\" if u blur and dunno how to use me properly.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":62,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":63,"author":{"gitId":"appleraincoat"},"content":" case \"event\":","lastModifiedDate":"2024-01-30"},{"lineNumber":64,"author":{"gitId":"appleraincoat"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":65,"author":{"gitId":"appleraincoat"},"content":" parsedResult.add(command);","lastModifiedDate":"2024-01-30"},{"lineNumber":66,"author":{"gitId":"appleraincoat"},"content":" String[] info \u003d input.split(\"/\");","lastModifiedDate":"2024-01-30"},{"lineNumber":67,"author":{"gitId":"appleraincoat"},"content":" if (info[0].split(\"event \")[1].isBlank() || info[1].isBlank() || info[2].isBlank()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":68,"author":{"gitId":"appleraincoat"},"content":" throw new YpxmmException(\"Help la, can just tell me what is the name of your task anot?\");","lastModifiedDate":"2024-01-30"},{"lineNumber":69,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":70,"author":{"gitId":"appleraincoat"},"content":" parsedResult.add(info[0].substring(6).trim());","lastModifiedDate":"2024-01-30"},{"lineNumber":71,"author":{"gitId":"appleraincoat"},"content":" parsedResult.add(info[1].trim());","lastModifiedDate":"2024-01-30"},{"lineNumber":72,"author":{"gitId":"appleraincoat"},"content":" parsedResult.add(info[2].trim());","lastModifiedDate":"2024-01-30"},{"lineNumber":73,"author":{"gitId":"appleraincoat"},"content":" return parsedResult;","lastModifiedDate":"2024-01-30"},{"lineNumber":74,"author":{"gitId":"appleraincoat"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":75,"author":{"gitId":"appleraincoat"},"content":" throw new YpxmmException(\"Eh brother last warning ah. Check that u got key in the start and end time\\n\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":76,"author":{"gitId":"appleraincoat"},"content":" \"Type \\\"get commands\\\" if u blur and dunno how to use me properly.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":77,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":78,"author":{"gitId":"appleraincoat"},"content":" case \"delete\":","lastModifiedDate":"2024-01-30"},{"lineNumber":79,"author":{"gitId":"appleraincoat"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":80,"author":{"gitId":"appleraincoat"},"content":" int index \u003d Integer.parseInt(splitInput[1]);","lastModifiedDate":"2024-01-30"},{"lineNumber":81,"author":{"gitId":"appleraincoat"},"content":" parsedResult.add(command);","lastModifiedDate":"2024-01-30"},{"lineNumber":82,"author":{"gitId":"appleraincoat"},"content":" parsedResult.add(splitInput[1]);","lastModifiedDate":"2024-01-30"},{"lineNumber":83,"author":{"gitId":"appleraincoat"},"content":" return parsedResult;","lastModifiedDate":"2024-01-30"},{"lineNumber":84,"author":{"gitId":"appleraincoat"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":85,"author":{"gitId":"appleraincoat"},"content":" throw new YpxmmException(\"Brother, key in delete \u003cspace\u003e then a valid number\");","lastModifiedDate":"2024-01-30"},{"lineNumber":86,"author":{"gitId":"appleraincoat"},"content":" } catch (NumberFormatException n) {","lastModifiedDate":"2024-01-30"},{"lineNumber":87,"author":{"gitId":"appleraincoat"},"content":" throw new YpxmmException(\"You tell me now what task am I supposed to delete if you don\u0027t provide me with a number?\");","lastModifiedDate":"2024-01-30"},{"lineNumber":88,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":89,"author":{"gitId":"appleraincoat"},"content":" default:","lastModifiedDate":"2024-01-30"},{"lineNumber":90,"author":{"gitId":"appleraincoat"},"content":" throw new YpxmmException(\"Sorry bro, idk what that means. You try type in \\\"getcommands\\\" then see if got what u want.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":91,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":92,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":93,"author":{"gitId":"appleraincoat"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"appleraincoat":93}},{"path":"src/main/java/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"appleraincoat"},"content":"import java.io.File;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"appleraincoat"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"appleraincoat"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"appleraincoat"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"appleraincoat"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"appleraincoat"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"appleraincoat"},"content":"public class Storage {","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"appleraincoat"},"content":" public String filePath;","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"appleraincoat"},"content":" public Storage(String filePath) {","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"appleraincoat"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"appleraincoat"},"content":" public void appendToFile(String textToAppend) throws YpxmmException {","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"appleraincoat"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"appleraincoat"},"content":" File file \u003d new File(filePath);","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"appleraincoat"},"content":" FileWriter fw \u003d new FileWriter(file, true); // create a FileWriter in append mode","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"appleraincoat"},"content":" fw.write(textToAppend + \"\\n\");","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"appleraincoat"},"content":" fw.close();","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"appleraincoat"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"appleraincoat"},"content":" throw new YpxmmException(\"IOException\");","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"appleraincoat"},"content":" public void reWrite(TaskList tasklist) throws YpxmmException {","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"appleraincoat"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"appleraincoat"},"content":" File file \u003d new File(filePath);","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"appleraincoat"},"content":" FileWriter fw \u003d new FileWriter(file);","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"appleraincoat"},"content":" for (Task t : tasklist.tasks) {","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"appleraincoat"},"content":" fw.write(t.toWrite() + \"\\n\");","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"appleraincoat"},"content":" fw.close();","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"appleraincoat"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"appleraincoat"},"content":" throw new YpxmmException(\"IOException\");","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"appleraincoat"},"content":" public ArrayList\u003cTask\u003e load() throws YpxmmException {","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"appleraincoat"},"content":" File file \u003d new File(filePath);","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"appleraincoat"},"content":" ArrayList\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"appleraincoat"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"appleraincoat"},"content":" if (!file.exists()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"appleraincoat"},"content":" file.getParentFile().mkdirs();","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"appleraincoat"},"content":" file.createNewFile();","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"appleraincoat"},"content":" Scanner s \u003d new Scanner(file);","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"appleraincoat"},"content":" while (s.hasNext()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"appleraincoat"},"content":" String[] line \u003d s.nextLine().split(\" \\\\| \");","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"appleraincoat"},"content":" if (line[0].equals(\"T\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"appleraincoat"},"content":" Task task \u003d new ToDo(line[2]);","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"appleraincoat"},"content":" if (line[1].equals(\"1\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"appleraincoat"},"content":" task.setCompleted();","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"appleraincoat"},"content":" tasks.add(task);","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"appleraincoat"},"content":" } else if (line[0].equals(\"D\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"appleraincoat"},"content":" Task task \u003d new Deadline(line[2], line[3]);","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"appleraincoat"},"content":" if (line[1].equals(\"1\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":59,"author":{"gitId":"appleraincoat"},"content":" task.setCompleted();","lastModifiedDate":"2024-01-30"},{"lineNumber":60,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":61,"author":{"gitId":"appleraincoat"},"content":" tasks.add(task);","lastModifiedDate":"2024-01-30"},{"lineNumber":62,"author":{"gitId":"appleraincoat"},"content":" } else if (line[0].equals(\"E\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":63,"author":{"gitId":"appleraincoat"},"content":" String[] timing \u003d line[3].split(\" to \");","lastModifiedDate":"2024-01-30"},{"lineNumber":64,"author":{"gitId":"appleraincoat"},"content":" Task task \u003d new Event(line[2], timing[0], timing[1]);","lastModifiedDate":"2024-01-30"},{"lineNumber":65,"author":{"gitId":"appleraincoat"},"content":" if (line[1].equals(\"1\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":66,"author":{"gitId":"appleraincoat"},"content":" task.setCompleted();","lastModifiedDate":"2024-01-30"},{"lineNumber":67,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":68,"author":{"gitId":"appleraincoat"},"content":" tasks.add(task);","lastModifiedDate":"2024-01-30"},{"lineNumber":69,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":70,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":71,"author":{"gitId":"appleraincoat"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":72,"author":{"gitId":"appleraincoat"},"content":" throw new YpxmmException(\"IOException\");","lastModifiedDate":"2024-01-30"},{"lineNumber":73,"author":{"gitId":"appleraincoat"},"content":" } catch (ArrayIndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":74,"author":{"gitId":"appleraincoat"},"content":" file.delete();","lastModifiedDate":"2024-01-30"},{"lineNumber":75,"author":{"gitId":"appleraincoat"},"content":" throw new YpxmmException(\"Wah bro your file is corrupted leh...I help you delete first\");","lastModifiedDate":"2024-01-30"},{"lineNumber":76,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":77,"author":{"gitId":"appleraincoat"},"content":" return tasks;","lastModifiedDate":"2024-01-30"},{"lineNumber":78,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":79,"author":{"gitId":"appleraincoat"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"appleraincoat":79}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"appleraincoat"},"content":"public class Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"appleraincoat"},"content":" protected String name;","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"appleraincoat"},"content":" protected boolean completed;","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"appleraincoat"},"content":" //constructor","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"appleraincoat"},"content":" public Task(String name) {","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"appleraincoat"},"content":" this.name \u003d name;","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"appleraincoat"},"content":" this.completed \u003d false;","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"appleraincoat"},"content":" public void markTask() {","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"appleraincoat"},"content":" this.completed \u003d true;","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"appleraincoat"},"content":" public void setCompleted() {","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"appleraincoat"},"content":" this.completed \u003d true;","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"appleraincoat"},"content":" public void unmarkTask() {","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"appleraincoat"},"content":" this.completed \u003d false;","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":23,"author":{"gitId":"appleraincoat"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"appleraincoat"},"content":" return (completed ? \"X\" : \" \"); // mark done task with X","lastModifiedDate":"2024-01-24"},{"lineNumber":26,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":27,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":28,"author":{"gitId":"appleraincoat"},"content":" public String toWrite() {","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"appleraincoat"},"content":" return (completed ? \"1\" : \"0\") + \" | \" + name;","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"appleraincoat"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":33,"author":{"gitId":"appleraincoat"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":34,"author":{"gitId":"appleraincoat"},"content":" return \"[\" + this.getStatusIcon() + \"] \" + name;","lastModifiedDate":"2024-01-24"},{"lineNumber":35,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":36,"author":{"gitId":"appleraincoat"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"appleraincoat":36}},{"path":"src/main/java/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"appleraincoat"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"appleraincoat"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"appleraincoat"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"appleraincoat"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"appleraincoat"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"appleraincoat"},"content":"public class TaskList {","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"appleraincoat"},"content":" public ArrayList\u003cTask\u003e tasks;","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"appleraincoat"},"content":" public TaskList(ArrayList\u003cTask\u003e tasks) {","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"appleraincoat"},"content":" this.tasks \u003d tasks;","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"appleraincoat"},"content":" public void addTask(ArrayList\u003cString\u003e input, Task task) {","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"appleraincoat"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"appleraincoat"},"content":" if (input.get(0).equals(\"todo\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"appleraincoat"},"content":" tasks.add(task);","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"appleraincoat"},"content":" } else if (input.get(0).equals(\"deadline\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"appleraincoat"},"content":" try{","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"appleraincoat"},"content":" tasks.add(task);","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"appleraincoat"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"appleraincoat"},"content":" throw new YpxmmException(\"Brother, follow format can or not? Enter dates in dd-mm-yyyy HHmm (24-08-2024 1800)\");","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"appleraincoat"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"appleraincoat"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"appleraincoat"},"content":" tasks.add(task);","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"appleraincoat"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"appleraincoat"},"content":" throw new YpxmmException(\"Brother, follow format can or not? Enter dates in dd-mm-yyyy HHmm (24-08-2024 1800)\");","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"appleraincoat"},"content":" } catch (YpxmmException y) {","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"appleraincoat"},"content":" System.out.println(y.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"appleraincoat"},"content":" public void deleteTask(int index) {","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"appleraincoat"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"appleraincoat"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"appleraincoat"},"content":" String t \u003d tasks.get(index - 1).toString();","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"appleraincoat"},"content":" tasks.remove(index - 1);","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"appleraincoat"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"appleraincoat"},"content":" throw new YpxmmException(\"Eh u seh isit? Now your list got \" +","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"appleraincoat"},"content":" (tasks.isEmpty() ? \"no tasks to delete.\" : tasks.size() +","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"appleraincoat"},"content":" \" tasks, enter any number from 1 to \" + tasks.size()));","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"appleraincoat"},"content":" } catch (YpxmmException y) {","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"appleraincoat"},"content":" System.out.println(y.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"appleraincoat"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"appleraincoat":54}},{"path":"src/main/java/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"appleraincoat"},"content":"public class ToDo extends Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"appleraincoat"},"content":" public ToDo(String name) {","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"appleraincoat"},"content":" super(name);","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"appleraincoat"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"appleraincoat"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"appleraincoat"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"appleraincoat"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"appleraincoat"},"content":" public String toWrite() {","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"appleraincoat"},"content":" return \"T | \" + super.toWrite();","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"appleraincoat"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"appleraincoat":16}},{"path":"src/main/java/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"appleraincoat"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"appleraincoat"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"appleraincoat"},"content":"public class Ui {","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"appleraincoat"},"content":" private Scanner sc;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"appleraincoat"},"content":" public Ui() {","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"appleraincoat"},"content":" this.sc \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"appleraincoat"},"content":" public void sayHello() {","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"appleraincoat"},"content":" System.out.println(\"Hello, I\u0027m Ypxmm.\\nNeed me do what for you?\");","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"appleraincoat"},"content":" public String readCommand() {","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"appleraincoat"},"content":" return sc.nextLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"appleraincoat"},"content":" public void showLine() {","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"appleraincoat"},"content":" System.out.println(\"-----------------------------------\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"appleraincoat"},"content":" \"---------------------------\");","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"appleraincoat"},"content":" public void getCommands() {","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"appleraincoat"},"content":" System.out.println(\"Take note ah, enter all time based commands are in \u003cdd-mm-yyyy HHmm\u003e format\\n\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"appleraincoat"},"content":" \" todo \u003ctask\u003e - adds todo\\n deadline \u003ctask\u003e/\u003cby when\u003e - adds deadline\\n\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"appleraincoat"},"content":" \" event \u003ctask\u003e/\u003cfrom when\u003e/\u003cto when\u003e - adds event\\n list - lists out all tasks\\n\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"appleraincoat"},"content":" \" mark \u003cx\u003e - marks task x as done\\n unmark \u003cx\u003e - unmarks task x as undone\\n\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"appleraincoat"},"content":" \" bye - exit\");","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"appleraincoat"},"content":" public void printList(ArrayList\u003cTask\u003e tasks) {","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"appleraincoat"},"content":" if (tasks.isEmpty()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"appleraincoat"},"content":" System.out.println(\"No tasks yet la bro\");","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"appleraincoat"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"appleraincoat"},"content":" System.out.println(\"Ok wait ah, here are your tasks:\");","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"appleraincoat"},"content":" int count \u003d 1;","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"appleraincoat"},"content":" for (Task t : tasks) {","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"appleraincoat"},"content":" System.out.println(count + \". \" + t.toString());","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"appleraincoat"},"content":" count++;","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"appleraincoat"},"content":" public void addTaskMessage(Task task, TaskList tasklist) {","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"appleraincoat"},"content":" System.out.println(\"Ok I help you add this one liao:\\n\" + task.toString() +","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"appleraincoat"},"content":" \"\\nNow your list got \" + tasklist.tasks.size() + ((tasklist.tasks.size() \u003d\u003d 1) ? \" task.\" : \" tasks.\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"appleraincoat"},"content":" public void deleteTaskMessage(Task task, TaskList tasklist) {","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"appleraincoat"},"content":" System.out.println(\"Ok deleted liao:\\n\" + task.toString() + \"\\nNow your list got \" +","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"appleraincoat"},"content":" (tasklist.tasks.isEmpty() ? \"no tasks.\" : tasklist.tasks.size() + \" tasks left.\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"appleraincoat"},"content":" public void markMessage(Task task) {","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"appleraincoat"},"content":" System.out.println(\"Upz la, mark for you already!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"appleraincoat"},"content":" System.out.println(task.toString());","lastModifiedDate":"2024-01-30"},{"lineNumber":59,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":60,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":61,"author":{"gitId":"appleraincoat"},"content":" public void unmarkMessage(Task task) {","lastModifiedDate":"2024-01-30"},{"lineNumber":62,"author":{"gitId":"appleraincoat"},"content":" System.out.println(\"Eh wake up your idea, faster finish can or not?? Unmark for you already la!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":63,"author":{"gitId":"appleraincoat"},"content":" System.out.println(task.toString());","lastModifiedDate":"2024-01-30"},{"lineNumber":64,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":65,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":66,"author":{"gitId":"appleraincoat"},"content":" public void sayGoodbye() {","lastModifiedDate":"2024-01-30"},{"lineNumber":67,"author":{"gitId":"appleraincoat"},"content":" System.out.println(\"Oh you need zao alr? Okok see you next time!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":68,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":69,"author":{"gitId":"appleraincoat"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"appleraincoat":69}},{"path":"src/main/java/Ypxmm.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"appleraincoat"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"appleraincoat"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"appleraincoat"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"appleraincoat"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"appleraincoat"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"appleraincoat"},"content":"import java.io.File;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"appleraincoat"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"appleraincoat"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"appleraincoat"},"content":"public class Ypxmm {","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"appleraincoat"},"content":" private Storage storage;","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"appleraincoat"},"content":" private TaskList tasks;","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"appleraincoat"},"content":" private Ui ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"appleraincoat"},"content":" public Ypxmm(String filePath) {","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"appleraincoat"},"content":" ui \u003d new Ui();","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"appleraincoat"},"content":" storage \u003d new Storage(filePath);","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"appleraincoat"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"appleraincoat"},"content":" tasks \u003d new TaskList(storage.load());","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"appleraincoat"},"content":" } catch (YpxmmException y) {","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"appleraincoat"},"content":" System.out.println(y.getMessage());","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":25,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":26,"author":{"gitId":"appleraincoat"},"content":" public void run() {","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"appleraincoat"},"content":" ui.sayHello();","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"appleraincoat"},"content":" ui.showLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"appleraincoat"},"content":" boolean isRunning \u003d true;","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"appleraincoat"},"content":" while (isRunning) {","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"appleraincoat"},"content":" String input \u003d ui.readCommand();","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"appleraincoat"},"content":" ui.showLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"appleraincoat"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":34,"author":{"gitId":"appleraincoat"},"content":" ArrayList\u003cString\u003e parsed \u003d Parser.parse(input);","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"appleraincoat"},"content":" Command command \u003d Command.valueOf(parsed.get(0).toUpperCase());","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"appleraincoat"},"content":" command.execute(tasks, ui, storage, parsed);","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"appleraincoat"},"content":" ui.showLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"appleraincoat"},"content":" if (command.equals(Command.BYE)) {","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"appleraincoat"},"content":" isRunning \u003d false;","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":41,"author":{"gitId":"appleraincoat"},"content":" } catch (YpxmmException y) {","lastModifiedDate":"2024-01-25"},{"lineNumber":42,"author":{"gitId":"appleraincoat"},"content":" System.out.println(y.getMessage());","lastModifiedDate":"2024-01-25"},{"lineNumber":43,"author":{"gitId":"appleraincoat"},"content":" ui.showLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":45,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":46,"author":{"gitId":"appleraincoat"},"content":" ui.sayGoodbye();","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":48,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":49,"author":{"gitId":"appleraincoat"},"content":" public static void main(String[] args) throws YpxmmException {","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":51,"author":{"gitId":"appleraincoat"},"content":" new Ypxmm(\"/data/Ypxmm.txt\").run();","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":53,"author":{"gitId":"appleraincoat"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"appleraincoat":53}},{"path":"src/main/java/YpxmmException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"appleraincoat"},"content":"public class YpxmmException extends Exception {","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"appleraincoat"},"content":" public YpxmmException(String message) {","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"appleraincoat"},"content":" super(message);","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"appleraincoat"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"appleraincoat":5}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"appleraincoat"},"content":"list","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"appleraincoat"},"content":"mark 1","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"appleraincoat"},"content":"mark t","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"appleraincoat"},"content":"unmark 1","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"appleraincoat"},"content":"unmark y","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"appleraincoat"},"content":"todo","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"appleraincoat"},"content":"todo eat","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"appleraincoat"},"content":"deadline homework /","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"appleraincoat"},"content":"deadline homework /5pm","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"appleraincoat"},"content":"event dinner /5pm /","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"appleraincoat"},"content":"event dinner /5pm /6pm","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"appleraincoat"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"appleraincoat"},"content":"mark 1","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"appleraincoat"},"content":"delete 4","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"appleraincoat"},"content":"delete y","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"appleraincoat"},"content":"delete 2","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"appleraincoat"},"content":"list","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"appleraincoat"},"content":"zzz","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"appleraincoat"},"content":"getcommands","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"appleraincoat"},"content":"bye","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"appleraincoat":20}},{"path":"text-ui-test/runtest.bat","fileType":"bat","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@ECHO OFF","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"REM create bin directory if it doesn\u0027t exist","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"if not exist ..\\bin mkdir ..\\bin","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"REM delete output from previous run","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"if exist ACTUAL.TXT del ACTUAL.TXT","lastModifiedDate":"2020-08-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"REM compile the code into the bin folder","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"javac -cp ..\\src\\main\\java -Xlint:none -d ..\\bin ..\\src\\main\\java\\*.java","lastModifiedDate":"2020-08-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"IF ERRORLEVEL 1 (","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":" echo ********** BUILD FAILURE **********","lastModifiedDate":"2020-05-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":" exit /b 1","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":")","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"REM no error here, errorlevel \u003d\u003d 0","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"REM run the program, feed commands from input.txt file and redirect the output to the ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"appleraincoat"},"content":"java -classpath ..\\bin Ypxmm \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"REM compare the output to the expected output","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"FC ACTUAL.TXT EXPECTED.TXT","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"-":20,"appleraincoat":1}}] +[{"path":"build.gradle","fileType":"gradle","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"plugins {","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":" id \u0027java\u0027","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":" id \u0027application\u0027","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":" id \u0027com.github.johnrengelman.shadow\u0027 version \u00277.1.2\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"repositories {","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":" mavenCentral()","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"dependencies {","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":" testImplementation group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-api\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":" testRuntimeOnly group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-engine\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"appleraincoat"},"content":" mainClass.set(\"Main.Ypxmm\")","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":" archiveBaseName \u003d \"duke\"","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":"run{","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"-":41,"appleraincoat":1}},{"path":"data/Ypxmm.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"appleraincoat"},"content":"T | 0 | eat","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"appleraincoat"},"content":"D | 0 | level 9 hmwk | 03-02-2024 2359","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"appleraincoat"},"content":"E | 0 | bros dinner | 29-01-2024 1900 to 29-01-2024 2000","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"appleraincoat":3}},{"path":"src/main/java/Commands/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"appleraincoat"},"content":"package Commands;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"appleraincoat"},"content":"import Tasks.Deadline;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"appleraincoat"},"content":"import Tasks.Event;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"appleraincoat"},"content":"import Tasks.Task;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"appleraincoat"},"content":"import Tasks.ToDo;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"appleraincoat"},"content":"import Utilities.Storage;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"appleraincoat"},"content":"import Utilities.TaskList;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"appleraincoat"},"content":"import Utilities.Ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"appleraincoat"},"content":"import Exceptions.YpxmmException;","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"appleraincoat"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"appleraincoat"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"appleraincoat"},"content":"public enum Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"appleraincoat"},"content":" LIST {","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"appleraincoat"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"appleraincoat"},"content":" public void execute(TaskList tasklist, Ui ui, Storage storage, ArrayList\u003cString\u003e parsed) {","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"appleraincoat"},"content":" ui.printList(tasklist.tasks);","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"appleraincoat"},"content":" },","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"appleraincoat"},"content":" MARK {","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"appleraincoat"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"appleraincoat"},"content":" public void execute(TaskList tasklist, Ui ui, Storage storage, ArrayList\u003cString\u003e parsed) throws YpxmmException {","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"appleraincoat"},"content":" int index \u003d Integer.parseInt(parsed.get(1));","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"appleraincoat"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"appleraincoat"},"content":" Task task \u003d tasklist.tasks.get(index - 1);","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"appleraincoat"},"content":" task.markTask();","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"appleraincoat"},"content":" storage.reWrite(tasklist);","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"appleraincoat"},"content":" ui.markMessage(task);","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"appleraincoat"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"appleraincoat"},"content":" throw new YpxmmException(\"Eh u seh isit? Now your list got \" +","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"appleraincoat"},"content":" (tasklist.tasks.isEmpty() ? \"no tasks to mark.\" : tasklist.tasks.size() +","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"appleraincoat"},"content":" \" tasks, enter any number from 1 to \" + tasklist.tasks.size()));","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"appleraincoat"},"content":" } catch (YpxmmException y) {","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"appleraincoat"},"content":" System.out.println(y.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"appleraincoat"},"content":" },","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"appleraincoat"},"content":" UNMARK {","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"appleraincoat"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"appleraincoat"},"content":" public void execute(TaskList tasklist, Ui ui, Storage storage, ArrayList\u003cString\u003e parsed) throws YpxmmException {","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"appleraincoat"},"content":" int index \u003d Integer.parseInt(parsed.get(1));","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"appleraincoat"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"appleraincoat"},"content":" Task task \u003d tasklist.tasks.get(index - 1);","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"appleraincoat"},"content":" task.unmarkTask();","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"appleraincoat"},"content":" storage.reWrite(tasklist);","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"appleraincoat"},"content":" ui.unmarkMessage(task);","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"appleraincoat"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"appleraincoat"},"content":" throw new YpxmmException(\"Eh u seh isit? Now your list got \" +","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"appleraincoat"},"content":" (tasklist.tasks.isEmpty() ? \"no tasks to unmark.\" : tasklist.tasks.size() +","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"appleraincoat"},"content":" \" tasks, enter any number from 1 to \" + tasklist.tasks.size()));","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"appleraincoat"},"content":" } catch (YpxmmException y) {","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"appleraincoat"},"content":" System.out.println(y.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"appleraincoat"},"content":" },","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"appleraincoat"},"content":" TODO {","lastModifiedDate":"2024-01-30"},{"lineNumber":59,"author":{"gitId":"appleraincoat"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":60,"author":{"gitId":"appleraincoat"},"content":" public void execute(TaskList tasklist, Ui ui, Storage storage, ArrayList\u003cString\u003e parsed) {","lastModifiedDate":"2024-01-30"},{"lineNumber":61,"author":{"gitId":"appleraincoat"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":62,"author":{"gitId":"appleraincoat"},"content":" Task task \u003d new ToDo(parsed.get(1));","lastModifiedDate":"2024-01-30"},{"lineNumber":63,"author":{"gitId":"appleraincoat"},"content":" tasklist.addTask(parsed, task);","lastModifiedDate":"2024-01-30"},{"lineNumber":64,"author":{"gitId":"appleraincoat"},"content":" storage.appendToFile(task.toWrite());","lastModifiedDate":"2024-01-30"},{"lineNumber":65,"author":{"gitId":"appleraincoat"},"content":" ui.addTaskMessage(task, tasklist);","lastModifiedDate":"2024-01-30"},{"lineNumber":66,"author":{"gitId":"appleraincoat"},"content":" } catch (YpxmmException y) {","lastModifiedDate":"2024-01-30"},{"lineNumber":67,"author":{"gitId":"appleraincoat"},"content":" System.out.println(y.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":68,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":69,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":70,"author":{"gitId":"appleraincoat"},"content":" },","lastModifiedDate":"2024-01-30"},{"lineNumber":71,"author":{"gitId":"appleraincoat"},"content":" DEADLINE {","lastModifiedDate":"2024-01-30"},{"lineNumber":72,"author":{"gitId":"appleraincoat"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":73,"author":{"gitId":"appleraincoat"},"content":" public void execute(TaskList tasklist, Ui ui, Storage storage, ArrayList\u003cString\u003e parsed) {","lastModifiedDate":"2024-01-30"},{"lineNumber":74,"author":{"gitId":"appleraincoat"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":75,"author":{"gitId":"appleraincoat"},"content":" Task task \u003d new Deadline(parsed.get(1).trim(), parsed.get(2).trim());","lastModifiedDate":"2024-01-30"},{"lineNumber":76,"author":{"gitId":"appleraincoat"},"content":" tasklist.addTask(parsed, task);","lastModifiedDate":"2024-01-30"},{"lineNumber":77,"author":{"gitId":"appleraincoat"},"content":" storage.appendToFile(task.toWrite());","lastModifiedDate":"2024-01-30"},{"lineNumber":78,"author":{"gitId":"appleraincoat"},"content":" ui.addTaskMessage(task, tasklist);","lastModifiedDate":"2024-01-30"},{"lineNumber":79,"author":{"gitId":"appleraincoat"},"content":" } catch (YpxmmException y) {","lastModifiedDate":"2024-01-30"},{"lineNumber":80,"author":{"gitId":"appleraincoat"},"content":" System.out.println(y.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":81,"author":{"gitId":"appleraincoat"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":82,"author":{"gitId":"appleraincoat"},"content":" System.out.println(\"Brother, follow format can or not? Enter dates in dd-mm-yyyy HHmm (24-08-2024 1800)\");","lastModifiedDate":"2024-01-30"},{"lineNumber":83,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":84,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":85,"author":{"gitId":"appleraincoat"},"content":" },","lastModifiedDate":"2024-01-30"},{"lineNumber":86,"author":{"gitId":"appleraincoat"},"content":" EVENT {","lastModifiedDate":"2024-01-30"},{"lineNumber":87,"author":{"gitId":"appleraincoat"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":88,"author":{"gitId":"appleraincoat"},"content":" public void execute(TaskList tasklist, Ui ui, Storage storage, ArrayList\u003cString\u003e parsed) {","lastModifiedDate":"2024-01-30"},{"lineNumber":89,"author":{"gitId":"appleraincoat"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":90,"author":{"gitId":"appleraincoat"},"content":" Task task \u003d new Event(parsed.get(1).trim(), parsed.get(2).trim(), parsed.get(3).trim());","lastModifiedDate":"2024-01-30"},{"lineNumber":91,"author":{"gitId":"appleraincoat"},"content":" tasklist.addTask(parsed, task);","lastModifiedDate":"2024-01-30"},{"lineNumber":92,"author":{"gitId":"appleraincoat"},"content":" storage.appendToFile(task.toWrite());","lastModifiedDate":"2024-01-30"},{"lineNumber":93,"author":{"gitId":"appleraincoat"},"content":" ui.addTaskMessage(task, tasklist);","lastModifiedDate":"2024-01-30"},{"lineNumber":94,"author":{"gitId":"appleraincoat"},"content":" } catch (YpxmmException y) {","lastModifiedDate":"2024-01-30"},{"lineNumber":95,"author":{"gitId":"appleraincoat"},"content":" System.out.println(y.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":96,"author":{"gitId":"appleraincoat"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":97,"author":{"gitId":"appleraincoat"},"content":" System.out.println(\"Brother, follow format can or not? Enter dates in dd-mm-yyyy HHmm (24-08-2024 1800)\");","lastModifiedDate":"2024-01-30"},{"lineNumber":98,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":99,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":100,"author":{"gitId":"appleraincoat"},"content":" },","lastModifiedDate":"2024-01-30"},{"lineNumber":101,"author":{"gitId":"appleraincoat"},"content":" GETCOMMANDS {","lastModifiedDate":"2024-01-30"},{"lineNumber":102,"author":{"gitId":"appleraincoat"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":103,"author":{"gitId":"appleraincoat"},"content":" public void execute(TaskList tasklist, Ui ui, Storage storage, ArrayList\u003cString\u003e parsed) {","lastModifiedDate":"2024-01-30"},{"lineNumber":104,"author":{"gitId":"appleraincoat"},"content":" ui.getCommands();","lastModifiedDate":"2024-01-30"},{"lineNumber":105,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":106,"author":{"gitId":"appleraincoat"},"content":" },","lastModifiedDate":"2024-01-30"},{"lineNumber":107,"author":{"gitId":"appleraincoat"},"content":" DELETE {","lastModifiedDate":"2024-01-30"},{"lineNumber":108,"author":{"gitId":"appleraincoat"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":109,"author":{"gitId":"appleraincoat"},"content":" public void execute(TaskList tasklist, Ui ui, Storage storage, ArrayList\u003cString\u003e parsed) throws YpxmmException {","lastModifiedDate":"2024-01-30"},{"lineNumber":110,"author":{"gitId":"appleraincoat"},"content":" int index \u003d Integer.parseInt(parsed.get(1));","lastModifiedDate":"2024-01-30"},{"lineNumber":111,"author":{"gitId":"appleraincoat"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":112,"author":{"gitId":"appleraincoat"},"content":" Task task \u003d tasklist.tasks.get(index - 1);","lastModifiedDate":"2024-01-30"},{"lineNumber":113,"author":{"gitId":"appleraincoat"},"content":" tasklist.deleteTask(index);","lastModifiedDate":"2024-01-30"},{"lineNumber":114,"author":{"gitId":"appleraincoat"},"content":" storage.reWrite(tasklist);","lastModifiedDate":"2024-01-30"},{"lineNumber":115,"author":{"gitId":"appleraincoat"},"content":" ui.deleteTaskMessage(task, tasklist);","lastModifiedDate":"2024-01-30"},{"lineNumber":116,"author":{"gitId":"appleraincoat"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":117,"author":{"gitId":"appleraincoat"},"content":" throw new YpxmmException(\"Eh u seh isit? Now your list got \" +","lastModifiedDate":"2024-01-30"},{"lineNumber":118,"author":{"gitId":"appleraincoat"},"content":" (tasklist.tasks.isEmpty() ? \"no tasks to delete.\" : tasklist.tasks.size() +","lastModifiedDate":"2024-01-30"},{"lineNumber":119,"author":{"gitId":"appleraincoat"},"content":" \" tasks, enter any number from 1 to \" + tasklist.tasks.size()));","lastModifiedDate":"2024-01-30"},{"lineNumber":120,"author":{"gitId":"appleraincoat"},"content":" } catch (YpxmmException y) {","lastModifiedDate":"2024-01-30"},{"lineNumber":121,"author":{"gitId":"appleraincoat"},"content":" System.out.println(y.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":122,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":123,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":124,"author":{"gitId":"appleraincoat"},"content":" },","lastModifiedDate":"2024-01-30"},{"lineNumber":125,"author":{"gitId":"appleraincoat"},"content":" BYE {","lastModifiedDate":"2024-01-30"},{"lineNumber":126,"author":{"gitId":"appleraincoat"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":127,"author":{"gitId":"appleraincoat"},"content":" public void execute(TaskList tasklist, Ui ui, Storage storage, ArrayList\u003cString\u003e parsed) {","lastModifiedDate":"2024-01-30"},{"lineNumber":128,"author":{"gitId":"appleraincoat"},"content":" ui.sayGoodbye();","lastModifiedDate":"2024-01-30"},{"lineNumber":129,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":130,"author":{"gitId":"appleraincoat"},"content":" };","lastModifiedDate":"2024-01-30"},{"lineNumber":131,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":132,"author":{"gitId":"appleraincoat"},"content":" public void execute(TaskList tasklist, Ui ui, Storage storage, ArrayList\u003cString\u003e parsed) throws YpxmmException {","lastModifiedDate":"2024-01-30"},{"lineNumber":133,"author":{"gitId":"appleraincoat"},"content":" //should never reach here as all invalid inputs will be handled","lastModifiedDate":"2024-01-30"},{"lineNumber":134,"author":{"gitId":"appleraincoat"},"content":" //in parse method in Parser class","lastModifiedDate":"2024-01-30"},{"lineNumber":135,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":136,"author":{"gitId":"appleraincoat"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"appleraincoat":136}},{"path":"src/main/java/Exceptions/YpxmmException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"appleraincoat"},"content":"package Exceptions;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"appleraincoat"},"content":"public class YpxmmException extends Exception {","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"appleraincoat"},"content":" public YpxmmException(String message) {","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"appleraincoat"},"content":" super(message);","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"appleraincoat"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"appleraincoat":7}},{"path":"src/main/java/Main/Ypxmm.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"appleraincoat"},"content":"package Main;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"appleraincoat"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"appleraincoat"},"content":"import Commands.Command;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"appleraincoat"},"content":"import Parsing.Parser;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"appleraincoat"},"content":"import Utilities.Storage;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"appleraincoat"},"content":"import Utilities.TaskList;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"appleraincoat"},"content":"import Utilities.Ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"appleraincoat"},"content":"import Exceptions.YpxmmException;","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"appleraincoat"},"content":"public class Ypxmm {","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"appleraincoat"},"content":" private Storage storage;","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"appleraincoat"},"content":" private TaskList tasks;","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"appleraincoat"},"content":" private Ui ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"appleraincoat"},"content":" public Ypxmm(String filePath) {","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"appleraincoat"},"content":" ui \u003d new Ui();","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"appleraincoat"},"content":" storage \u003d new Storage(filePath);","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"appleraincoat"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"appleraincoat"},"content":" tasks \u003d new TaskList(storage.load());","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"appleraincoat"},"content":" } catch (YpxmmException y) {","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"appleraincoat"},"content":" System.out.println(y.getMessage());","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":26,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":27,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":28,"author":{"gitId":"appleraincoat"},"content":" public void run() {","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"appleraincoat"},"content":" ui.sayHello();","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"appleraincoat"},"content":" ui.showLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"appleraincoat"},"content":" boolean isRunning \u003d true;","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"appleraincoat"},"content":" while (isRunning) {","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"appleraincoat"},"content":" String input \u003d ui.readCommand();","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"appleraincoat"},"content":" ui.showLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"appleraincoat"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":36,"author":{"gitId":"appleraincoat"},"content":" ArrayList\u003cString\u003e parsed \u003d Parser.parse(input);","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"appleraincoat"},"content":" Command command \u003d Command.valueOf(parsed.get(0).toUpperCase());","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"appleraincoat"},"content":" command.execute(tasks, ui, storage, parsed);","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"appleraincoat"},"content":" ui.showLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"appleraincoat"},"content":" if (command.equals(Command.BYE)) {","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"appleraincoat"},"content":" isRunning \u003d false;","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":43,"author":{"gitId":"appleraincoat"},"content":" } catch (YpxmmException y) {","lastModifiedDate":"2024-01-25"},{"lineNumber":44,"author":{"gitId":"appleraincoat"},"content":" System.out.println(y.getMessage());","lastModifiedDate":"2024-01-25"},{"lineNumber":45,"author":{"gitId":"appleraincoat"},"content":" ui.showLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":47,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":48,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":49,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":50,"author":{"gitId":"appleraincoat"},"content":" public static void main(String[] args) throws YpxmmException {","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"appleraincoat"},"content":" new Ypxmm(\"/data/Ypxmm.txt\").run();","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":53,"author":{"gitId":"appleraincoat"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"appleraincoat":53}},{"path":"src/main/java/Parsing/DateTimeParser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"appleraincoat"},"content":"package Parsing;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"appleraincoat"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"appleraincoat"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"appleraincoat"},"content":"public class DateTimeParser {","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"appleraincoat"},"content":" protected DateTimeFormatter formatter;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"appleraincoat"},"content":" public DateTimeParser() {","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"appleraincoat"},"content":" this.formatter \u003d DateTimeFormatter.ofPattern(\"dd-MM-yyyy HHmm\");","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"appleraincoat"},"content":" public LocalDateTime parseDateTime(String timeString) {","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"appleraincoat"},"content":" return LocalDateTime.parse(timeString, this.formatter);","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"appleraincoat"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"appleraincoat":15}},{"path":"src/main/java/Parsing/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"appleraincoat"},"content":"package Parsing;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"appleraincoat"},"content":"import Exceptions.YpxmmException;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"appleraincoat"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"appleraincoat"},"content":"public class Parser {","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"appleraincoat"},"content":" public static ArrayList\u003cString\u003e parse(String input) throws YpxmmException {","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"appleraincoat"},"content":" ArrayList\u003cString\u003e parsedResult \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"appleraincoat"},"content":" String[] splitInput \u003d input.split(\" \");","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"appleraincoat"},"content":" String command \u003d splitInput[0];","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"appleraincoat"},"content":" switch (command) {","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"appleraincoat"},"content":" case \"bye\", \"list\", \"getcommands\":","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"appleraincoat"},"content":" parsedResult.add(command);","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"appleraincoat"},"content":" return parsedResult;","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"appleraincoat"},"content":" case \"mark\":","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"appleraincoat"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"appleraincoat"},"content":" int index \u003d Integer.parseInt(splitInput[1]);","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"appleraincoat"},"content":" parsedResult.add(command);","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"appleraincoat"},"content":" parsedResult.add(splitInput[1]);","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"appleraincoat"},"content":" return parsedResult;","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"appleraincoat"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"appleraincoat"},"content":" throw new YpxmmException(\"Brother, key in mark \u003cspace\u003e then a valid number\");","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"appleraincoat"},"content":" } catch (NumberFormatException n) {","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"appleraincoat"},"content":" throw new YpxmmException(\"You tell me now what task am I supposed to mark if you don\u0027t provide me with a number?\");","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"appleraincoat"},"content":" case \"unmark\":","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"appleraincoat"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"appleraincoat"},"content":" int index \u003d Integer.parseInt(splitInput[1]);","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"appleraincoat"},"content":" parsedResult.add(command);","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"appleraincoat"},"content":" parsedResult.add(splitInput[1]);","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"appleraincoat"},"content":" return parsedResult;","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"appleraincoat"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"appleraincoat"},"content":" throw new YpxmmException(\"Brother, key in unmark \u003cspace\u003e then a valid number\");","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"appleraincoat"},"content":" } catch (NumberFormatException n) {","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"appleraincoat"},"content":" throw new YpxmmException(\"You tell me now what task am I supposed to unmark if you don\u0027t provide me with a number?\");","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"appleraincoat"},"content":" case \"todo\":","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"appleraincoat"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"appleraincoat"},"content":" parsedResult.add(command);","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"appleraincoat"},"content":" String[] info \u003d input.split(\"todo \");","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"appleraincoat"},"content":" if (info[1].isBlank()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"appleraincoat"},"content":" throw new YpxmmException(\"Help la, can just tell me what is the name of your task anot?\");","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"appleraincoat"},"content":" parsedResult.add(info[1].trim());","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"appleraincoat"},"content":" return parsedResult;","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"appleraincoat"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"appleraincoat"},"content":" throw new YpxmmException(\"You trying to test my patience ah? Type \\\"get commands\\\" if u blur and dunno how to use me properly.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"appleraincoat"},"content":" case \"deadline\":","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"appleraincoat"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"appleraincoat"},"content":" parsedResult.add(command);","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"appleraincoat"},"content":" String[] info \u003d input.split(\"/\");","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"appleraincoat"},"content":" if (info[0].split(\"deadline \")[1].isBlank() || info[1].isBlank()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"appleraincoat"},"content":" throw new YpxmmException(\"Help la, can just tell me what is the name of your task anot?\");","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"appleraincoat"},"content":" parsedResult.add(info[0].substring(9).trim());","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"appleraincoat"},"content":" parsedResult.add(info[1].trim());","lastModifiedDate":"2024-01-30"},{"lineNumber":59,"author":{"gitId":"appleraincoat"},"content":" return parsedResult;","lastModifiedDate":"2024-01-30"},{"lineNumber":60,"author":{"gitId":"appleraincoat"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":61,"author":{"gitId":"appleraincoat"},"content":" throw new YpxmmException(\"You trying to test my patience ah? Check that u got key in the deadline lehhh\\n\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":62,"author":{"gitId":"appleraincoat"},"content":" \"Type \\\"get commands\\\" if u blur and dunno how to use me properly.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":63,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":64,"author":{"gitId":"appleraincoat"},"content":" case \"event\":","lastModifiedDate":"2024-01-30"},{"lineNumber":65,"author":{"gitId":"appleraincoat"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":66,"author":{"gitId":"appleraincoat"},"content":" parsedResult.add(command);","lastModifiedDate":"2024-01-30"},{"lineNumber":67,"author":{"gitId":"appleraincoat"},"content":" String[] info \u003d input.split(\"/\");","lastModifiedDate":"2024-01-30"},{"lineNumber":68,"author":{"gitId":"appleraincoat"},"content":" if (info[0].split(\"event \")[1].isBlank() || info[1].isBlank() || info[2].isBlank()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":69,"author":{"gitId":"appleraincoat"},"content":" throw new YpxmmException(\"Help la, can just tell me what is the name of your task anot?\");","lastModifiedDate":"2024-01-30"},{"lineNumber":70,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":71,"author":{"gitId":"appleraincoat"},"content":" parsedResult.add(info[0].substring(6).trim());","lastModifiedDate":"2024-01-30"},{"lineNumber":72,"author":{"gitId":"appleraincoat"},"content":" parsedResult.add(info[1].trim());","lastModifiedDate":"2024-01-30"},{"lineNumber":73,"author":{"gitId":"appleraincoat"},"content":" parsedResult.add(info[2].trim());","lastModifiedDate":"2024-01-30"},{"lineNumber":74,"author":{"gitId":"appleraincoat"},"content":" return parsedResult;","lastModifiedDate":"2024-01-30"},{"lineNumber":75,"author":{"gitId":"appleraincoat"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":76,"author":{"gitId":"appleraincoat"},"content":" throw new YpxmmException(\"Eh brother last warning ah. Check that u got key in the start and end time\\n\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":77,"author":{"gitId":"appleraincoat"},"content":" \"Type \\\"get commands\\\" if u blur and dunno how to use me properly.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":78,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":79,"author":{"gitId":"appleraincoat"},"content":" case \"delete\":","lastModifiedDate":"2024-01-30"},{"lineNumber":80,"author":{"gitId":"appleraincoat"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":81,"author":{"gitId":"appleraincoat"},"content":" int index \u003d Integer.parseInt(splitInput[1]);","lastModifiedDate":"2024-01-30"},{"lineNumber":82,"author":{"gitId":"appleraincoat"},"content":" parsedResult.add(command);","lastModifiedDate":"2024-01-30"},{"lineNumber":83,"author":{"gitId":"appleraincoat"},"content":" parsedResult.add(splitInput[1]);","lastModifiedDate":"2024-01-30"},{"lineNumber":84,"author":{"gitId":"appleraincoat"},"content":" return parsedResult;","lastModifiedDate":"2024-01-30"},{"lineNumber":85,"author":{"gitId":"appleraincoat"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":86,"author":{"gitId":"appleraincoat"},"content":" throw new YpxmmException(\"Brother, key in delete \u003cspace\u003e then a valid number\");","lastModifiedDate":"2024-01-30"},{"lineNumber":87,"author":{"gitId":"appleraincoat"},"content":" } catch (NumberFormatException n) {","lastModifiedDate":"2024-01-30"},{"lineNumber":88,"author":{"gitId":"appleraincoat"},"content":" throw new YpxmmException(\"You tell me now what task am I supposed to delete if you don\u0027t provide me with a number?\");","lastModifiedDate":"2024-01-30"},{"lineNumber":89,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":90,"author":{"gitId":"appleraincoat"},"content":" default:","lastModifiedDate":"2024-01-30"},{"lineNumber":91,"author":{"gitId":"appleraincoat"},"content":" throw new YpxmmException(\"Sorry bro, idk what that means. You try type in \\\"getcommands\\\" then see if got what u want.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":92,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":93,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":94,"author":{"gitId":"appleraincoat"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"appleraincoat":94}},{"path":"src/main/java/Tasks/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"appleraincoat"},"content":"package Tasks;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"appleraincoat"},"content":"import Parsing.DateTimeParser;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"appleraincoat"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"appleraincoat"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"appleraincoat"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"appleraincoat"},"content":" protected LocalDateTime byWhen;","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"appleraincoat"},"content":" protected DateTimeParser dateTimeParser;","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"appleraincoat"},"content":" public Deadline(String name, String byWhenString) {","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"appleraincoat"},"content":" super(name);","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"appleraincoat"},"content":" this.dateTimeParser \u003d new DateTimeParser();","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"appleraincoat"},"content":" this.byWhen \u003d this.dateTimeParser.parseDateTime(byWhenString);","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"appleraincoat"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"appleraincoat"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"appleraincoat"},"content":" return \"[D]\" + super.toString() + \" (by: \" + byWhen.format(DateTimeFormatter.ofPattern(\"MMM dd yyyy HHmm\")) + \")\";","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"appleraincoat"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"appleraincoat"},"content":" public String toWrite() {","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"appleraincoat"},"content":" return \"D | \" + super.toWrite() + \" | \" + byWhen.format(DateTimeFormatter.ofPattern(\"dd-MM-yyyy HHmm\"));","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"appleraincoat"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"appleraincoat":27}},{"path":"src/main/java/Tasks/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"appleraincoat"},"content":"package Tasks;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"appleraincoat"},"content":"import Parsing.DateTimeParser;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"appleraincoat"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"appleraincoat"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"appleraincoat"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"appleraincoat"},"content":" protected LocalDateTime fromWhen;","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"appleraincoat"},"content":" protected LocalDateTime toWhen;","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"appleraincoat"},"content":" protected DateTimeParser dateTimeParser;","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"appleraincoat"},"content":" public Event(String name, String fromWhenString, String toWhenString) {","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"appleraincoat"},"content":" super(name);","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"appleraincoat"},"content":" this.dateTimeParser \u003d new DateTimeParser();","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"appleraincoat"},"content":" this.fromWhen \u003d this.dateTimeParser.parseDateTime(fromWhenString);","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"appleraincoat"},"content":" this.toWhen \u003d this.dateTimeParser.parseDateTime(toWhenString);","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"appleraincoat"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"appleraincoat"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"appleraincoat"},"content":" return \"[E]\" + super.toString() + \" (from: \" + fromWhen.format(DateTimeFormatter.ofPattern(\"MMM dd yyyy HHmm\"))","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"appleraincoat"},"content":" + \" to: \" + toWhen.format(DateTimeFormatter.ofPattern(\"MMM dd yyyy HHmm\")) + \")\";","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":25,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"appleraincoat"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"appleraincoat"},"content":" public String toWrite() {","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"appleraincoat"},"content":" return \"E | \" + super.toWrite() + \" | \" + fromWhen.format(DateTimeFormatter.ofPattern(\"dd-MM-yyyy HHmm\")) +","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"appleraincoat"},"content":" \" to \" + toWhen.format(DateTimeFormatter.ofPattern(\"dd-MM-yyyy HHmm\"));","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"appleraincoat"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"appleraincoat":31}},{"path":"src/main/java/Tasks/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"appleraincoat"},"content":"package Tasks;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"appleraincoat"},"content":"public class Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"appleraincoat"},"content":" protected String name;","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"appleraincoat"},"content":" protected boolean completed;","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"appleraincoat"},"content":" //constructor","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"appleraincoat"},"content":" public Task(String name) {","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"appleraincoat"},"content":" this.name \u003d name;","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"appleraincoat"},"content":" this.completed \u003d false;","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"appleraincoat"},"content":" public void markTask() {","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"appleraincoat"},"content":" this.completed \u003d true;","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"appleraincoat"},"content":" public void setCompleted() {","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"appleraincoat"},"content":" this.completed \u003d true;","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"appleraincoat"},"content":" public void unmarkTask() {","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"appleraincoat"},"content":" this.completed \u003d false;","lastModifiedDate":"2024-01-24"},{"lineNumber":23,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":25,"author":{"gitId":"appleraincoat"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-01-24"},{"lineNumber":26,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"appleraincoat"},"content":" return (completed ? \"X\" : \" \"); // mark done task with X","lastModifiedDate":"2024-01-24"},{"lineNumber":28,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":29,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":30,"author":{"gitId":"appleraincoat"},"content":" public String toWrite() {","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"appleraincoat"},"content":" return (completed ? \"1\" : \"0\") + \" | \" + name;","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"appleraincoat"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":35,"author":{"gitId":"appleraincoat"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":36,"author":{"gitId":"appleraincoat"},"content":" return \"[\" + this.getStatusIcon() + \"] \" + name;","lastModifiedDate":"2024-01-24"},{"lineNumber":37,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":38,"author":{"gitId":"appleraincoat"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"appleraincoat":38}},{"path":"src/main/java/Tasks/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"appleraincoat"},"content":"package Tasks;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"appleraincoat"},"content":"public class ToDo extends Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"appleraincoat"},"content":" public ToDo(String name) {","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"appleraincoat"},"content":" super(name);","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"appleraincoat"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"appleraincoat"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"appleraincoat"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"appleraincoat"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"appleraincoat"},"content":" public String toWrite() {","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"appleraincoat"},"content":" return \"T | \" + super.toWrite();","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"appleraincoat"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"appleraincoat":18}},{"path":"src/main/java/Utilities/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"appleraincoat"},"content":"package Utilities;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"appleraincoat"},"content":"import Exceptions.YpxmmException;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"appleraincoat"},"content":"import Tasks.Deadline;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"appleraincoat"},"content":"import Tasks.Event;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"appleraincoat"},"content":"import Tasks.Task;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"appleraincoat"},"content":"import Tasks.ToDo;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"appleraincoat"},"content":"import java.io.File;","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"appleraincoat"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"appleraincoat"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"appleraincoat"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"appleraincoat"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"appleraincoat"},"content":"public class Storage {","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"appleraincoat"},"content":" public String filePath;","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"appleraincoat"},"content":" public Storage(String filePath) {","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"appleraincoat"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"appleraincoat"},"content":" public void appendToFile(String textToAppend) throws YpxmmException {","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"appleraincoat"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"appleraincoat"},"content":" File file \u003d new File(filePath);","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"appleraincoat"},"content":" FileWriter fw \u003d new FileWriter(file, true); // create a FileWriter in append mode","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"appleraincoat"},"content":" fw.write(textToAppend + \"\\n\");","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"appleraincoat"},"content":" fw.close();","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"appleraincoat"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"appleraincoat"},"content":" throw new YpxmmException(\"IOException\");","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"appleraincoat"},"content":" public void reWrite(TaskList tasklist) throws YpxmmException {","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"appleraincoat"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"appleraincoat"},"content":" File file \u003d new File(filePath);","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"appleraincoat"},"content":" FileWriter fw \u003d new FileWriter(file);","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"appleraincoat"},"content":" for (Task t : tasklist.tasks) {","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"appleraincoat"},"content":" fw.write(t.toWrite() + \"\\n\");","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"appleraincoat"},"content":" fw.close();","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"appleraincoat"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"appleraincoat"},"content":" throw new YpxmmException(\"IOException\");","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"appleraincoat"},"content":" public ArrayList\u003cTask\u003e load() throws YpxmmException {","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"appleraincoat"},"content":" File file \u003d new File(filePath);","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"appleraincoat"},"content":" ArrayList\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"appleraincoat"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"appleraincoat"},"content":" if (!file.exists()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"appleraincoat"},"content":" file.getParentFile().mkdirs();","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"appleraincoat"},"content":" file.createNewFile();","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"appleraincoat"},"content":" Scanner s \u003d new Scanner(file);","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"appleraincoat"},"content":" while (s.hasNext()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"appleraincoat"},"content":" String[] line \u003d s.nextLine().split(\" \\\\| \");","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"appleraincoat"},"content":" if (line[0].equals(\"T\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"appleraincoat"},"content":" Task task \u003d new ToDo(line[2]);","lastModifiedDate":"2024-01-30"},{"lineNumber":59,"author":{"gitId":"appleraincoat"},"content":" if (line[1].equals(\"1\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":60,"author":{"gitId":"appleraincoat"},"content":" task.setCompleted();","lastModifiedDate":"2024-01-30"},{"lineNumber":61,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":62,"author":{"gitId":"appleraincoat"},"content":" tasks.add(task);","lastModifiedDate":"2024-01-30"},{"lineNumber":63,"author":{"gitId":"appleraincoat"},"content":" } else if (line[0].equals(\"D\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":64,"author":{"gitId":"appleraincoat"},"content":" Task task \u003d new Deadline(line[2], line[3]);","lastModifiedDate":"2024-01-30"},{"lineNumber":65,"author":{"gitId":"appleraincoat"},"content":" if (line[1].equals(\"1\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":66,"author":{"gitId":"appleraincoat"},"content":" task.setCompleted();","lastModifiedDate":"2024-01-30"},{"lineNumber":67,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":68,"author":{"gitId":"appleraincoat"},"content":" tasks.add(task);","lastModifiedDate":"2024-01-30"},{"lineNumber":69,"author":{"gitId":"appleraincoat"},"content":" } else if (line[0].equals(\"E\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":70,"author":{"gitId":"appleraincoat"},"content":" String[] timing \u003d line[3].split(\" to \");","lastModifiedDate":"2024-01-30"},{"lineNumber":71,"author":{"gitId":"appleraincoat"},"content":" Task task \u003d new Event(line[2], timing[0], timing[1]);","lastModifiedDate":"2024-01-30"},{"lineNumber":72,"author":{"gitId":"appleraincoat"},"content":" if (line[1].equals(\"1\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":73,"author":{"gitId":"appleraincoat"},"content":" task.setCompleted();","lastModifiedDate":"2024-01-30"},{"lineNumber":74,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":75,"author":{"gitId":"appleraincoat"},"content":" tasks.add(task);","lastModifiedDate":"2024-01-30"},{"lineNumber":76,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":77,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":78,"author":{"gitId":"appleraincoat"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":79,"author":{"gitId":"appleraincoat"},"content":" throw new YpxmmException(\"IOException\");","lastModifiedDate":"2024-01-30"},{"lineNumber":80,"author":{"gitId":"appleraincoat"},"content":" } catch (ArrayIndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":81,"author":{"gitId":"appleraincoat"},"content":" file.delete();","lastModifiedDate":"2024-01-30"},{"lineNumber":82,"author":{"gitId":"appleraincoat"},"content":" throw new YpxmmException(\"Wah bro your file is corrupted leh...I help you delete first\");","lastModifiedDate":"2024-01-30"},{"lineNumber":83,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":84,"author":{"gitId":"appleraincoat"},"content":" return tasks;","lastModifiedDate":"2024-01-30"},{"lineNumber":85,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":86,"author":{"gitId":"appleraincoat"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"appleraincoat":86}},{"path":"src/main/java/Utilities/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"appleraincoat"},"content":"package Utilities;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"appleraincoat"},"content":"import Exceptions.YpxmmException;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"appleraincoat"},"content":"import Tasks.Task;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"appleraincoat"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"appleraincoat"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"appleraincoat"},"content":"public class TaskList {","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"appleraincoat"},"content":" public ArrayList\u003cTask\u003e tasks;","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"appleraincoat"},"content":" public TaskList(ArrayList\u003cTask\u003e tasks) {","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"appleraincoat"},"content":" this.tasks \u003d tasks;","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"appleraincoat"},"content":" public void addTask(ArrayList\u003cString\u003e input, Task task) {","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"appleraincoat"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"appleraincoat"},"content":" if (input.get(0).equals(\"todo\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"appleraincoat"},"content":" tasks.add(task);","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"appleraincoat"},"content":" } else if (input.get(0).equals(\"deadline\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"appleraincoat"},"content":" try{","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"appleraincoat"},"content":" tasks.add(task);","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"appleraincoat"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"appleraincoat"},"content":" throw new YpxmmException(\"Brother, follow format can or not? Enter dates in dd-mm-yyyy HHmm (24-08-2024 1800)\");","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"appleraincoat"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"appleraincoat"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"appleraincoat"},"content":" tasks.add(task);","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"appleraincoat"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"appleraincoat"},"content":" throw new YpxmmException(\"Brother, follow format can or not? Enter dates in dd-mm-yyyy HHmm (24-08-2024 1800)\");","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"appleraincoat"},"content":" } catch (YpxmmException y) {","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"appleraincoat"},"content":" System.out.println(y.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"appleraincoat"},"content":" public void deleteTask(int index) {","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"appleraincoat"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"appleraincoat"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"appleraincoat"},"content":" String t \u003d tasks.get(index - 1).toString();","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"appleraincoat"},"content":" tasks.remove(index - 1);","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"appleraincoat"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"appleraincoat"},"content":" throw new YpxmmException(\"Eh u seh isit? Now your list got \" +","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"appleraincoat"},"content":" (tasks.isEmpty() ? \"no tasks to delete.\" : tasks.size() +","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"appleraincoat"},"content":" \" tasks, enter any number from 1 to \" + tasks.size()));","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"appleraincoat"},"content":" } catch (YpxmmException y) {","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"appleraincoat"},"content":" System.out.println(y.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"appleraincoat"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"appleraincoat":54}},{"path":"src/main/java/Utilities/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"appleraincoat"},"content":"package Utilities;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"appleraincoat"},"content":"import Tasks.Task;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"appleraincoat"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"appleraincoat"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"appleraincoat"},"content":"public class Ui {","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"appleraincoat"},"content":" private Scanner sc;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"appleraincoat"},"content":" public Ui() {","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"appleraincoat"},"content":" this.sc \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"appleraincoat"},"content":" public void sayHello() {","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"appleraincoat"},"content":" System.out.println(\"Hello, I\u0027m Ypxmm.\\nNeed me do what for you?\");","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"appleraincoat"},"content":" public String readCommand() {","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"appleraincoat"},"content":" return sc.nextLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"appleraincoat"},"content":" public void showLine() {","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"appleraincoat"},"content":" System.out.println(\"-----------------------------------\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"appleraincoat"},"content":" \"---------------------------\");","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"appleraincoat"},"content":" public void getCommands() {","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"appleraincoat"},"content":" System.out.println(\"Take note ah, enter all time based commands are in \u003cdd-mm-yyyy HHmm\u003e format\\n\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"appleraincoat"},"content":" \" todo \u003ctask\u003e - adds todo\\n deadline \u003ctask\u003e/\u003cby when\u003e - adds deadline\\n\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"appleraincoat"},"content":" \" event \u003ctask\u003e/\u003cfrom when\u003e/\u003cto when\u003e - adds event\\n list - lists out all tasks\\n\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"appleraincoat"},"content":" \" mark \u003cx\u003e - marks task x as done\\n unmark \u003cx\u003e - unmarks task x as undone\\n\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"appleraincoat"},"content":" \" bye - exit\");","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"appleraincoat"},"content":" public void printList(ArrayList\u003cTask\u003e tasks) {","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"appleraincoat"},"content":" if (tasks.isEmpty()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"appleraincoat"},"content":" System.out.println(\"No tasks yet la bro\");","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"appleraincoat"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"appleraincoat"},"content":" System.out.println(\"Ok wait ah, here are your tasks:\");","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"appleraincoat"},"content":" int count \u003d 1;","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"appleraincoat"},"content":" for (Task t : tasks) {","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"appleraincoat"},"content":" System.out.println(count + \". \" + t.toString());","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"appleraincoat"},"content":" count++;","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"appleraincoat"},"content":" public void addTaskMessage(Task task, TaskList tasklist) {","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"appleraincoat"},"content":" System.out.println(\"Ok I help you add this one liao:\\n\" + task.toString() +","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"appleraincoat"},"content":" \"\\nNow your list got \" + tasklist.tasks.size() + ((tasklist.tasks.size() \u003d\u003d 1) ? \" task.\" : \" tasks.\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"appleraincoat"},"content":" public void deleteTaskMessage(Task task, TaskList tasklist) {","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"appleraincoat"},"content":" System.out.println(\"Ok deleted liao:\\n\" + task.toString() + \"\\nNow your list got \" +","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"appleraincoat"},"content":" (tasklist.tasks.isEmpty() ? \"no tasks.\" : tasklist.tasks.size() + \" tasks left.\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"appleraincoat"},"content":" public void markMessage(Task task) {","lastModifiedDate":"2024-01-30"},{"lineNumber":59,"author":{"gitId":"appleraincoat"},"content":" System.out.println(\"Upz la, mark for you already!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":60,"author":{"gitId":"appleraincoat"},"content":" System.out.println(task.toString());","lastModifiedDate":"2024-01-30"},{"lineNumber":61,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":62,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":63,"author":{"gitId":"appleraincoat"},"content":" public void unmarkMessage(Task task) {","lastModifiedDate":"2024-01-30"},{"lineNumber":64,"author":{"gitId":"appleraincoat"},"content":" System.out.println(\"Eh wake up your idea, faster finish can or not?? Unmark for you already la!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":65,"author":{"gitId":"appleraincoat"},"content":" System.out.println(task.toString());","lastModifiedDate":"2024-01-30"},{"lineNumber":66,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":67,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":68,"author":{"gitId":"appleraincoat"},"content":" public void sayGoodbye() {","lastModifiedDate":"2024-01-30"},{"lineNumber":69,"author":{"gitId":"appleraincoat"},"content":" System.out.println(\"Oh you need zao alr? Okok see you next time!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":70,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":71,"author":{"gitId":"appleraincoat"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"appleraincoat":71}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"appleraincoat"},"content":"list","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"appleraincoat"},"content":"mark 1","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"appleraincoat"},"content":"mark t","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"appleraincoat"},"content":"unmark 1","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"appleraincoat"},"content":"unmark y","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"appleraincoat"},"content":"todo","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"appleraincoat"},"content":"todo eat","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"appleraincoat"},"content":"deadline homework /","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"appleraincoat"},"content":"deadline homework /5pm","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"appleraincoat"},"content":"event dinner /5pm /","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"appleraincoat"},"content":"event dinner /5pm /6pm","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"appleraincoat"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"appleraincoat"},"content":"mark 1","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"appleraincoat"},"content":"delete 4","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"appleraincoat"},"content":"delete y","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"appleraincoat"},"content":"delete 2","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"appleraincoat"},"content":"list","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"appleraincoat"},"content":"zzz","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"appleraincoat"},"content":"getcommands","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"appleraincoat"},"content":"bye","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"appleraincoat":20}},{"path":"text-ui-test/runtest.bat","fileType":"bat","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@ECHO OFF","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"REM create bin directory if it doesn\u0027t exist","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"if not exist ..\\bin mkdir ..\\bin","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"REM delete output from previous run","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"if exist ACTUAL.TXT del ACTUAL.TXT","lastModifiedDate":"2020-08-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"REM compile the code into the bin folder","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"javac -cp ..\\src\\main\\java -Xlint:none -d ..\\bin ..\\src\\main\\java\\*.java","lastModifiedDate":"2020-08-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"IF ERRORLEVEL 1 (","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":" echo ********** BUILD FAILURE **********","lastModifiedDate":"2020-05-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":" exit /b 1","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":")","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"REM no error here, errorlevel \u003d\u003d 0","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"REM run the program, feed commands from input.txt file and redirect the output to the ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"appleraincoat"},"content":"java -classpath ..\\bin Ypxmm \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"REM compare the output to the expected output","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"FC ACTUAL.TXT EXPECTED.TXT","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"-":20,"appleraincoat":1}}] diff --git a/appleraincoat_ip_master/commits.json b/appleraincoat_ip_master/commits.json index 619b6e03..5e58c77d 100644 --- a/appleraincoat_ip_master/commits.json +++ b/appleraincoat_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"appleraincoat":[{"date":"2024-01-24","commitResults":[{"hash":"7b7c9116e31eba52d9b99a5d02a58d814721c0c8","isMergeCommit":false,"messageTitle":"Added chatbot Ypxmm, with only simple greetings before exiting","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":10}}},{"hash":"301514198e0c45709c3a0c0605cc68736cfe9a52","isMergeCommit":false,"messageTitle":"Added the ability to echo messages, exiting on input \"bye\".","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":12,"deletions":2}}},{"hash":"853403d4e6436a88595bd004a0b59df5368745f3","isMergeCommit":false,"messageTitle":"Removed ability to echo, keeps a lsit of inputs now and prints it upon request.","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":1}}},{"hash":"5dd07de207755da3675ca3431bdd21e5f3991562","isMergeCommit":false,"messageTitle":"Abstracted a Task class.","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":49,"deletions":8}}},{"hash":"c4997f86cf293bbd2785a509ac8307df94419def","isMergeCommit":false,"messageTitle":"Add and extend 3 types of Tasks, Deadline, Event and Todo. Add static methods into main class to abstract out further.","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":111,"deletions":14}}},{"hash":"436fb0c4dffc3ce39b71dee8293dfdaf30bb874a","isMergeCommit":false,"messageTitle":"Add some simple test cases for semi-automated testing.","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":9,"deletions":0},"java":{"insertions":1,"deletions":2},"bat":{"insertions":1,"deletions":1}}},{"hash":"6ad583d035115ea7ad5613caab675016719ad026","isMergeCommit":false,"messageTitle":"Add handling of invalid input for mark and unmark methods.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":2}}}]},{"date":"2024-01-25","commitResults":[{"hash":"7d8af053ce1e8b334bbc9bd36e92f117a7edc7e2","isMergeCommit":false,"messageTitle":"Add YpxmmException class. Able to handle invalid inputs.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":97,"deletions":51}}},{"hash":"239f76baef9cc0af555d8e14e659ec00ab6b0cc3","isMergeCommit":false,"messageTitle":"Add more exception handling features.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":18,"deletions":5}}},{"hash":"1fd8acb5402a648f6f1849d1af0da08bdd54eaea","isMergeCommit":false,"messageTitle":"Add test cases for error handling.","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"txt":{"insertions":8,"deletions":5}}},{"hash":"70fc418c2ef05d445951aed3fa80864ceec8f362","isMergeCommit":false,"messageTitle":"Add delete function.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":28,"deletions":2}}},{"hash":"157f0c497ff797f3677dcdcedcecc7ca486f634f","isMergeCommit":false,"messageTitle":"Add new test cases.","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":0}}},{"hash":"6ce2e148e446a0e26ad3b1d270901785e93a8771","isMergeCommit":false,"messageTitle":"Add Enum class for commands","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":22,"deletions":0}}},{"hash":"cba57607a4f94db49337525247091a41b9928bd0","isMergeCommit":false,"messageTitle":"Add enums, and change implementation to use them in a switch statement. Add 1 more catch for illegal argument exception. Add more test cases.","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"txt":{"insertions":12,"deletions":6},"java":{"insertions":69,"deletions":66}}}]},{"date":"2024-01-28","commitResults":[{"hash":"596f5dbf5cc2ff9cfebd6f92bdafe43c8f4e8498","isMergeCommit":false,"messageTitle":"Change import statements in Ypxmm.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":1}}}]},{"date":"2024-01-29","commitResults":[{"hash":"a78bfed5020264c8c93afeeb140b0feaacbe091b","isMergeCommit":false,"messageTitle":"Add ability to save tasks to a file in hard disk, and load from it when initialise.","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":5,"deletions":0},"java":{"insertions":123,"deletions":0}}},{"hash":"21b1149b18864ffaa994040823b99e181075d9cf","isMergeCommit":false,"messageTitle":"Add trimming when initialising tasks.","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"java":{"insertions":3,"deletions":3}}},{"hash":"825f1e9fdff8aa9339dcda229ec93abd8dd05941","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}},{"hash":"cbc1fbc38e2bdd263da2e125d9edd292669ef698","isMergeCommit":false,"messageTitle":"Change byWhen variable in Deadline class to store in LocalDateTime format.","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":4},"java":{"insertions":10,"deletions":3}}},{"hash":"1e0213e96c828563208d7c718aaaf1aea725a9b7","isMergeCommit":false,"messageTitle":"Change Deadline and Event class to store timing with LocalDateTime type, adjust formatting to be consistent.","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":4},"java":{"insertions":23,"deletions":14}}},{"hash":"4c28cb3b0c0016d7ded86aa94edd82eee20db2b3","isMergeCommit":false,"messageTitle":"Modify getcommands command to suit the change in format","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":1},"java":{"insertions":5,"deletions":4}}},{"hash":"696d08e5824f83ae3967559379f4f0b2b65dd9fa","isMergeCommit":false,"messageTitle":"Add a catch for DateTimeParseException if the user inputs in the wrong format","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":5,"deletions":0}}},{"hash":"49255cd0b1928bd41d91a3a17b5d9b8268ddf06d","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}}]},{"date":"2024-01-30","commitResults":[{"hash":"7ea8744afe39a8887d405e7c2e3d17fe286c6781","isMergeCommit":false,"messageTitle":"Refactor code. Rename EnumCommands to Command, add Parser, Storage, Ui, TaskList classes.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":441,"deletions":289}}},{"hash":"4ee5530812003ce55649fa4d20019a6d651e7f7b","isMergeCommit":false,"messageTitle":"Small bug fixes","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":6}}},{"hash":"854391b613101ec18d8e3f404a58deda59eb8c34","isMergeCommit":false,"messageTitle":"Add DateTImeParser class that parses format of time in Deadline and Event classes. Add other small modifications to UI output.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":27,"deletions":15}}},{"hash":"4237fc396670b957ee9a2b206d9af9f1c6011ed4","isMergeCommit":true,"messageTitle":"Merge branch \u0027A-MoreOOP\u0027","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"appleraincoat":{"java":593,"md":0,"fxml":0,"sh":0,"bat":1,"gradle":0,"txt":23}},"authorContributionVariance":{"appleraincoat":53907.5},"authorDisplayNameMap":{"appleraincoat":"CS2103T-W10-1 LAU ..AMES"}} +{"authorDailyContributionsMap":{"appleraincoat":[{"date":"2024-01-24","commitResults":[{"hash":"7b7c9116e31eba52d9b99a5d02a58d814721c0c8","isMergeCommit":false,"messageTitle":"Added chatbot Ypxmm, with only simple greetings before exiting","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":10}}},{"hash":"301514198e0c45709c3a0c0605cc68736cfe9a52","isMergeCommit":false,"messageTitle":"Added the ability to echo messages, exiting on input \"bye\".","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":12,"deletions":2}}},{"hash":"853403d4e6436a88595bd004a0b59df5368745f3","isMergeCommit":false,"messageTitle":"Removed ability to echo, keeps a lsit of inputs now and prints it upon request.","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":1}}},{"hash":"5dd07de207755da3675ca3431bdd21e5f3991562","isMergeCommit":false,"messageTitle":"Abstracted a Task class.","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":49,"deletions":8}}},{"hash":"c4997f86cf293bbd2785a509ac8307df94419def","isMergeCommit":false,"messageTitle":"Add and extend 3 types of Tasks, Deadline, Event and Todo. Add static methods into main class to abstract out further.","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":111,"deletions":14}}},{"hash":"436fb0c4dffc3ce39b71dee8293dfdaf30bb874a","isMergeCommit":false,"messageTitle":"Add some simple test cases for semi-automated testing.","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":9,"deletions":0},"java":{"insertions":1,"deletions":2},"bat":{"insertions":1,"deletions":1}}},{"hash":"6ad583d035115ea7ad5613caab675016719ad026","isMergeCommit":false,"messageTitle":"Add handling of invalid input for mark and unmark methods.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":2}}}]},{"date":"2024-01-25","commitResults":[{"hash":"7d8af053ce1e8b334bbc9bd36e92f117a7edc7e2","isMergeCommit":false,"messageTitle":"Add YpxmmException class. Able to handle invalid inputs.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":97,"deletions":51}}},{"hash":"239f76baef9cc0af555d8e14e659ec00ab6b0cc3","isMergeCommit":false,"messageTitle":"Add more exception handling features.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":18,"deletions":5}}},{"hash":"1fd8acb5402a648f6f1849d1af0da08bdd54eaea","isMergeCommit":false,"messageTitle":"Add test cases for error handling.","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"txt":{"insertions":8,"deletions":5}}},{"hash":"70fc418c2ef05d445951aed3fa80864ceec8f362","isMergeCommit":false,"messageTitle":"Add delete function.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":28,"deletions":2}}},{"hash":"157f0c497ff797f3677dcdcedcecc7ca486f634f","isMergeCommit":false,"messageTitle":"Add new test cases.","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":0}}},{"hash":"6ce2e148e446a0e26ad3b1d270901785e93a8771","isMergeCommit":false,"messageTitle":"Add Enum class for commands","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":22,"deletions":0}}},{"hash":"cba57607a4f94db49337525247091a41b9928bd0","isMergeCommit":false,"messageTitle":"Add enums, and change implementation to use them in a switch statement. Add 1 more catch for illegal argument exception. Add more test cases.","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"txt":{"insertions":12,"deletions":6},"java":{"insertions":69,"deletions":66}}}]},{"date":"2024-01-28","commitResults":[{"hash":"596f5dbf5cc2ff9cfebd6f92bdafe43c8f4e8498","isMergeCommit":false,"messageTitle":"Change import statements in Ypxmm.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":1}}}]},{"date":"2024-01-29","commitResults":[{"hash":"a78bfed5020264c8c93afeeb140b0feaacbe091b","isMergeCommit":false,"messageTitle":"Add ability to save tasks to a file in hard disk, and load from it when initialise.","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":5,"deletions":0},"java":{"insertions":123,"deletions":0}}},{"hash":"21b1149b18864ffaa994040823b99e181075d9cf","isMergeCommit":false,"messageTitle":"Add trimming when initialising tasks.","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"java":{"insertions":3,"deletions":3}}},{"hash":"825f1e9fdff8aa9339dcda229ec93abd8dd05941","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}},{"hash":"cbc1fbc38e2bdd263da2e125d9edd292669ef698","isMergeCommit":false,"messageTitle":"Change byWhen variable in Deadline class to store in LocalDateTime format.","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":4},"java":{"insertions":10,"deletions":3}}},{"hash":"1e0213e96c828563208d7c718aaaf1aea725a9b7","isMergeCommit":false,"messageTitle":"Change Deadline and Event class to store timing with LocalDateTime type, adjust formatting to be consistent.","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":4},"java":{"insertions":23,"deletions":14}}},{"hash":"4c28cb3b0c0016d7ded86aa94edd82eee20db2b3","isMergeCommit":false,"messageTitle":"Modify getcommands command to suit the change in format","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":1},"java":{"insertions":5,"deletions":4}}},{"hash":"696d08e5824f83ae3967559379f4f0b2b65dd9fa","isMergeCommit":false,"messageTitle":"Add a catch for DateTimeParseException if the user inputs in the wrong format","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":5,"deletions":0}}},{"hash":"49255cd0b1928bd41d91a3a17b5d9b8268ddf06d","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}}]},{"date":"2024-01-30","commitResults":[{"hash":"7ea8744afe39a8887d405e7c2e3d17fe286c6781","isMergeCommit":false,"messageTitle":"Refactor code. Rename EnumCommands to Command, add Parser, Storage, Ui, TaskList classes.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":441,"deletions":289}}},{"hash":"4ee5530812003ce55649fa4d20019a6d651e7f7b","isMergeCommit":false,"messageTitle":"Small bug fixes","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":6}}},{"hash":"854391b613101ec18d8e3f404a58deda59eb8c34","isMergeCommit":false,"messageTitle":"Add DateTImeParser class that parses format of time in Deadline and Event classes. Add other small modifications to UI output.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":27,"deletions":15}}},{"hash":"4237fc396670b957ee9a2b206d9af9f1c6011ed4","isMergeCommit":true,"messageTitle":"Merge branch \u0027A-MoreOOP\u0027","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{}},{"hash":"5eef11a0ddf3907d9fd70a7848f5feda44f43849","isMergeCommit":false,"messageTitle":"Package all classes into their respective packages","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":58,"deletions":20}}},{"hash":"5d28dd8ed96ff6f2d05f85e6fdd14a0dfefb4d32","isMergeCommit":true,"messageTitle":"Merge branch \u0027A-Packages\u0027","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{}},{"hash":"b3957d71dcb3ef355c731fc8409ff3273ac45b7b","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027origin/add-gradle-support\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"62ebd8dee67baca2fc798412801e6c1415b47d2d","isMergeCommit":false,"messageTitle":"Fix small error in build.gradle.","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":1},"java":{"insertions":0,"deletions":1}}}]}]},"authorFileTypeContributionMap":{"appleraincoat":{"java":630,"md":0,"fxml":0,"sh":0,"bat":1,"gradle":1,"txt":23}},"authorContributionVariance":{"appleraincoat":63089.188},"authorDisplayNameMap":{"appleraincoat":"CS2103T-W10-1 LAU ..AMES"}} diff --git a/archive.zip b/archive.zip index 681cb3cfea184f1008ecf94d9047b667220883d7..3f89073b0a91eb6967637df7d9bfc3757162c650 100644 GIT binary patch delta 767034 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 z zr-r9umop!ka84ERQ^FUlOpPeC!1ax2rBnaAlXUd@cqgJw@GeQ77t1_V#E^ADs;O6% zd)A@~6|Obp30iy9q~ZQ}4DK_W#z@ywTe6b(oM8!}_;X#kVDw?Fj57jrK$n}El-O#^ zC6fO60hpMbNIAt3bD1YkP4rH{L~fu*9q1)Zk`+m1qY`pZ6oe*y)_i1{VJ5*wg>z8^ z@fVti6qpYc4>@@8w90by)OoX3!#J_9=z!kLI8#)I&z678t)j;F*U_izvKB;I73Q6gSe?IX zH9_P@i}}^qj{-OCzZL>I(0`=Ua@7u2)S+&SO8Z@y72M9Vt(1YVLzEWWXXLkr#=B0M zRa4iR?*@tAOZt8^X|HB@O19EW;>+@-{s0U41`_r+cL_XYakPQi`kY6SK{LXX5rtrm_)2ywsY*0jPFq%XJYQB<}_?kTVn$CI( zYax<_e8rY4%$^3Y6fecCxjdU)_A(y$isTatcqR_oiwi)9Gwz$IZRyKI7Zp$oE9M;I?1L30drxzL(@?U(D_ZCk?AjB$qDiMUXY_HIffVnqoM1niVlii&;aKCp1N{ zLnw=L*}XABnzmpX&>&@jfKs=eEXW9ci|(E&+{;SI&62o#&Mv*UgcM`wz@G}sX!b8( z052)`RiM(xzCIhAesi&>$4QqjxkVfvqJReL`)9Z6#l3FigWTPwvaUf|tbEG*K09z` zU;c11mj(iW;S{$h##h|qdG=S8C#yasgqNPpervS(%ueS2MspK*v2CBH1$9>lW%e2|+BEshA1h3SKe#hiXh=@UeLq#hJ&@o$x8!}R_ zVe;iEXDgD@Ey>Pgg&g0NWL}4mPjO_FXftkaS~X4$A+R6VX|e=P(PdZ-5`I5tpNF*e z=i9QM{XC~V$U#{k|A_&;3&uA8$4bu0?}!Pw_9+JPa9q2j-AYc{@XZp( z8$&KCl!2y-=Ew(glbcykZlRU03NBdgax+Xpi%=%Q`j8T0RqKd;mS*B3j1MF@*VY4K zNUbgN5^ZqM69_xFjib@rCZHPTPX9VQ%gjHueSGx~?)NPw>%;8mc3r`?6q}B;8fny9S(Gw z3GTazUlNuw5czO`IN~-MqH@m@J<_zl8~h?e6HWl*QjcY(ivPkX0L`+=tAH*OzTf2n8SnRccCtqKX{8<^g)DGY5npXl z267kiljt03TNh0j(NTfaHGTynuWCi@ihknCD_hc|l)a6#RWq=~P215JaWl?zCD_~~ zO6`-@Yih-B9oeVF0vZZT^o+qnHNf>4-1fVfqOf3AwbRurY}aFT*AV|DIV$ zmyz+XLx*r6$y`m-ljHv7Ng5MFU=CH zwd)mD`GL~KRt#rz$V-2%oyFHZUl$m|UgI(}CK`Ong3=JIjy76zzXQ3~Y8~cb zEv~*HOIa#OshG_)L>4ZUKo-Mdz2*sSnCj?pRGH#jDS%88J?T#~rPt=<5&(1A0 zl#5HxZPd?Ui>bK_8mUCKhqmqxB!@)U1uLD6{5ALaRWY7|;0vl(@i3v<#6>-wP&;1Z zj~Wt3U8(7*GYE&&Y1KEsK_gP1yy%h~SrayJkK3_FK1+`o~1A-AA@#w6r(^X+$!@uS?Fv3;KNH7 zy(2caZ4{bsW|=&KJLr_2W!yP+l8Y^FAK6d@S$0#C9I&0EK{xsYEh@w!2U3Eqfjh>z zz_AtOW5FUrDuvBKYA=*wE19uz|CgzWE&A{^K-)NLGt+Jgw1G|BvS&%VkoywuW>0s!5|i+ z%9D$f6yHu*h&w(Z%eRwozY@m-KPe5pngOq|>DfS{7cWD_Ty_nPwSqb1ZmxyN_U*yN z92YB@#EJR%?=}zC6qu9Ri?kM!qz%Wp!nBI5KG5Q*&`3=stv`I&bYZV0p#pRYeRizh zeb~{T=+&>5p0{AG+KW2ZY~Cm&D#tJoSXmGz5<)wGG48mJct?1A+=8XQhfhk3?FvJvw^`}KvHe7iBX-17V1YqjfSN2C>tzB)#l>+=qr^<>2|p79P76^inM4qq9bAO+xPc=#S9`1!3aaSpv<&PSrE;ID^CsmW2A9b`AuJ zGrpprU5M?SE6V{%!e>@}MI+hPU-vd*M92mL<=2w$FQsp1uW)+E{y)XdWn2{N!gS?B>{D(`p2DM@B7V!*Q1ucDGKwF25 zqS(n*m?Hi(y|krrMCA)-U;qyM@M1^0&6g5do0R2Jd6|!{26>wK-y+btAbRMVFbm<- zkYt3f3zppb#q9mldKGGma6!-9qxMfiP_#L^yL#s2lP+BfNe*36p(HhOv72E- z#NJZdMj}<0^P=1}WlPGOG|JkK3uUFQJ(ns{Jx~26Z!a9UmD-LfJI19#cNBx4rl6W^ zrOS>&tCi%Ke5?2`#vp09vv5ebStI3#y3isKC+1x>40(=@vRDdFe}WdK?nCajuaCf$ z5$!$7<4+XM6OL6~NEO?on#*6t>wjiAHjQcnsQ-PQCYdfSTf=UNtEGbZ=*@@l9g(b6 zy%qa9>%iG^GQ|F5{6R2iQ;St(2&_?Cu&prx`B!r| zrPt$WrB~TvC&^>0q-)pnN3yTks79Dl z>5K*@_yC*eF-|3!S;bG6(mDzdQ$!w-$`A{b$$vwz0?l!S!Uq_ad2$`wQMk9D%~Ju z7?z5JLQHD0Zmk8GeftLRK&hX8ouc zPjls}GOF&w%g!2z_!b5;_`M?xy zs!e836VZHhVH7yULQV4&fa?-?pA9;Thra^Ebx6X5wWl6_W|6!q5tpFq(7DK=rTjBp zu0GqhT?qX9yKIJT=a)B=_jps1#dPq6%Q`D!G^PkEOf;rE$4`ctXMRi~n-f_$BTTYi z+3(v9T3+bvJl9ns*2(O9Re=$S^v=r!lIB}f2o#4k=s`zH-cf7Q9HNn=t&NNFko zth)BF@ru$5F#PM;1vyWf)qLn;I{JU=x}#a`tA$9jbz{_V6g6wk(Gn{df<^0D_~)(| z>=+%&XSp^n{wqy2*OsM<8hLsH_{!& zQtg&9aso;gUnsnhk&#J5j{TwG&ctwlZ}p|5p3$tPrJwryKRFpQMnQt$9KCdX7GhR) z8>;ic9z#Sq3yF9O_7-%HMJ0yHIZw+088^mGK$A9A5BU-`_Zi{ez%hzMnU=@GQ@xgU zYG)+Xfc$@<_HGAE?}fUp|E7+%TQKSfre35r2E&5WjizRkfv4cg8HGtlT|UsN@nGuaIpP*G>=Pmb(zoZY(J6Lh$CeZF3bj zNVckE$4hbK!F^8X&(BxjciGYaG?PMl^qVVA#blUcr;I88r-ECvnG5l6qMg(wZO8b3 z;m&*f-c2Gl%37RB!}UR-a`v~&U)YC^tflG??#GW2X%e>$O^eDsJ!bbioxX+`_|~Tx z@*_z7@E6YeoklYW=Js~5{CFsc zpWDlF_U~hsfVsOhJk1^mpr22GBH|9^BK@{41AyJuoe{`?4@-{*?vr4XwPV^l*w4BZfg;}gQkdL zJ_a>;gH6gOLO4(>PK6J(oorBrMwM^R-MHYK>FZfu#l>sgp1%J`#+`b5t!~96A(KzF z8_af@{C~qEbABLdEy#Jz-ab)@b=7gV@#-wdb{N!~IlIZLGi~%5+NN`;oJ3Y8e(}nh51R%3_b_O zJW&wGBmq+@uJNBy_2Rzrhap@1x~K^0w9G-+96ov^N>` zCbSV6HP+;h@8LtQ<77c{BECmZQiBlBma*EfwvpCl%l0=zXKUN>u5TmMbBZswEr#wD zA=MB(3v56YL<>y~0);YhMnl{iqXTF16Y`<_Abw$=^WcIDbS+d@``nlii%Atnmh^RG z|DJ*1twtc|XUOAU6!|E3A2^E(F0M|sU#^TENw2^IRu3-Q$tdryF{JHo@B8c1U43YY zsu}LLN=0Zl$(5r4$3DU%hNt_ry*YmGc6Se#r)wbZ54;cDxj|CVZlqx0)V=m}Td~L@ zXkO@BY&AIJ;D~Qu+oc8XG4V~sbB;nw*P?$m8|q?d9un@EKr_2CQBZ`e976WwxiiuqH zKjID8oU`H?1j@wnw{-)~>{NFke+Vs937C5>y{48+ODGdvBq~5x>h(|&{)7g)_&glF z>h$d^FKB-0GL>n>)#?j;?0kX$k23Uvh4y-&1OXAq`+pSqG8~N3e+kDlC@>o&|KrA? zSztc@r)Aap+6{1QQzW?Hq^=e?05dKwCg<^@& zTZcMe?EWjW^}u}o7lq8a0Au*SN~+@k33_YAG7Rs3xy+}BFc|-x@$V^2#(#0k8BZ{5 z|5fJRV8F5dca3Ef*r5LobSPoJRR4DlT_0F>K+}0cyv4V-7p!kb%DePZ5AXiRqCjBXF)?Upnxi&@a1>Hs5rR!SC2DpuYS90YguM%jgGIk zvbwJFo2&Y=>U*Jgo7dyJs=C_+`;Xm;m7N;B&->@fQ|>k|*C7~mj-YKuFIOMT^QDSQ z1m6(1?#p%GrT%7koz(BXu(&{M!zXHnx5t9L>myCODg25$t%bHbvb$;Pq`MD+@vYfj zNAKd+mHl;N=X%x4PlDcPcpcP~8r#Sk`aHO6&|J9O_ERhc4~@1N({8&6?!AsK)%fQ( zjXk+?o&K#>XbXLHM|JceR%n4dUbWWdMm$Ri-`LCI$5??e{ZlNsh=^4{*#-_m}^(;|iL57tNK8W(j26K*A$ow&z z7bQ*npxD32^o7;2Qf89h`$a)!I>rJzFN#7v zX8|D|mHd*)wjQ83<~Mg{LVQ9oC6}x0d0!rzgCpye# zdIv0$h^q4F5WL@raOH?2A0yoYs_V9rC3t<179BJx1Ks+=9+w(DQZzWnunLg=-$cUQ zbigd|vXl~VZ<+*Q`e#7Z?dwPBC*X2gHp!L3Na@3dQE+oJG;e;vV93TpfC?2U1tbj4 z3G2lt!UMJ``!&AWy=4#&IMbx!$EZzARo;1J5e)U3^X ze>}G=+@?cmMd&gOZEDiMf#c9!E6lt;$UrIC*l*OX*)uvOIYq5x+3OyGo9;>>geQQ8 zqvymbT+SjciYFU7U0n;mn+lur;tl1j35H%djEE=qAcp1~AM=oz)IQTG2npzmBTq3b zqW}V1inAoBO^zAOHQ5m~E`M~Iv2znIx9d_mw*oP?;SnToG}+?5!vx5A?bxhLA^0QY zzw0HH4na;Vc6~xF`7$hX)Ca(ZbYpNmR{Q^coPd1lYY|8jI=hOxVGL}bT~sIPP|3JW zD+Yg|DVEH*2z5Fe*o5%&n3Po-`{)ib-2=MVvnNkT*ng!UQ>Njo1{*LuG2p1HC}KSA z8H0({&6l}miiAnVo+OOryZGRy_BLeyB z285*C9;B#=b#ZMaIb0R~T17N63P&>qx$Y)O z@ZVor?o_(3Ox_gT-DTUy32=T`A=4k?_h3GF9#hgoRNui^BDcQ>V9IfsXT=~@;uhxx zFqgqz)F0EPpb4Ze%8lA$yo~VYn+j;Q)BkAsQ|08b_fxEcOZelvIL$Xls-M8*7Ddo; z1Vv2pKO^xkQOSX3f!fNy=)!-l$L_it3s(B`x8Fqm`u;dJ&Mm}oKP$8f3$3V5O)XSo zb9dwC;5AY@;6=kCM{TMk3xEl?WYBbhG6`dLFFzQY-YyMxRWHm2l_LLj6@h$nYrZqf zD>resk9^eh;7N4T;})y4i(?I_f!Y$rGvWEy;iKoH#MeWRXiDFLe}iFWVUWXotmUH` z*cDS#9HzGKPGY$rof}VMP78sEr17MyV+J=S5#Uu6jJKqKnO;bI{hEn8Z~*6V+7IqI zdWT6k2KmeSa=onoT!R~ctN4?JlVLw6Jp9O0v<4NMhb5B~lbxt8D2)WbspO58^NJy# zQGyk+Rta^K;U2H682E;7qY8vAx>+J^leq3qYHriU1>O8DMt-H6CJ7 z@t}1>+__~3uuGG=_c9UxfLiTU7hA%g0(3t%tnw<-Fqw@8;U$1i)7Ec_+phjzzoTw% zT-QvX*Vy^{!TL)tDLV^6AChC2LUX>^6XrQgn0^-1DP42OE2gSHw4brC(rMYW2WPEx zp6`Nj%@L(r-q)QDqZ8I>ULr? zrrvXMoAa1mKLhlso&+!&yZ#a)X%PAGyCkWPPzA6|?sPMs^WV2P zkW9<2kzZG1*ING=_A}02==yl&m`^(mqA5Boq#pZ^Y(3!}M{rz)oHo^Jng$NC{mL+~ z+}iA{_&|<&ahY8_8uPNx8f{vwJeT{{hk&VzAlVlNhhW0Yjb?dwi-LVGc;Z6HgJV!c zQHcJ0ga-hxaq53Dk9^OIM%BJ7)(8nr$V~`W4*cwX=sAv~h$w3B#-s-3kY>{aU`B?K zF;T^>GghM&g)!OE!LvgW#lN7tdO5qPNccu+gkl$(W#IpmS)^cSIz}T7uSbXi-4hLq z_)fo)mKbyrQPc=`*I5fn$bJ=`@2^!w`|{?u2MI{X4PD}Uui7}C*{Bj;(1a#Yl8s6$ zdIgom!(mc!K3G(kHsJRKE*>A&+(B1$J4jktWOR7ij6Z{)<2MWmDo%`*8}Gewjhppq z!gpLX#QxG0M^%H~SIR)G8o(M`awH_jbE=pQ;%Wn1W}Lmi_Zv2l3rJD&ZD9 zZ3nOdh9z0jcA%q-dOH!MNyY6lm^ShrBRLi(=FT@l`M&X65LGXY{<^vGsLMuNY_3|S z@1qX~0zpC?%pE~Rw7(W1T1xy#{@ND-(ztYhO9R&Q!<2wo>&-di!N#5uGpHGELDX)a zVTC<`V8rfTQaSa}WVL>P71k1l`EJt&(I=VGb1(oQ z$Js2cB|hAuoafzRtP*sjYnuT4W;SVV{^f8Y^={GA*hp_D?0by3(2x1*U%YUDBQHRl zam!!ePaYRF@;KIh=qT~}3Fo+P?qN3i=h^DjR%T-;wIiG>oWT;vhH32C4bt$#3d$ujdh;=g(_8H)S09%dhz)%Gps{ z#hLN7I6ny@#EwKYq|GtiZe&&P{2pND54+rTW4YveV0Kl04zmfAV^!dnej)!8#u4@i z6@Vc9Zh(;T<1FsOc&Y3kF`t!y23EHBVD#(XSMexLCkPobQCz zY3pyDfAqq+eq)n!>*?M^oa)Z!L8-g_^>%l6_xs4!D(Zm6T0-sOVx>7pcN?t1NqJa9 zw@BH#=SbSU=x|Yi*rsf@**g61>fc&${)}E;eF*I?`=PZIzgFln-X`RZE*IofZ+2IPgAHGYf2s_Q8lxs!@aF^Ltd4`wkxk&u!mJaC2BwP1G)`3#=J>{NJf5WQ^Sk#u zIR&ZiIA9ZRJqUb>u`t+pMSs^iogEHS2INMFA0#B0q8ZK~nG4+Bo1*2q^}mPcX>m0# zmxQbZ=b6?*GdxcVp`L(_;c293mI>KBuPicVC znX90QD2fnB@o&ZcXy$Mb5vu@8G~z_QK-Rz9kGjuIk8L+>&D>Bon{Fb8JKR2R+02$Z zQs?(C4`ZiQ@73j>wv9kGAztau*^1`V4lWY9bTAh*c{%MSBZn;h264Y;l z+|-a^we1eVZ6;i=pwGV-ZsTf!jHUwDBJar0SN1JV^*3)Pe=0Kb%~O6J*1Uv90AHUv zS?QCWQ(h+Q-6lNGqcdD?*IN!g8@c&YD~GT<$ZU4;63Xr1fQ7+Mj0PmfsBrT_upQ0; z_LtrOrVdZb?2s5OrYa6>R9SCCjZRPmS)RJHkG)zng4n)d zFnSALNKx2fBz!k<6*mxrW6VG;FDdn!A-ES_j-?sr1z=#UMPUAp)t8-LGrj3y{M#8S zzGUR!2DPP8-I&J5q_Qis8ZJeyBWLmElkW0Hjm~e|n_u?#h25htN32GsCzJt~ge)rt z1g_s<@^u34!=mtECAHJpw!amrrx1CmpM@Fv9MHI26BmUF*g=73>@}Xy*~-;Fs3Gk2 zX^h%?Falv&aUYbfdYT4-CE#5>ua+tY_xyFb-dcUe zqp|;Ng#tBv7=oR(*77NaL1jXwWknCJ&6o1(CcsqP9NEi#k0aC1(47axG;j0;M0fiK zYqP9Z*Tm0G;@1D8>YIWC>B4Pe+Y?(8+t$RK*tU&MCdS0JZBCqtZ5tEYPHz6Hd#cXq zhh4j?yY@p@clEc|w=gZXaWkQ2KZeCT*3#XIiSN}`!P(6u=Ht$}rQ#^9lVQYD7TS1*47%0+K55f3>Ls8X*7c_%bH|N#Tx$r2;I!V41~>$Jg%$ z`|_CQQi(^peuAmn@8_8CGZ+qpYzDlP6=*W~ z{Q^f{?Nh$PO#RPwt*4cN#e^#2?Be#C7$l?|qTh#q7atZqxs0in;0L!7wx)W+inJB{ z-c|hWjkpDkM-~%C9)RTTaR#H0{T%Jf-ZQT4?(T+rM{jFf$#0P?ALpE#3N$huL@9r4}3_yx3Q3+ew0vu+BsLYR=gXX-E%%oUH#kXp@@N_P7Y;Y@4e^ECard!4B4R@ zxs0eWo(J3eaQn67bnp)^sA$q&Lb&JL0NsZM)P5QZ9rp?_ zZI4<{x=(YD_*n=yAIRT~s;Ior9sb3%5MDPC5lvz{##iZ(?SVfdzt2=2W^+9}E+G(P z7n3goq2@%zHcIJ1WVigf_}_gRF{z@4hEN6bYTknIeDD5R@`(FhnR59h1-Rg&d(tLexcfVjm zV79dMtR(1d-^y}Dk{dg|x@Sa)*f`M;?V`4gkU5~1AR~)|5mZgLHt!*$R z*m|Y?f404tKmWK(P^31nCE-+mh?Gy9foI(ChJB(fVI90tSq47%Jle_Z9YQf5!;AKD z37~G3=|9T%UtVDvsNV@&N*!#h6d?=uRSewNV99sV5Ru>CHC?{{AW8~RB?Q=WD8~YT zqP#eq5XQ_N0pBQ6U~+zQA8$1mLldFhb)HyaPFX7??{5N*X@5o#T?o?M##Q!Y z!!R6`HTHw9lOCSRi z%m5AeR=E&5hwgoVZG*UUKbf)HF?*!cgPQsmm#m4M(KC=a6({_HB;G)=z^E z?T-TO5^Y3z#0(3Zam@VpNSPhE_hH_LU(39Q5+AM|Z?Befnw2s)AmFVMNA*!`5H9>j z-`WTfz;%&{kGv+{h?5Abf*lA-;Ce)MWRkTDtK7#(rufJF#=G?94aFsuTXx9ICOZy`jlYuXj+WyqqDRMJN@=~6!IT=3EW!k#0xIZ+~nz_u9DQWoRQqs7ujS5dp^*O^2|GEU?T5mq7f z`Sk3LYCpch03-N?0`}iKJASMI!UMVP_hoqTgSmZMImr_Sw?004B)-@Xp(2?%`9X4f z?n+PkSbS<$n$RmcwM0)BS-+9l>}?GOMKvM#@xbQ@c?RFJXkG4s0--<#YWW|kix(cy zaY{HDBA+_{n_3aDj2puf@ zHk~T?&B|QIMk_Eu6}45A@KsT8;wycSwQ0DTct0|Wow z-E}{^Z^XP;kWN%2x64;*&Bs624)Os3_8=A#^uWMRzw17mLGHT+$J5MyC~X|v0rgf1 zal=iN4GeVrlydK8;P?utO#pA*ltoaq_ejgh>pqZV$_@d#4D_&>135IQId)J4Gf}JE zKnha_W>X)3r#_QSPr+hIPB6qjjc%(Mo)UdO$nGkde0TVw-ua!-I}@x5qK}Y;b0W{F zN?4AwvfHvm9{Kib)5F6KX)l~b{mgacm2A8A(9u6$+e~k@ZNs2LpQjM12)d*a|d`83duly>F%JGji3yrzWlVZ0p9&9pv;G>&5iH3&ZK zI(0l8M14|pLm1hA@g^dlTBB`s%v=n9{h_&2LV0R`{-U`#k09p3gF`qt8=An_Z0NRB zZ9PmTcra|mE3vc%p>#gB2bqqM({5Rr>BmwCNznqo)vGl5{EB|Ew@^=Za2bWj=9DBl z{?lUFZiYOfn`o&r#o@VATS-|BikNavpF3$9LySryIJ}yKgkjyq%=RX8ZmAVa{-9&G z>U(+xh{FE_8!$)NZP_6eYnb#F@OZt#A6O7_;#5r%zW)+EVqGsm^;kJEX+Sw$4%8y-&PN(PzX^2U*geU+cMu`I z^S6LajR{zLJt32Dfg(qGGDsJD5FvT{uLk`|2>(aPEX^)5w4({E{1VnC`b342^8#)R z1+T~+6P?D0`EN4`?}cev5WokT{9p=%@&a70D-Hfyc}(%PS3j+oAmI}*5hBK)J(kMU z>nEB&56nbwOQy`eOHbtt>}Ik zHB^iXMfFN}H&_CiF-()zFu)gPu6UHcS|QdixRbLc_r$zthO2@l#PrcfK9Ymc|Zb z!Is&pOKd*)px>6PTN_&F%nFcK`xKWiP{LtXux&XN3^Lk}8er&IFE%5BRSG8~=UynM z2(ubA!T=FpX3;yU_z_9{+uXmCeFYC_@z(KY{akX3^{4RyW;KJa-!AGs-FZ?b$(s zTX=7dy|5J^RzhNO`g>kpxH6jwE>r;R491ZlI2(zT))vUI7X!;eDXfRTfDm|*H0IW7 z=TH*ZhqrLbJbRlP*g0S|tYAM?2=~ipuh$Qj*cf@G59d_#__`}A4$+*5o7U}(ramT< z97JSAl8LBIeuWk__kD8SoN6I?Ao7wjStHGUje_~O7$TNH%Doq*;q53#5P?gi%*7}) zsoKF35f@srHUB>9RH^3~7lJ4bqm@!nvNB5{@ZTtCELdTe?;~&%Pcec>K)-|xwWppi zmIs@AVyBsVQ}2-kHcbgSbJ9}WjuD4DQM9z;s+p}5J6F|!CEjVfdxu~qrI#7O(q#m@ z)O8SyDolhIiI*)Ui~c#sYWuLY%vik?XJnD7OXeIsW181ikv!9m#re*R)dW6Re04&B zK3aEG2hYE zw9#A7juJ)x!Nn?P%I%=Ti|o_tAF#mhiH2lZKk~w4Hk~NKd;0K=!2Tn4zV*kSlVSTe zyvH8chn8*+8l2_F*0Awz49Dgc z14Dbw!akk*+2DSMBR9~@aHy<1!8ou-HyUq;KdJBEr`fj^qSfKZ3l!Oz_q0m}7Jp&f zcA4ckF;5aD<$tffU!43nKQSa+PKe;nMpZaL z*$57cHY~}W_pahE^HhlZjqSQ8zTu(deVuQ&%GPqXzi;4@Ky-WZEBvvDYHnTuHy76V zb5fbATDJVl#n^OKv21sgj^4qXlT!CRgo9btW94L!ul+*tJLok5!X72TWB}}ox*$CC z0TZwZ-J?)GWj?c3X@5u|aaqd4*!}6gGz%kIc!io(;QK0W*i8WuAV@iWcYyLC?Q09b zusYknf?*X4goMU2y5evi$FdWXAb;PUFDy`pE}@Jv)Xhql$FIEb@kte3xKQEU*aZQ` zUL`wXU3pao3yp^Ws!{J^NBoW6unN&200@iznG&7oeNJP!@288WKdL{Mq8#R23Acr- z`@_xmh&Yp#5&q)n_@9~M?$>B@e01a}s(qSKf3Wyh>~8Ar+$f;Zxjv={VNQ)vC71>~ zOn**?8kbs_EfWu4V&gp)A+cjy7@{j@6X*M}~TyCCbnSMuBeyt7$p z7Y*zm?3SgcJzGLp18N|ue4-MXH+L=aOm#a#4w8+=RfjkTRc(LADd#}tmS0l_m zMfLj!>wHas7v)cdOZJ zyRBQUbxnbe8*p@{2?Et`-+yXAj4z460Ge$)HSqnyxQ9v$^3Z01i9emO{!}UQ zqX!Grf$8ir)x7}AUGM<8%`uXf@D_SQ$!>xY+|4bM zKaAuu7Up)QGrWCbnIhO@1uu%`KTDr2{;Y}S_4PpD2-pY2LZx2P{KNujQxNhc6BZFj z9rHQf^14}oqtnTO6Djp)rz2q?T&EK3H*P{*5Q&Y(#;n+8p|LOUEivZ?R~<%BAAC#l zY!z|Myzk+eZ$)5W=8g1^z*O{>i>+?0;mh6lUEHcdT--w4ulbOjh95mIHt4nMke@=$ zh$s2=%Y+1LRMe8w-EuwBHola_;EvC378%okIt1&iWXyze2p#(cyi3#kMju6q_9qkQ z*gAfN7@eRv#rJDqG{zXKVteiAAvOpvNH_qJ3j}JQ7(eMcK;SXq5s&Cde+9a2Byatn zqMZ|U_YwXmSRvjE;`lRTay<3>Jp67LVl4Mc3-&^sdupjX*`^^bxmrixzUf6KlJrtl zUMIpceC35#cwTv^Jtuodcb<3q@!8K;tMOtEEoi-UoKvdO9CN3@7gN&R zQG4+mLof#j>WWod-A&o~b}k%!2^Woa=&nV6VdLn4IRFpm+bj~-)?m-$1mal4{SaJ zq=`hx7Dn-FdMM*h+sBp$M!^@3hdZAl8d%Qoup}9zC4omf9|Cv(teiJ`cpFJ9`hI5w zh=#tr9V=RC+rlW}iOh$fG?9pXO%Z!-{?GZ>B`U6i|G7cwz8jImN;GU0C7&ax6p>^U zl|*_#y30&@e(Z4#F^C%d^RD{a&nPR=sF#;8C2mVIcZ#rE8VzO0;KR9_A{)$q_$UrY zLbMuN?>T@M)h`tLeBLI1qh2gn8PhYaEz+_ShUG*VCQQ&!!R|fqt|j294)m30F5^#_ zI`+<;NDBBrY1=~DX7yb{oii8ivBHx}Ny=YNgNfccAEX3@;VsJqWidaR1EO?q%h2l1 zWRg9);I=$02ce5XH^Z=3QHt($9n4DaZ$Kvz5X%7tXeqkeAP)N3W7{1v-PYDeUS&x?3lgPX$lHe^w)^X>$la~w zf>GCt6@yoMw3g?-uQm!anRes8kmTw>s26V6W(`E>Q)&kU4MkXLIGbu}eAx!){3<98 z)rN!2l=}P|y~K5b@XN%%_)>Nz<=kO}*lUz=ftj6nacW10Uw^mu~Il&uPzLEjn z?%J{Zho|zAfkXMp&T5Vob5*eAM0xHd0qBqH3+6~3v|**HWj@_@#{@hyZEY}Zyfpq% z?GX@WUgOdBc_B-TX8ErMFx`KtE@Z3$cZGR_ea4lB#c+MFQ|Sr_>gM`HL)Y2R5gEez zsWYC^igt3kq0SYF1`TEcK9I={6at&iS)>`G#?bEH$lLJupl@B@5$BAGtQUO?p6zi; zwcOtt1^gclI1H@889;j$i$NZkn*ZelAa9h>7MfUkf?m zY<^L7t`mqS#xBDCw6mk2UW@44MPn_Vcq!^(Nr9@-1qQYNc-_w7arqb7wKJfY` zGDz@j$QaB>>ds$RCtepv`eT$8ffE{7A41mHhqU9ZgPSQ69|}SD@#%m2BH`_AL;u{q z*v_vV-tKy8HbvoqYIa4?fGQv}gdXx|RcSrInNBi4(8Hw~xo;jq6un%A?&HKXuJ^OO$?n4^vF531p;+Q^;PvFub1h^o1 z!E>x(#Oo0C-^@eY{ENOFMOh0w2^9Z*X6Nw8%-Fsxcp7a-bHtXbVAS4T;NrV&-3`;; z&H#B!!S!d%RRcdB1aUX?Co9Kor8twTkZeGlFwLv#{i(a!mfR13t8zMt^Fd3HESQv7 zOR!z(Sfeev`SV7`B4sVoT6?90XF%7&99z+vFbZd(GkgD-f;OTdc}EG|9$BKJs9R>& zhHTFCPsP|R%(E`QQZc>fi#{mq9GFT4C`CF{H;6PSN;KH@dH(zerR@p|z4plo!`=AwRNnNEZm0Y?ll{il+ zjb1t?dvzU?ez{5-+X+>uB#z41YOBpp0fYDT9=J}&V2Nu|3k9yRzT7HtcOMH@?3;9| zdus6z|&?rof7qX}7udIr;3g22ynFoQvAY+JrUT>GFg z#%dY~H-f|YJoO~G?EP&_MAEgQlns2XElqZ`#1KoWi*KmZf;(g85DeB0 zlnUo(#w{>-StQDyyGu8bUuuFZPLDuhj+x``zF(f~>uRJ@D#p9O$~M97wt~`ZPteN3 zSQOMP1ji#4Z<&y;x8>W9g86>?3bUXc;)q>dV^9XFTvpONGm<&|6I4pPSE^5xR)lk+ zh)r@0|Hjox{v8GjWjmcTRly{K!@y6^O@C7677;LrD*>NXvIiMEA`rR9%(N|1&>D0n zDsDlTb>^AvG@OmQ5H4Sfk=2_rbs6Zn+a&%b@%ROnXN!Rs{xiIM1Qkd&G`OO9YfJ|f zcK^FI6f2=%i|11pb*vXxkFcv6SMTFT6p?6(BNaD$=)Ex^D|qoN4^L z{Rq5TK$u(y_x|>e2(*j;eMI#RYPNJdV(Xfu4duG^dzB?j&E*^OjF``H#{C0P^84Hk(I=PUwRf{bBWEC5B-oQl$84&`ma@-P6jZxnE2v^8g|IJuZcb%$Imwa+?k$jxej zaEgveD%r9IuA>|i<{ze?56WyPAZ&@;7ApqNVkov?3nHjz+uG%Zc0xrgZzK7J<`Pmg~Hobde&W(^z^D6DljQQ95Q5hiA{%aCwh&Cezrvm8aBm?s~onI-CcmGr(JxX9#NpY!9HPQBTE`aU7I z@i?i5IC9bGaPa+3@KcEvg|5%X84DPsPS39n7Oz%WD+kX8PrF%(wo4VkHUP1)N%-p( zyiPPWk?2x0m9{3kkPTXIPyhrEV?-31gF4pg7?H`5DcwOX#h*?ntv4Zp+nIGtraEWzGB7?9Rouk}oc zi#(TsrZst;jf0VP{?$EJ?F0sBqMYYA!`xj)o(<4@nRE{LckV6)y=5ZGrv#0Ub8 zkaw`&;W-hc&fze(S$=8YKR##ijW%ww8i0Sg8m6sb*#!wDj4z+)@Pvr(_Yl*8`1eIxeG_aosWi`-<_f;bxuGj4}0GfnM1WpX_YqBujH56$BiJuspr>J84qTV2W~~ zzkS6n^358c(OtB-%DC|TMh~~^-0hysr9tjr0My7UupZ2%n`_<*=Z7eBEP`0jaXy!) znqVPOLCixK6L}~(-1+K&nSh-v0TBYP$M4_*mr>C8;bZ2v;jKL{SW?0Giqv*n#GZGA zwdNQ4;nP}d|IcHHH2I1oQu=g20!++#t9i=F!RseL_V}tuM(+%1xE15oIVxdYZuz0M zzGoki^RqV25BZGDK#D5*ywyT_^=CU}-<}Eb&7UNdD)>h*Chk6ubxLoK(;~ioFHAYR z*~hpHtNPG9{otyqpQ2+n5#6;FCyea+sLeF}Po^S8c(AHSzq!0Wjk~gwqc5YxFYDny z7F)Ie(xTa~RoKY*4$-_?qCA$bJeEZ|q$@Zcu;B;U^X95H=IAZ*u9zSdhrN(v#*ztf z4chh$)o)o?buE+(e?(f{Sgql1>@_y4rOCJO+1!Ui_!@v@ijyL(o|t6tV6{k7Jm;d_ zND;ix$|TZ9v8uH(Mg4LpXGayRS+P8+%wh%<)H%e^*c_7W9?1el3wwslB zG;md_LQSCt|0VwJvaHuzYxsA6C>OI(JZ=>xBZ+-yHmFKS|GBGoqwS+&EHhA zs7l>V?SwxswVy+n=X-{+_I=n1f?>R?3a5-Vo+bHj>$p2DRCMANFoH4_Y$ea#xRt^{ zsv8?NghFJHf3iZHU%rG&s`+$2e+B_t7@Z2KCgp!hb!LuX&hs2zMC0GqxE!qiOC9t_O#Y7RpcLwYaCizoM(Y9b{b#Bjk#Y z3vx&}Y~`SC@AXTS`<@3YGaG~(xyO>~fC&VAnjPz`QPgd1>Z?b4BV^a6LuUpU(pZ$8 zYz^OV&ep8rv~ASDLt$bU2?{1h=T2DNepSXSG3k&(p+FEtmWPHC)`i^BEOj zI)t42y+_KG|C(E7_pmi<0*DcZ-KS&SzJ)poj%K}@xgJXt5!>79+Iw4@VOs`8=H;XE zr5w9ru~1{6{irFy}2 zw)>HL_B!7ARuzBYlr9j2;7eI(m}IG_JL^buAvNG3#LbJ45t@F38A=2m08JHvZ+QgIxk{%wo9)gS?PwQZGvhk;1V=%)Ozlf%uZAE)NFyxa_aVip7~VsJ#}7HIKs*m9H6O zep|p1a-^Pu_40eFbRPk){zv=@xL>yT`ae+g%I4F5bXe}+=W)=C;f zzE+PrLwjdoo~SLP!|4L3aTh`B6}{S?ZF^k{;3C$#8~qlEspP)Ze$kKv#%k)LDoS9c z!E8i!QFnb<=rfQI#(%-mB^AUnee$!oaGH^9ACQ|>xDZs?m(a#HDf2|PjIP1(+H?6u zsOS0Ae9x~@&^cBFqq<;-p9W)m)g>2%#J3E?a&-?+qh{c>zp4W)t2nJjQuQs7k!0%R zW`}?kelGHq7gnqOzdzkf)t@uJf=NczV+FcaAes{ya(5Q9w2I(j#8rSe2J=?$$0*&W z6vGZ#vD&W8AnG|1gkVWF7xfC^niips)372en-$k(|Kgy(!m2qOO2qsM2#t$cH`n!4 z)!v>O5=Y%Bp{9W1QYYUR1E7;n6*Yy1h_(qo7WpkDkj;MTSL%@b>$tW+cZ|SovSIFE zrGhP_E-l@yM;etDsCiN7#ci?@6IQzsxLEPKp>P1LTmX$#fy#JL;P|@Ra@9fPpohMC3%m1>4{A-fU&J*X<8C@ax_`I_Mrm|L zxm8w-mb}S^Uc#NWqNSBz*7zX?2lAjHYZW5Xe^I4Y^8(43KSMsA`~1n`wdclb+3p>C z8}(Qv3d(?ROZl|0or$+&Z_ATBT%7n;W7$ebi&;=lUY~JeM5%it7bT^zYBt9nojXO1 z;aTni8C??NzbWWWF4ZMD3!E6bTq*sU+Dli}^u2iy`5C)=n9A$H9edKuH>MX&BFH$2 z5n|oj{+VQW0UX`?vd-fj9wqeU<>+dExmx#0Y88Rhuw6C?}3q++`R7pSU!Y(2(+zO066YWt!r~Fqz8w*DY#0fKsD%ob5JgwQ+8gV(2 zsT?ptY@Fh;opsmN?mRE2K|-q^NXqn=g)RyLl7-iyz==?P1t4qngY|hla%s^usOQf+ zvDg52j8THN(^HG1)563ux^_7{y-VENN2JA6VC}|%yg6Jp=9b$2e0f~RCtuW!cWNWp z&I{yowC^#zw*~Hd(pi$ZqqZ$20#az7T8-usqgZZuxcE(nw6Farc=H=sxQe%Wm`S&y zpqHapz^KCEWBls4?e}i{T^p94bS$Vg`k3mSe~dUs+k?57B_FFd?*!VxRKUZPFIOUc z9|)4EoZMkd&c36y@0N#sHerW{<6WEbi+U%!mvfexjQ|o^E-nG{pv32!VVe;;nHAu5 zJ3^-ROGY^eopk8*M zk=e~kZX~Q{lKs`}u?}Wutl=oKiqAJFFrlEm1mkh1!^d236+5#ufeVukcIlh zLKq7Aq__(6m9T6{uL7|xqc9JXnp!}Z@y9RDgZc2JxvSzCJN!E26;=TVWs3xy*#bZS zD{gIL;xQ{Md$RiN)af*?f(y0%j}S$hj>c|~-j_|U9t=%yYBxL424P90X6iBAV)sR- ztycUCp&Q;>1D{vPEb9qG)ZT4xB&D|!<^btGn{^4&l8do94YMUn(%`RcogzT~wPlDf zaZJIZCMs&-pCQ#C@pJ5+Qd=u=iv%P|6I=zkQ5!Q8FOS+s-^sgCH`?I#S=UF@s?huW!pQnJ)(Q zfFU=KB!Zl^aLrY-eN3Ma!v?@)I2bUc6F_iPH;`PIU!9b%>!@mcT(6b}^_|-r0N6wa~D=jh} zy$~|%h=2OfiBP&3J>*M5%wU1;2g(Et_+MR+Dpahl14@E zx5LLg&%q8=D zw2#EcQOa8lj)=TiqB-vF zJrm*d|5bQANJgEB?+2hn(Q?j9T{fKi1k1=Vq|+11@OqY5=nN4R{xUwMaF9CrZG=Ux zo8o&k{fJJpsiBKAMuOdL=2;w-j5>P_K{Kh5Bz+FC5NFz`zKUOr4Nr=xCoMeZc?1nz z+4YA9{mya2&1{qtN>?9Tnr4$6w!9G4n*JwNj(~<>QRj(45C))k7cyXMbS(aYVE|)s zT1Vr$U9MaSl%>`tX51C5`C|oPXjjsyVaYs8s5!=A{&koRvZCz+FF>AoNY#Lf`*`+k zO>h2 z^TDyJy}2`qXmno;fxd9m=s3AFbvTLWL=jhrsGn^F3$5-yA`~VfeT$tppkDYywXg-+ ze?EUz=5riV{#{2`ONi-_KaVaWJ7ko>T9|*+Ui?!p1Zb~$QW^;{2VzoosH$H~!tvY- zN;mVcx!rJKY5+dOE|jdW(bPMnZ<61VBB>v2AmZj2lJbsQIcf0*Zs3kX#3N1%s#4YRzZRl+?h!8V4GMR_mGUEIp zss>s8{DsR8On9)lM5`RLpW5{lDkQi~B`$2L0-Zh$XV0Ek5|^4nF`jIa|;s zni{z%CIpgic9_03{2!q^0A!2%L3j+L#du#T@Eau0+q8Y8@m^8jk5MexBTDbeL5+yQ zw=rA(NC{l7?tP1A?ND|2oc4X15Mm;!VhW`$&(>x zc_ez~)h-L3$%0mndHauPc`T=gL_sEqJ%~MN&3}LU{5!OQiwcyUf&mjW_9u z>HYb9=27Gn+r0M3oPrTM96+h8oSY4a0EX?0U)h-Lh8Dz!V^)uT8iGdm-C1-ES4%3^ zv?C3;(LTEW$PSv=lUe+AZgSnfEAB#FVf*b*&M%(ifJ~l4`kWYMj#0SK8R;Aso<`z| zKh1Sf5>kSHiIY;RA^mlB?4BT|{R5~@TUQu`X2kho6mwiIiD6C{Bpro5Vxu`7O@JGs zeaCO8ZDR_tN8~f9tfr{g%0u#_gvtw5%!yj5<2tXmyaK)6ml>n)Z%Rz0#UC~yF07$i zwR4is_%1Aw8ooy+$%dInCVnWH{WUl6xU-{l^@gSD${2ripc_`CoNi|8a^R-!sj*@I z3_u_I%aiZ76@KUQS(jCpYT(+rZ2?~C4xnFuznEz({z~3Pzr{L%Un+CRDm036jdk1Z zb^ZUu@}|;@{Wj?={MXp$fTw;1o$TtaLJv=#u57`pIiVq(4wfv!8~q>49l>Wj@(zJq}KFs-i5ix4A?~o!(K5U+4@7W9OUM-z#N)t zNRa6L;bi+Ck&ucP?W;7V^&gGNcZ*O)&+VKE4TkXyaE4*zp{Zy;Z^x^*qXH_91GmeL zaNgdNZH};UjbzlQOgw7@}1>yL5*uV?aHgf$I04u~^-3Q+RY5v2^zh>0~9n zo-yo&+>-cOv6jeEid&0!qBdumqmppx0>$Q1gVopK&zw~2G%^O9CnND$Di`Kq3W586 z$_SCZk2gD9=yYaQOyLORbotwg7o|ZpPE+7i2)ZEBJ%=9(*NXr-g4o zs`F8)vn2yr9?-G+%0YY$(~)Ux90lVOuft(ZE+ z&!k*Hkk<3iR_@kggIryM$RdmBik9NR`Jr*#nm)4apesR+tE!Yd3F^??#&bDuO9b@DPd^Fc(aO7CT;i?jTBd(PVony=)A^qnZfL0W=(r|b#RGSi2ulE&NR7IHlB~6 zQQu;H2#F-)ivm{^d@=J$g?<&*qj+f@)g-*(u4s8_`EIbz2H$)<LSY!5EH4X_5#^JZ z);Zt@O8h?z$hGp7bG1|!$O6%?Z9qH{LHW;F!^vHb!MD=lapFpRgyzEdJooM2ZBQUz z2oR?d>RmFLC7ps$1aoG1(>g77Dz5K`089c#>p%~Wy^Aabmep7BT3ly%LZWC}RUhL$ zn{FGw`{kl4M0To?^^Sc8*JSK}V`s-sSqNNdyRwjvgDY$*>`TKxhDMw85c97U2r03P z@&BSN_WTk({0R@3;pRbB)c{W0uWxLbdK-SwUV8lNw z8Bo5TY#%{NTXztVI~LS05kUIG+htypIrH{=u9p)iLiU-VnGyYiVN~>FD&I<9t!!*G zCV_|yspjyWJ6*-9;8$6nGeStnjswtm)ffFq8vnuEE3^5e@nJzu2-jvnd2m(a;gr8KPES7A{o+91!YNKLNpcWFR>&i}kNLFSCK*8)UmCV77L zsCOcNsXp3_FI$~XV3Xn6TyjmbrZ#N`H(|kWiONs;&>9rOZilD9WP;us-8lC7*DN^# zM6yyNxP+}-+Zre-g<9qRkyz$#8U-zer}~^7$ja6kx*^_rEMv$r-{}|FHF}aRTni)Q zy99G2E%F{3A|+U9lG{<75dg1DehjtfBPfL%4b~EetE8dQ#4@$!derAww#`yht_`8m zM4aZlzWL7KCJEtTG#u~W(CI)1Klf9hST|gzS{Kk9l-wE|HZ@=>7|8C?3a7yCfWpisY}-Uy_?(F4#2o)j(IvH?6} zeNV9g@w0=0xo~tfI@HezbM{z9A>_W72r9Ip>7Aty(Umuo0Bys&Q%U0RI~ZDU>!3BBbL^$Jx40Ii(BG_)7-}7E(Iu8*!&PSId1qt6t`G%+@YY^8F z;}k9QDh{_3yPq^sK065BbtnDS(?iS~PJ72Yvf#BIkY{|UeE(4`wvcA$Sop7Cu>2m?MVf$Mf6b;RHN2R2 zX*C#;lA3{`1Cp8lPNy?1-ApKw3RP?H6!-{$P~qyP6}G#FuS9&+n#ISc$-c|58U#gH zNO77Pv+=& zmWY(rn5jN$AsjM;MWgVV_#7l1OVF=`C$Y|K*ejty5~D?wTSWGMpU=8D*G;eueI9VK zxS-`M0FNhx^lc^$6d%5UONc!faV?|o- zy7Q)cwm&~;3QrIF@BU(eHy*_CuiF10`%-HJ+H;xUA+3anJ}m9Vjs)sb#5$hmOqE4( zEz%gr*D`WTHR)e*X4W%?sZe5nSd%1{(bGR(s!P%&OfmR*^b&Qu>wW9!kBzKo?3Xo> zcLB5v!n~kjT|tK4e#4LF;Opy=BL0p-na_XTegJ(kt+ov8OEiVTG38*H;JMjG6(c;; zw9WsSF8PR}6R(+;+pgC3bMsblvyn^F8b=k3%W#7xh!l%VDo78ju@?dT^$YHwyjVcRpCcQaW zG=$Xq;HYP1rOwCPtdFpX6oOrQ97$bmVWVip+9Q;*(mpn-7CBabqDb=N6(VVJ3KC$z z+luUXVM7SL9i4x6I0GAWL|mWpO)Vb@ayg0fQHuY#G8SUDHr zSSQU*P>IuR{F6o_d8&e#nkV&$6EZ2O2mu<-3%JV zZ&zLk!^sir23d8Lt=~IMhwgS7YOgS^^-zkvjZy{JV=VC@s&FGTgO0gFAm<5#U|gAI zH7c%QH3q(4--GhWYvi6=xl5s}E}I#d8WRRnKZt2+l>KidSXc}hlw+RsCuQW|1|Wg;ef5$!L2YIf30D| zHpVawhY8rneQG3&Bml+);)+I%vD{z;c}0*X5)j)29q3= zZRpiRo1xaF3oF7MejOYNt?BW8gqpu1#h4M!PvPGzls5+HKa4j^#+iip_Kmh)qFtKpn&5{9D07@B3 zy`&tb{6gO}eGv+?XebH8rVvdc`cAx3m=dA-Di^Z2$(zep1gkcfNm*WFiu)Bo={%)W z#QMfPn4cv1t>PmHN-%nm<$Bqu;P7uY^GIYG3$laqFB^6)-Rv@Oj&vJucT^Dqi8O?% z&Nx)t@ehrc2EZlJ{Xl1AG}xlb1F%E{ZDm`~s@W*ZN>zTDF=q8MUOtdZ%6DeA%z731 zt|ZO3e=!%_9I3~vOLc8{X3~7cG3(V_NDjC5q>gj|XM?oC$?AfFRXQK}OiygtyBO*J zeUJ)UBCl4r(9cB|qvNlZG9p*NhY@KC$?=H6Wg|J z+jjEJyr=3^o%;TCty#IyQsRY_t@ro>;KkV%g;v_Uy=;M-(uU^)qsW1BAeW7_d*MEO>MhNYpVVy#Ukc z@Dlep`L{_TI2y7G&r2T97oZ7!ZTfT^^OK))42GXNo^RaVai}-rd?pv>I~|`m6{QEb zitUEKDY;V5gbc}~`u8t#7fCTy@WvR(u)SVsGYM&-7nLD6AoZd21chn-(`r!9ZZkz! zMGB_wy54RL8gXiObzS{vOWqD>Rw!(ovI2EhKC1ru<7ek6vd3;(rPyjI63zE4ti*achVIoPbDHUvoLE=WZ2&yW_*uuXnk|RP~iX zqNWb@0wXP8AkEJw65=yvt3E0LXCXd}KFl%3ve}a+;(EbaTtIy(W4PUHk_ea&)UXwZ zPf*J0HmiS1w5$Y)H)c_~>NkR43k4b(*HrjF!i#&W=(}F(GtIfF;FgpUk>dKhFw+CA zaUIW<{1K$ug2((Po4<3b9zT7sW4_p{ar&zJK=C&mDBc8EFf-vO*eR(@{tHBmHrO1e1>4RIL)sv zh+p3`2WwL2OO$kuTas6sg2xBqzD_$Jo```YtirsITEYW~Kb*0F5IO0|&pY~40)#N+ zEz5Jje$@rnN@Z>~HR<_Bm0wu74PY(9j&<8?(sV&nL3QU?+m`UV=03F{2>vQA(C9B? zv`|bR)w`!eq!ZXuc#s(|bQ0B{06}K3VXQ_22-i^1(0)gD;zNizHkA`iqy%KR8I`g> z!_0tX=$)9m4rw4J)FE`*q+jWTfDm){V$Utm_nUIb5WO)mzuMHera@4-H-jousRl+1 zrE+nJXf6NrI4gXFaiI9U$xZ*z?u)oyLTRcg6f0+k7T~K`69lpdclvR^$%UxwuVIBj zS!DwIyA2$|up}xgpO3T*YZ1_!D8;3TA3nhCuWG2?*Oe*+GCvo*Uhrk;Ua?gmy$}ir zLYK9Hl-4WrAPHR;t2XPbT%e`(O>i3fthRpp7`%^uYE_a9ZOR!Hnx&G_H@%Y<(%p_k ztXC`^!kGpvuIYOKrI-v9A?X-a%~%dUC0L@8K|z9|*_!mnm=qxEx%4?PHN?S{@{~ma zikTTlyIcAf>tF;;p+%~hITSM|O$P?BycR+~2O<-P!w}{oV?7+VK_IFsNTK63(fi7s z4%?9+b2wGN@)tRc`f{UE3!3nlZ+c8U;-SPP6EM*~%^(Vfp7RA#i5PZ26Y$X#Lb#T- z;br#qnkhSeRrvSW3qQ{KKwg?#tnrSOhoepz;tZtKY-0CU2p4{l|5|Ku58nq4f}JwN z9Jl6e9!fSfs-~GNg*2{Jf``sHJM<)oXeCVLV}u%^xDS@=XvWS5_h`mSw6l7(wdP{X zCkOD49tElj?4drH2HrD)P6H&wv<1r_w1J{t$?xg(VzzK2Qk8p2sEQ*+0lTxr8k52T zSS&<|f4i{ts?bUb;roJOqXa<5cwebt2IAy-Ou|?cnBN672flHhP+}fDx54zLWnIQ7 zQw$NI5R4#0K3Xc&k#%@cp~3Ni&fKCRF$oLn?_NW-vAAv(_6I&0auuc_4s6)tRt%{< z2PZk{{pstAp!UBk6gD`*7bro&R0L}2mFujTyMtJ@H^?~RF2fGc`$~aNsC6oGb}sW` zxB8XUR&g1z@CFqDu@3t|vwGS>oN?4}x}33)Nbu9*7?Z86NQLd2H;Abc0n&7VTy(k2 zKEp`Y8z}HY&zF6AT>arL(K`yL3>#iP1w%)96~Z3- z2+QAtQi3oE2l0@()uHm{@j21l-AUh|B%W|7A?ayX4an$M2QQSvB86J(5iUCy)2z^o z2No^C?-i{kl3-yqfGV|aJx04Q-G|}lxRN9If2ns6WJ_zq>kq)Bz3&lz2x#VZ}<$Af-wk@Ln6c`m`vXPSc5zN@A2IbZzY0+swcOl(q9=9~7n8TcA1+HgxcG8lF~y8jc7 zRsgQ9!8_+%QOwZk{Lcl=UM31QBEGi@EYGL6&B zVtgRxDqBr0s4NFnJ8Z0Z@-QWY5|8zAKvlFi@9RO68Z_0vrHtAcqh2qN@->~5uPy-R z>&eO5Hyxh^G~bMXtaLa~Wx``}fkgQ%%~6Lkbj8=A;8By=3$k&SRt~a7UMB4ren6T! zfMNH+T@;d1iGh0TSe=|&n^B$Bd?93(6?ll8OGFwU{I`*5suNYF-OBgCC*ndcdeREv z65;U+|9#iOd*}CaDWcB!av_n?=KOENv4FMJ*|n6}4JvG|7C`m%0YMQpn!p>4!Ln3J zuiG<(9^3)3NdTCql`uLH)vV9o9oZ3qu!)`YyKA+Ffos(q%9Qb!C{6_PNo+gJNk9aZ z!HS^TU#7p4?1BXueH`jgu`sg)Fqmjd4a#qHxs83%35HO9`xO54J^ZOKyK7_KwLmit zzCllE<$u?f3)9$5(D51HjhTV7R{`F~mb=d;IJo_ysi4rLv`0Px5owwT-N#6F3=Dpo zu!LOUbykbWqr5e_`KTU;r0Fd#WK`!TEM^Q5XfiLL5j$xMH?}f#k{i^|K>PgoE9k6< z{h@~fan1SfHdolQ=1`WEqwf#W)<>~2d3(cNZw_pqWgv@L zK`di4`nUhq_ zjT@mX}4@BpW6rG0EO~Jq{*l6ik8AapNRjz5M6*l!%W4(h^GEi@5Voo@((kf-r zD`Wy(x?kKSdJL+cW6c=jVG1mg~~{g2ZaQmE*NgqN;NZ^o*9-U^Utok@4lg_u7!J8Ju=LprP;YKh64u1EWy}CWlFVkD( zRV@}qi?3DwuHf0OM!g*66;$M^@A%#WkNIRQvzq8!cpwyc7c1%>l!kxNeP}hzm;luNzT&g)`g+b4?tp>^ z9@CiX;k*NChzOy~%rPW6^HWD}sL`?HhACC|!tEW2QG;|8y(EbPegHFMOpvHh+6Kl5 z3l-?=d#%g8IFMOY#vl*LgMJW*CHiP59}wswY>a!!x6E;l?_67uF=>Hobav9rU#X@I};iyjSNDY#O_zM+2I7vSb$ganTZh0>o$9Z2AeBCvn6VdQ1doeY${6W`AwljY*p@kbtxqJR3yJ=sTUAPh}J^76W0 zPq%MNx0$bFzV&0)%e((eXkrc0Xeff;g5W%_cT!SEng~PpWS)W6M%<1ZDlQgEdhuY4 ze2L<%cz}1xR6NVA886{~y}<8MT;=x}PA%za2}xR6r$5`txSH`Jg^V`Ot<5)M;A#FQV*9z$ zoF$Y~juCCzG|p|GTqPE7AYhq^r+!uH&P2_;GDp>@mvtBv!G=hTY$~P!gzRpy1 zni;WLdf-SO>h%vLd~_v}V#*hf1)PyYvHy8+lAipYLQ^h;gV6>|Mm)-yoqQ_?Pq&cx zwBhUM;$c~K7uPVrlep1$^j3^D)OGAfbw9I8&4OP!+UoW>5rvKOYmb8(z5isx2;IAS z1%@E#QuLulJf;HJr2OMCiLaoZJAdb;Wo@NiJl1k_>Fa}Msq6Fl5hQYqP|V)WWJOr~ z?5YCIn#z7zI=SvV^yzeaB0XPtJE|5sesM$5Q7wiqr2h8Bk3{-wzmX%_sQ<@RF%#NUiK#lND>k*1c-t(I0QNf3=9m&UselB zBq3UIz&b2OGNKthd~yyeC|uLUGOXW!co@5N*l>)0jF-#ZSXje zhps-*d$TC~Gj@J*E=k4<$NQhvQ?KF&?N6(cNC!C+EW^BS@X-B;X+Y@E&4GlFY|Bf! zdz*^i!fU-`Oe%L_Pv6R-$J#JY`qQ>zKjWQOZv5Ku(yWz{J!{4Gapv)}WY2ij2aHY8 z9c(%xy}i9X!>M>(XR6J);}qz(3a4?<@~mzUx?1}u(CRQRK@U=KAqAj`1)CUWGQKL` z&V3aBke_B&=r*=@7`K)*`C_>^@uof1d|@1ZcX$$4ab!7jYd*0k^UzGgdlXFPmBXoM0fw_;e;>^GDKtsF7B=xD+%4I?AHs(7h-k32&AMv!^y$LPlUTCIOMnE%9i zo88nCiiZzM>Um93Cv-%N$*xP`zHC^_A?<^M)w9@66qOaVc@%zN@#x~XIdo0ta`(WD z^n$?1N`Ha|*SzmFLl3-36w?1Ah-WdanpoyAn9QeLpD9Kp#TIY_o|ZszeCku5h@FpI zhM*PxP4F2&t}Csue07rBB$X%|rBI{!v*xf@V+2mic@Z0)gB-7JM?^VsWzKQ=5{7FU zh3h^5XL?_u#`d;{x>PPE4H8V znfE;_<3{$$=yBN%F&|(qfDw3VG48z)Hf2b$ zX8>4$+>3EwRA^sgqdRwo-0%gYZJ^%^!)9)X_U_~mXHv2x>=wq-LT3T0jT1yt$J)@&yf=;8Y&tuqk5mxHtpqi4+cIU_QRou_B8Bx(FPpUnJdPEe#e zFrH^?TDuz{N?|e=4zK`+6#mvj8zZ8oLR;*LC2dzIHLe!P&E0gDy1zMlEtWMP`ymgd z1)zEL4ghkdd~gmEFMY>*Gc(8c&r^q&m&O0{Swxe`K;VV| z0qI2kzvjuwyMF*|zys}H4tPy*-dn#x>mCK8C^pH@lAwtQ!ueHIqqG}qB@;_!5x&Q; z!+!5$V@nv1yxYP;&}AeSoOA>iZZmIbphB0F=bVm2itOCE`(2ru%wIqGOOp3eri1wW zeTUCIQ~L5Ho_OEtxx8Vk6^`=Vm}PG__!aG$!z>f{Dc$+z2IMEWX?EINvvIq-CqcFO zGT(qcNo4vQSfg(LI%d!WUNsFWrra`P5JAmppclhuEz0@R*!&hZu(3ZWd>40ZO)j`1 z{m~59jFcS;oW6RDMr`fy@B8CA&APy!d8&;r-%*diZr#6Sv!6{9eItXGRNr@b|LrWUTxMAA0_@T$Cb9?lAt@P>5V*dAH(PX~`rZ^2z z@w!RN`--VA(Vd-D*)eG5HdH|od-`~XycvGL)A-Q{7h-|HQ|hN>z3b%loky5Hw9bg< z;9dtR^c3CUlE4GJ>^Co%xJT2TpgZfQX%jXD^PD=WAYf#&O;x!5whgcE>vSN{*~>@C zg48v@NueS{|CZGW^=e^F3WN3LCsDb**&rMs_f?@^sw$=Uj*EV9D`{_w4k0Z^fJ-Y* zs((<2+gsPeSl2j%{plgLjF%!CQ*yNU!ZfQf&^_RUd>yaR8@6L6ppIP$K$?V~oMtx} z#PI010-V4?d{h;|nxu*+(kSlR96IlT^Xf5*VP%Sd2xsv?l^3}4AL0Xp+15pr&-qO> zcs=zeS{H*Fyj4dG_c=X^!wdg)W~L}Q_?v6xiuXAqu$Z%|A-g`m4e1tvUbyS-PaQJT z|6`0JeGm6_;1ysT+(|t zF*)L{rgfXNf0=qip4mOtf~(YsH_Rmmpn20#L44^5JIKLi82T(3>_}(+=$|WGmaju^ z;y}V7->I2^DBB^G3-)Q|II+_S!T~4 z0x_I89YK}SkBJO4N3$7{kPAPMxks`RAA$UjVUd_;(?bHOlEj|-=wPxCT7o$zD_k)1 zX=w#Iw4dOFdd^tlbF=#v6i~QRfiwi-^003szXB-2iK=Fp?4D_4y+($PelefUk^j`k z>6b8$C&p-F!VAMPg%vzzx@iU+rWh9S?d*8H=D6b4kv%??Pfsr%R4*KUWqHJld;rfK zo*us&y>#{e3cHT0)h7XJq9mu3lwZ%JLzq9ZGj{{+t2nHnZXU_KPulx`MY*k$L0(My z2+K%c_NmRDY+cfAyn4DyJ$9ZkDCphnNfT2=!Ie7wfzqiQ40Yj^w}-01+uA z2!YKD>2MJ-%q2xrEkg)d4$)`%8bE~dGY*esi<_!lU3O?}x1)*el@&I~kuG02gJ!pD zYSV967CHb2Da|AnIZIxuaJ$nErSl@Yu;`whYlp}(Y^E$@FD@%?g$l!xf+mJCS}K<= zcGFQB08%2OUxjN*f}ra6UCTYvQ%pi$3Nw}t9KAUA?*j^bcPM%W?{#*VB*2YS9|WQ{ z2TEkHfj~CB>V;I0Vwej#g;%;Ca%3Mk)T(@4exX(wC=v?gugeRLJ}H-V0%EQNZ}c!X z>sk#^4PKyu<^+c3qA-D9z%T$X{f?hRZ2j6T8(HQL_Z1R;=2Pg5ey`ha&0qB=Wc`up z@PI2)=e3jSbZ89Ev+V9NMc|d8x<-dA*+=ZG2GgM>zO1-k#grfO6XSUuxxT#Cu#{(( zn9M0#KxuIs%*!DhoY0OW4N(48m7cL@xw>KM75$>S7_E0V4!)B94?j(Ps0-7gmSA^Y zIz|Az=$tAt>2Q1aa}D=KbKm!F1Iw+z^BSdxu(fT zikd6>{>+q-t7>x*o_CL-jr;Uflv%CBf(4|vfRs-1cs2YU$(YIQFzSWf zeg9K-1a;J?pa`O~HUma;c{xT2PMt23zEAJjA;G?D;?KMw@F>yl$ zT`0m)OqD#fYK}ZjUJshtwX%GP`N#qj3NGwxvVx^`L0det1&13Sh45K2G9uR2__R>7 z5ME7v%;jt)@XVUAcy@E1luP{PRruOvHi9AVsn*RRe7pAj@es3yu}H|omnNA5s|GnJ zXMjEaJC+2;bGXPd%WRiEr*+ylEj|5?ud0tYFG%|23A#fH`Us^%xXTs4VhRTfm8((z zF+ytt9+dSm*=0G1DKm_qwQkPb80e~J7?U$btwQSvAZ0;#0<*>Bsu*^bETAf#_qTK= zd8h9cTy!a(EbB5-9YZSt`7B4CmFKWh)`6%s{Eoo+pMBG^TsRyF;IOfZ@d5b8iz{WvknJR7USvRxTP#8jPK^qXV1EBO; z?mQJ76-Mo;>0A)BC2|RwR9xqUad3%ES<8x|Nkq)@>bscu)=3oJJsUod?nj^9oOjS3 z)Cc@f)H^)w*yS%Pr=hLF_?_j!k?Pt7$tK?n!*YZxLoCJsG&n4EtV_BR4XIMh2NuK`HkZna3iXb>PnGOwUL?$zt6i=NGm<{aX6oetaQM@0%^Iff~P*zf9IAj;YF50{!IOp1*Htrpam zPE<_Tqv-{MLmyAw-4ng67jPIB%4xm$u_+fjN5HXR@KUlOB9A%ts~M`trv;Q~W{{wm7b=;0Fy&zium?&GK>EoM@0fAQO~3kLls~Zc-_4t3H)YXJ^Hm~?m&%H; z*g2Euq~8oVn+O1hlo#?b@|tcFIVxu(P~q#z?%>0v`Hp2x0|YTTJEAwcZvnG=QONZQ zwFaS|HY0eIU8{2zEIE$8g=@GOW8HKY+ejefd>@qKMT9R zjpJf9k>cXKKJ-YF^kis<))iXfkz4*zD>2AdIU9>;Y1r_fagYS6c4TTajQ0P)yHfLT zM+TXCoORXNBR?;oE2@W+*yPnGafQY7v*ln~?W6TE4}O<+M=)ENTH96o8K-cP#bSFR z*?8Vt+~0=o;A{EUxXa-rmGaM{xiYQ-yF~@YDyO;#!s9bV zl7CCa73bFH$LCCM@4v~~to|3Ogospl!A3hpgBhI+m;_|%S4A>-?_;cM%9zF0d zlF^v@eSBLg7p^af4->TO{QbhHHCpZON(fW?1VDeLvOcnUtFGvdFrZkpHC&Ihz3=fi zNoL0wHaIa&+(0y6S~AUuoOj%T^>TCZqd&JEqWIgC#UcL7TlRHahTWP&rIm$36;sZ{ z7(z6Sg0y9n8RS?z*ILQpmy5eHtdGx{(yT#k4Cm9z(omz4681IVQ%)`DMudz7`bdA~ zAM}H>HEF%QEzkv7oq=4fjHw6GnfMaH3Ue0{+yO#1{*KM33K3WcxiKDXrcz$s+QS2c z7Nzzz!ZV%=0)K&Fy5|gY3*X4ntGMGM_*RuD41x>zyY3F-6NphfcpSs)gj$hulX*qV z=LTf(8`dm2c5=i8xw6K+CS8eb5U`H^c%|mGGO_)7T+#Y~<^WFS5oe3mjP?Wha^*P6#eWuLku^GCZo<){2s0=S#_m1~^q zljoFVFUk$Sq+d$L7K|C`?7fjd2(6V`WY6!;iV#E0RMoZEVD&qIhk^}1kZ|dx#N{#&9gkVoSBtPC-}f;qu({f!GX7_RS$7cK^ie77pFLH zIlT9&(ZpXhi=r=QDIT4Uh|}z|Cj$%4HB&|T>6uXx>g)sq>t(Tnn7`Z1__d9MDrpT$ zz<$jB+@BEQ2v=er*;mnrF>h!#1~R)H* z0)+0n2BGQgeAG%w4xy+LIO?C3&wOT|G+KCB7MAnmiAT?LiZ$gX? zo&;pK`)J~&%R?@3((OZ#WOT18fglx zz&m8}i`x+etV0dSB-=j5>RgC4JKG~!R6oa!OMZ@rP1$4%i-#F6}AW^ADQnI&EV;klv;-_)PB1M`)idcj%T(3!CI!~TwwWuGH+Rv?GJx0%+D`_#szbA&LX?d;eUWoQ%3lw)Pi zE|NA<*NdGI4L*qrGi7tf!Oe^xcYo2 zIGAZ4^gANq0NIK*vO5|SdEx*Je8Qzc%vt^jX1M8yp0>4n#;bDfPgG}V zN`~~^@8ijrB&8fO8(i1inK$4>Uv4O`Wx61fbp=IV3G@Zi=~8}bF07}rZB`&afh>_M z`L2y_Gl6cA96?v1*PYr1rjId7zFhpRo1-P9UVH=Hc%yJAeu*6M9-XLIba64VCaM;@ zozlV)oxY5|7M!wzZf8ZHBnHL@;RT=50UD14w;5fl2QlQV*+yPNZVGgv!wWt8#Ti}K z{PjnLwyfsLM{gt=lLyYLGrF@c?+BkOES?>r3OaYrMPMf*&$Y#UveVvfy!y~Hd8y^v zoSX^jOetEi9bkyS)S88gZiDnb0-zkm7jW zjVs}h5JZ_-te-ExU|wb|8HoSts&9(7p|^hgjq zxDW!;1T(QSsbdq}FLvDdU}ZaRP*rbC+!$CvnXjpV;(5NgJha@jbhG=CkSl2nvmxG4 z%INo>#B#u$51mk;9iTwnkyga=#N2G8gSKs$%OtIvZ32FV+vc#KT*0qZG>;5*V zpE=a{xnD$F_(R*4^nZj;QShGv-qse_4TW_!Hb;MgmSxBT=kJ_Rw#k^Kn&ahI02XIU z0`FsP+&+|Uk~A02PRROL8M5s))r-3jsDk`WHb1`P-yR2my|Orcn6Rv|MjRBAZWL`J zo(Uy1+HZiAc7WIC!AB-GOb%b53opPTAB}OV8Gct*^G5K~rvL_Fa3r>Y{km7n(lAeg z%?|FYw*4L$k%qX~owcsPTJIyDRo+4QhCu=)&K6nd4Ab}{L5`xO){x^kix5kY2gZp9 zRc0V|XJs~3@J@o8gZRvPv??zIhSG=GI}ah8N`y_P0kP9n5F3|J{6-RENVfO|pA+Wy zPyxHeNdfhSsjQ+aZ`cek7!_v8-X@B@5I9~S+g=I~4h-z!nG2(hOwBs%c2i=fq=)$y z7D4m#d$O9{OV=Q%C4YXgy{XHKG>Gu zRe5HFTdAT)sVvV;`wUi=dR-*KQ#sROQKqb6NNECR0TXs;n3 zwjjPUCqJl=#AKGy;;|d_VexverAH@IOWt_!27qjNme>NUv|>$CIu&;t`zQ=V?(!a>92hzpmHdT9bfq| zx1vw`;#RDTkW)v_Ke%$-USVojs=?#@Os(v8YWsAs+HizllkuNKPmxijYTOBGc2TFNjB4l+cZNi8LI$pm4g zmcSLErtz&5MV(&@PBK*cT=}8;H73=CoopDnW-J3gCs%8M4aNUsz<}VKl|=|B@j<3Q z;uyt}iDeiSi5zwwt7MSRUL(|nuE(FM0Mpu0*sW}TdY%S0*C*)$IMm+OwL80{Tz>4K zG&YUYS+pFW54LfusnSSeRBIOvPth-}TBc3eWD(2C;EZNbvRivy70KlfK_QfDoij25 zHLOI|t^n1XD!3-wK zVOLKasCWAa#RzI!1&`f9q~5nM8FyFe*5y*>-1qP@-6{$>{Z z)@~S8SCw|hzFDoEO$wqq&`jNAO*l+0v`C zCDE4hK)uWGu+4fRDkjgrNYNS(9!&_Mh2Ex?qc@d#tQ}cDK<-ylI!trhRQ{t*jbpYr z?ewcIA-=#;e zt~SQ+^v0Lg+VB^?>4l}FhdQ{iYl@uakxw$zMk~_vuSlvpluo5Gj_*zeh@Byz;@c%@ z0+o=q?TTL?g*wi%6=2=PS#dKyEXWM6tsyzZ|oArpm&e~7Gy4P%3Hh0*0 zrJVdo0D1tMouRpe%d}v}YuWA3d*s@&lF?1J_0Dkr0!4J;kao?Rx8S7XU_wc+`nBdB z&$QsqXBKDO2R-Ke2tqBdvt@QJ_Lf&?=3Q_3`}W1AB(o-3vI@gJW>`UYth+F(Uqs^O zA!zcOi|?qf{#2SkBCA^rvg-?ywA*58Ra;~+8T?LOXK!ZVGe*(|Nc`mIBQmQhz~1EF zx9CuYW@(lbRdpW*@rJAfiP$`<^_ifRKOm+*LV_kWSVWL4P6{32oqj>w#}XYvasKxW zyP_^U{BU1?G>C!3@MB?uS#JtzoWw#e+jL1+y+ugx_4_Lj&ZE90u1{}5Soq6wuaqPR z5kYd5(2ed0>H&0j-L`uCW2lFxsBCjZ0zbf0`?b?Y-8KeybdMvd!DHIXZ5pU?6;jh1 zNSs8~SnKS;1));}1X$O0O&dn~R10B#D3F0*8!MkVvC9wW$uCfh>wjX4+y%fY=AGdB z>Ukk9ylVshvRw~$TfOeq5Uv$p9q?9uqG^z6rl3=&P3GW(3l;4RCr3V!y7DH;ZHL6i(e5JZ?L$;Y|!;tMHTa0S>b_t@R+?kM&vA|R6dw0ptf-Qa8+iMpnGKqYbpJo=^6{RhfWU?^gjiJ&Vl zbfiG+%d;MKayMQJ`atRt|6|eHd6WZD()qkUas@>3I!z&NqcGcLN_mIC=Pv|9cf}=P zbhahngDif7pV74XVzo)R8m63~8L|c!Y57G-&*~tTG(mkIQZr(N5q4T(CcQl87wb>H z*@Yoj%v0U@^rZtYgX^{6p0o5G3faL)^W@XbA52NlpfV3zz^%`rum2<|ji(|H!~`H9 zV+^4GN0IWs;Myj!UI5g8f)Kd@064-w(a6tPK;VCw)dc_{+P}=}F<=AoU$Als5XSiz z5W>K%{&&qQ9Gt^{3KSb`xEbhwr-X>%+6$%+CfXi%m`)+VM-$s`c;I6$K)SvWrd zbkU~|fSW}ki;Hz4^|3+h0jVahg+1k<;vfrq>K7pbNnE*u+xnOrxNf;dA?ki!G+imi z)UOG;mGkN#Qy$TC!K8Au)>33_Tlk;`<@!?aJY5V8(EWj>gJ z57P7h6Y>P8E&CMwh55pP{@;%E|5oik=r7sdqx=6npII`fJ1SnX?gI|dzY=u*f>Zpj zUMPBS@JRn^L1YW}9caHcjN&z=mh&t_>(KQqThmcmSzE{WYf_c=u}{mLyh6|iR6v6^ z`IC>2m2s@k85%ikPMTS?v<$+8>R|OrLL7nA%8nSZrb`>d39S`W)GT#x3-3Pt%pFh={z%vKn}Ov zbKklj0IIr-9kf4dK5~lwRC^LtW4y5oKf}ynIy?Jw9g~I$Xr{ZnIlpoLGTr6VLF_u- zaPr<=!D|jQ7X%t-AJr+V+B$XlUDihZ(60^LXL32a{i?mpA*fF4V7}7`05pmx@bdDG z6A5kyNYR#j6Yz^kTka-+6+yxAV@)fM0TI+I_MP4m*zwdz{P3FLgbYY8T4p>yYzsk2 z%BxU2>wIRvd%8ArzF~*DPsLW?0P~GxW{!jF%?F`qwg(PM(0P%IaP1aGO4>sR4fhx8 zUlS%xFyvJSceg)-Ri6UXl(ko|WLHJDFr5C9gPiD9tu*#XJ{xsNI2hh-5VU`QVmxXo z4>z-ml?-EtMseDB z$*Ru39tTpl6IU#Z=z6h@bwtbHosicsVn^9g(N)ut7N7xu5~S-7K3}dgN5K;slQsGa zU0_({wLxw-ub8La>YfYzhk3)r&K+lCKC*rhST#`Q^l21IYfuGRLe}BGXLN@OoWl7Q zeTmu!6CBf-~cImBeIdu0ht_WyyR5nSlmjjCQ+x&XGKjoqsfXqbNNp{^EcT zNko$9xz&^4@S!JW55PvdNd55 z(fMXAMn%nB$+eVdd(3#16QGZHoe6TKexBJfmj0Y>?*S`^`fJ4Ja8|}@eZm3W>Ufcy z3jthuxVHP{3XS3=_Yji({OAzn0u&g_2j|934(Y$m)8#$tebe>Y2hd9=m=}{kAry}n zO{jZ&Vd*9kSxE~H6i!hrSu*>xXqoi&pQ2FOYk@_q6(qXESi?*`zf{~~L zmTmNIkw<$NIbZd$&J9G#Z9iHA?~FX?S%CZ0%xTP#J<`6dQn2yLd1A{FEDbX#{&OM# zTU*qh=QZH<44)f;oWAG>cgx%ADQN}7C9v?-hWW_Uq$U2t@ofFnC?I~4?*Vq9dWf9h znxoeI13!Hj*A3+Th64D9qNTW zR<9>rg;l1Vfg5W{l413|QJ|vM#0lyUm4k(5#z&`hqs<8~t%`-Yqu0sPv;+4g7XHIC zeCi##9>V%Z*aOWP>V}nm%@n7VBn!BGYlD+gTeiKb5@=Dix0=CBpRG=u93J8R z)DE^%2YQNirxiKWsnmu0`*8U=PL%@3ONeR!wbmVsNTqf>pBJnr77>CNP3|$7iO6BL z{=;RwPJKP1!Qlq{OR^Lnev=Sx(`*k-MAG(qZ8q$(4s7>NLEfGhe>Bi)r4OLw?Q2{1 z={kd|4CbOgJEMI9PB7jQsa4Y7PZ^F{WVon#x)F!UZyRDfx%(`xbskqlO=u}8xt}2s zL}tcfe1*O4=C(=&`xy;>F#6a-98l)eGpzccne3!%sL9*aM8TO|IJP`LpBFNEJ_G0kh^pSewj>eRa!_NaenJ$i`%Ny zTQUI~$lhe{QK_nyuac@)lISo^o=iAqaR~dp@cnz786ZFrQ5CW;LOBD7g61@hK6i;4 zMp2yVXi6?0aEubYeuHPz5iIlDnw#WmAd+O1lAx6Iv*GfUL8osKJ?j)j7e4R&m3Mg( zJTC=emr(7T=c-%g8h-*r&;;8lz!aS$s+*e)9t1ly>t#f2#|mxC@wb+6*BlcM2^&bW z*x~q^8;_`hjUG1=@f#jcAs95)qdL+tQzaHVCMeXf8Qgk?ReG#JmJ|g-Xaw7edqk(1 zsDA8^@@7k;|J7iP3^*-y@ahH!p-_C+>ng{JJ|9*=@gC6>qF!nO393AF50$CN#}L5+ zVd)TFQOplC#T%J>v!dDJRH5u(M@TC1CkPOgR^$?jW~V`H0?1fk&W!VogcF#tvcjrN z(#;h~%QVt1U$5v5p?Pq948`G?Hm5F@ijn~ClM(K-zF8HOoh9|21A>f+(eshZ zo6ELsY6y&j1O*u2ya+gN?&pY&9x=CBPkQ$N4FWIw#noDomCN4t;KKkdaL#It%_j1} z4gQ@=<*5k95ifdn|6?%^Z(GB7l)g_lEa>(5*<&+N6q74ml;{d$=0?X~SF6}ZrkMRk z)g0t3#bo(lks{qxAwVevnmB#+E;+o3i|gxoZ)5J_v-uv#-a!tES{OylV<*k7=Sn&w& zjqyPcVfUA$2-4)hfu$XgfE3Fnc0+mbwaPsyT@Bil9a*rxFdMnWFQ+%hRdf~D<+5cj zrok4pl*#~_UHZj*B9GyR<^>wf^^tbXKgWGrqAn|9s2Y2{8gBag7w194+;C5fysGlg zAdJ$F@q+Z3-Gm%cnqGt%g-4A6C@Y)v2nLMB>2iw58lS}=~@glarg<%Wy{kZS%Y;PP9*QC;#@wu@dfwSB7-WU9qiclj&0kvZQI7qcWm3XZSL5%ZQK8S-gEQ2IZ3C|m2}^9DplzZYXH3f zFn0NAJnj02?Cnsy%r@?|Ocq|-25#q(KMFKt%OdFA$jO7*(?7m%gkue~8$<%-={e_F zXR9%^0wk}XkbZsk02^5yzICr=*UVS{lTGm&jM?hv?1 zy>9v8R+e?IC2RY3D11i1-FAYbt)h*^Ql{ZRPAY z%a&9*YfMJa+e zt{0e3ddW{Wb5L-+*zkq}+m#U@S;L<`JpWEApOR(L_E-%j&*Yk4=v&;qq3hT)RZN+=8Db#e zI>iZMRbXbnRW*Ntht7Wk=QE;Xb%2PIU1HkzgP6>8Xy1`L4K`?AfjU^i^P4ESGzaN~2hmi2wt&s}-4wM+oFIwtLYGbg?(!{ld;s-m>s zT^R4vzx|3xkeZA~s*JP0BCQ~VnfO@_GH2rGmQ)Z3tE+-d<~gmjCeHhmSPeLks9t^( zk55PZ8d0VmT7gCZmY4mW?=Gz4K!fliNBnw|09@f;Rvq5ZHe z^#VxgDUrvWIJt}Wrw-)4b>T<=40b`aK(kj4sm~&Q$|hC<53eOzV`s6o%qgn{FynwZ z2?2$73xS^!RY6-ZMZ#_`@N!XW6hn)wHjm0|cEso?GYG=|==x*V;T_$F1@7}#$kP${ zS8knKQ&H8K55Z&G)N*dPaPCFl>+y7r*~)CcVd7&NF=9Sl^g!n2FT?soR!y&YNwKzm z7?)E@0t{+m;GkX)pdvZi-3~%mISXsZ?Ez-rI>lbiRBJt(r0EMZs?DmFyTOOihx5o zLnpQC??$fe5(-vHyP=S{Sq3a~FS98=6H-m(qJ-zYp|?_NNLuBvaUKLfuUC=cp?9S& zEVX2Yk+K*Q-j?{WcM#u#;a^MYK+3;Ekpf*7i8#3=zL`a{l(6PcKWt;7vRE?%@_${R zZkDX2$eaj0HsXL;g1MF2kayA{=>Tnq70JB*#QK99Kp%sspv-J)8*kK-f<74gpvGJ! zVdQ5zJ#VkQe(5wXX3HI@Y_wP=I`R?r1QU_{FyuQP=+YcVf6J{LJ+ zG5bngmX>bW-s9Tcwxb39eztCR7SLEo6vt+%S(dC5Yh{zdq1dpzR(SJ)Q2;2^{0B!Q z8xCW3uehuh0$c+H)lTW8GH#?V_ru7c_-I7GR44U1V0w_FBMqH-4s;qyH3Ay}0(Nl^ zCYLt{5v>y?ni^zZ*OwGhBMctxHPnKyalBEo1R}+dphrt!3$4KF?=TXQ65{<4K7j0Y zVa^yN^4nOJF@R#6UJvGd{qEq~<8NuT?Y))*I#V;G(V0Pf;tiykK5fmy z>W|RS3oruk5>6#uf3{IMt&O@I@qUOhGL_LGossc;;tb(P=O+?DpZ2vad-4g`6AKs= zqZrsIwd+7bkhL=%q_#5D-?az`I0P}tG#rsKwC5hsl9KO6O%mVjRW=_&8LCyndT z+9fZVmpy>~@&O-s%|+|)7e)ct#(!fQWo<|G$RC<4stZOa#^(dR<-ryU{%hlEOGEzi zIRUM>56r?2I+%MPYh89b!QTe3cl)Ya0gDUvD~(|)4D0QIBh0|RLObT$@C*1Sa)EbrbZ4-DyOG5}$y{D!yY zB(bXMD~|4i(vrLrkH#JhcjO-RB)gdZ8B;w7Ji**&K$m4)g`~qI6Ik7fbU=*VJcb7Y z@+{(Vp0UdhAfX{5JgAk_f5YPGH<0;^^UyQ@XBQX}_5JqbA)_6;bIiE(*}SqtXdyU= zzGqBJ37j36DK@*6mZ5vHtH2^;DD)Jf@zd}z(3ggE? zwchameM+NO17$Uye(o=Sbri7ZGOvQ*b8dfEk;7Vi)Ni+}g5bJcd-)D-smyyT+0R+t zQa^F!FNcg?%hl4(JKH|s;|KJZmjNsU6Yv2*G)8f`zqzUE=l+5)-o8o-c-Gz}2KbQzam~Mw7x4*wu@VZ1-+oJZm1CJ2au4q}rd zxdty|&xIkgli4AL$<7wygdyFU%2ucGyzMt?ONrT?f-QnNKsT4UyL~Dk;9@D?d5-~* z6}RWYV8Kur{V)_95Cle0J*a12v$pP&Y^fMXPiyHIS*foZnCU}gmohRKZ}C(zr5J_B z4)z;LW^~jbNs=+VmgXOq9Bd3x3hyLnNKJw5R6iMtHvE0@bhXxA%( zFZQI}l=1q4NxhrA`p2zGEIIo^)XD%wuXt6m4!Xr##*bVq{HH+PZIhWdMfBK}K;&rk zeJJA8hxn?y6~V~$MF16l?RviGuT30^%T!EPiv@$iY1({fCLp38#Z6DgNRTx4u<@C) z8QW~2mfxcjSxD-cEI_i#8cewgVZ!+qbEY9#EFgT4-uZLyHsSg*WSw_{rcr=A-({7k zNZcai?QsauKKR8IEkYvoc6`w#g1q~E41}R#>#F47Y>;Cwf*ZQcHRxv_bvt84N0(W- zoAGM8Tlh9)6Ch7(U=yoQj<}hoQ=iC$Ixv6Mx>gl#D?o{0A3+#6T?pA(%<4ig&-;SO zQ=|63D4>wRSbj1?ie^dl%~$}kUpf$-$1@9Zo2(WmPM(lz+NZxt>if_)u#pncxz||; zGzxYK@|X~grJwFF(>`$d^wp1meN|LCKS3=rhhUGSv z*U&bJj}g%U)E_87x*IOTIK#6KBG|l`5Mz3=w3wIDAGBzHyJ5aB_EO)iz|wZFo@23s zZFA+}%o_`?y%Dqi3kWdIE$A?JI;3Z239^vr zl2;zIx^-qT6U#h$0K(_gFYbGJ7@NJ;B29cy*NJc*eBN;CN(Z1fFNG2`hY&PpAb2af zwM-Ah>L#ApHthjGLA;Y%%;&jzig+RiKfsoF-(iVg1-A#wAX8wqexIfs(NqUcaeanf zi=Ej;5?-ce0R8KyO)KxH(IuW)12y0VLJE~|m&f5vtS*39+b)4Vm)*FO{E|2z*&V{% z|7-u)YFHZRuLC&YUhqH;(?`p`v(mwPYOe#5aOMIGuM}ju4*wZ@rF7qU-NU1H-yALX=LFc#dP+0ZOEZzNL?4XUgR=Wr^v}23 zu#D+8e*Y_<4fT~H2f&O~@Fv^}EC7`9ou7l-Wrm@%q>fd!kC z7!Nqq6T8!+I}h3f53hnfLZXKf7846dSd6aF3t9|9!3I-?Xkk*gLZ39|S8$E9;-kO9 z2buFNn~r9<3cYTyQ2fa6ARVs^c-{aWBk1rps(I_kbyj1Nj34)qBTlH*4@YASKd;pQ zX3tPh+(nOp6zKb{NTHsngqX0QA!&2*OA#=IzX;;Q48UZCzeY{hRa@j}^DIh8%vj{8 zfH({}(h!W!jXAv)+!U^w7D1bk*@AG&KK4MJowH!U49XMAIE_hMV_kiBV}qz*C(ZN6 zSLrTdgGkO6ApnP{XeFs5rbO?j#m0R-j(5evErUgcMyGL-3CxdKbHwB1J zT5taXZtff011-ZjUT1Bz3BWb#z|z_g$&*ENaG!djxiZrDYe!V2AzD_G?y4#J>Xv4G z5xjG502MD2PtLAn&aoBWxQrXoj^k*muW*+uQxTFOa=M+d_Cza7q(UwSbSU^Fb{!Jm zyhO-`R8dYgNhZ`hnWX+D=-`4N8woJOsW>pDq(7bWM4E*^Pt{~^3e2!p3wjXZ#)>DTXW=OJje72dMxEbEecl*k|> zWHW`#*KJ|0#QR)E*MU{S@{=$JOTDn*BrQy5@DMFwM%6|d*7t=8<^!zb$JC*#S+SufaPW-QC;V1ulIo=dpn&+YMkXUGyx^#yoWM@t04a@KFc1-=V27Tyesl-?jfD*3;V= zT~4?TP4w)pKhscpPIMR50aN3&kFH<)n)T^ry60RLhL&!-QEMfWQ`k9Z4(E-Q-F#+Rv}5$WBfyWtV?|{pyA7z5FNu&_<4^ zEwxLAyj;t)!GY$6bd1hbrD-b0brH^Lau6;74A~M6hW&$a*3rs9G1uf^NEF-dkK0Moo31Gj3eq7*C!U##{>T(Skg6eS z{vC=)C2JI_l&Wricqdw>a^~h!1|M4KezqdKgt8Q`(yk!hvx7e(k!raSN@H z_r#^lh$h8BUHqgTnW+TPR1VmPq91Q4k0=%$Z)i6ohFQGc?MXtk2{J>eicdYY0{NN% z(i{+jH{6Ut`{5kJ{_ebr^|3e8|LQylWW@Z-id`E~fgl&*!p@Hfn5u4b5`yR5L49bEV0JWP6SYUHP>d-?H1Z`tH z2O@-_!|7BLvyV=89Qf)x;fr?Xb3})t&I3>y6O(`9VdC!eTQ0G_lb%qOv!Zgj)B3>-4 zKG&_a%&!t@5`9~qh7elJTF-Q|x5yp4d6y#xnyf5u!=j>ajWb0KdA$)VdI+CoaRMA! z%c{Z11UM(lM%~0XW8M5hL6cCSE$B^O44SIV9EM(#U#Z}_t;zB^ZW?8C|23KvejC-c zQ**eYtX@GYlS{>fAlDj=cVHLjyaNk`mSeFhCm&v0##4Vm3~6hNy0~JRV=DHeI!5w8 z54envrP;3YtY6Q#y&UqCS8FNuB>`$Rl0O1rDN7`h49qd>Fc%*&vLLuBzg&ZD+r!Rx z8aw&>6%0Xv(n7t&_`vcp%4 z3;=q8)8^HK4vplY^HBxB{leI-=BRo@14lOv4elKacRX$Mc*I;SfYN@~baaq^gJ4J2 zSD0_Oio)mNk050ByM`!vodaZcy*x@jEI3dz2*i?4_VBpsB(#&p`$DqjDr9%&h#?DW z)iXOCycns&B+1z99d~g?bXl{p)uTYi&<&Cc$utg=G;Ck)Qddz@cJQX^jNFGb;DLY1 z?}OLxo@!;Q|ANI{o=-|`@j2oL^H<_zjhNAu2zGLju4&IdM+>Qdzy(mLc-QQcijSxB z{{;$rHFU%T=TYl0rTkNMzB-{U+uEswAZLNNa9`{Ko{V54`;{zBN#B!BSK1;}w)0GI z0lg$xnd2HfWZQW$E_Q>`*U{iV@ah^2w&i+JfslmY@d3BNPq+gUZO$v~h#Cb^pS5}F-3neQ! zZ+DY)FhKP-s!8%7E_AQYM~IbDtnD2%;Fhkd8iK?)+}C76%~?!O$M0EAkvMJzWP-a+ zOK3=pq#5u$EP$mDs8M5PTzMdw&z9h`z8rF5*Thp(Q==8tC^*uCb@kQ2ob0Mpeo`Jm z0kcrWi*+VaxeU0vNynrh_nVk^q6E5v9pM}};XtIdSq&+x_|&Fsx~DyOs0F385?&5sd;s9{+}CcchGSz>9|a0;vu9Gj zWGFhA>1YOa#In%3hx^W^n`;;yrt*4Mu|ZYw|5h_9)UXBMq7FE>YmGK!1{^{KuH}|6 zmKujb9q}Qd6CnIuR;hTC#vZvhSQ`$QVN0wBW>yeR2Es{Sm@*Nv}@y>%N1IbzO ztJq}G>Q>~^jsy!pEu$?t14NLK7m)6Z^~?5O_Pwc8h-ci&V(uG!rJUE6Bh{rRV(?!^ zQ21p@g7BXFf8DuXH;;PaWT zf)oz$bB?>Hwxlgn#TMGlEDDxB%3GWmK%IAl;pB+c{P*}n(dH1eA;-eutEQW;nbzZLkoQwE z6aamSQ^PgO1eN4h!Xi&S=977SgSy)Ex-A`HF!y(6I1q3Y+|%K_!C6cjO1||&9jS%u zIgQMtX#>Qb(nVrpDIT#LF*^0onqb~7ZOtJt4df{?Ny-oxba77A7@%BtY$isRlDZ4EVi$ue5T1Vn^>3rI>J)t;K z+2+}PELDC`qE_^GA>{OfxcgD_F+RL>O5{p@=xfL^p)cv3%{lx{x!~`jz0cZ*PXN&F zLq4d-{ae|&NN<4c5qbt=j_{fhAPc1*)HxbmrPG1h}g>9<58+UTmoH>3sJkrIxvdBYd?X(Hbg~((wT-1 zZyfo`iPTke*{qFHXZdI_c7b}`Ie*zaG01W#4b+2xPHq3V%)J)fESMJitKZ?h&zWO< zb9)xcu40&kZ)9AN(P?QeHl!eWIh#T^lwbvxy}zSHT{?%Jq>>Xl^f*fF2B7f(tg#^6 z4-6b^Kvh74gO6N8y+(>i`yQ-kLa#U_fsawg;>^g7J0F_aazoOqO^SFD=IPf10i9*@ z_)h^No3Iuh#_~*BGsU8Q?JUW*ngtS~UgZ`oOaw{_`Tb%uZl7t68ZE>>|DE9Hie%v% zvjIvnMsXLGhI)EIw`#_=JUJMFzC6uYuPZh*zr=8@U;H?Gvg*}n}@1y<2 zmMb{ zhJ7M;rjUA4`N<%Od|NdPr9>)%K!{)sO^jA&1xSa66rIFqb-Y&53bEYDN}!A>N}6;W z@&9&Wh0dFglP%MxA9)h$C3AB=i+#zR%NXHk9aw;!UV- zQerH@IQ6th0JjFdTjuc7!kL6L$TQ{=ZD^qhPEy(_MUkz_dB zOU#r4g>;pMJCSABLt-jDZze!E^OGF(2p$ZNBfIkck=rDQtEYm2goHVV;yi}6p?qIG^?-Kx5zW8~6Or>)rW*=#Tyv%sese z!(15%x6_SOD6!Z#ckk#%=0ha&{q@w_(A0?U9>OuMNeX&EvR8R_=96r4JU-^?C3vcyH1QRwU4p+A4uLAyXly@IcGGS z57NB}kk6X{MDWLjS>YA>W`dY>)Kn6xa;}tsC+UryZ$_~o-K$nL+%2dyfqYmBDS^SO zXMCtS%xv0~1(;)HjI*R4DVENlFya}VKaL#JsPtF3mx?wo{u~MaJaz!oY%5l<{$#sA z9^3YA=K_4cYkwgA(`5YmlbJ?O2n59G0t^KEe{=C#|D?bm{ZB?5mkwk4zkIuwQkaeZ zGVoFzMMzOwPwQa7|I-_%-j4l~Zlub}B1RbL9C}Y3xxe#ud^Z!$LV4=roJg$J@P!MbuT$@%~tU1)9fg4cXR1Yewb#e{pn0| zCwG~{)nm`K9M)Z#Hg9_E%3u%u(P0nvvV+H|W|2dcVPX4_)tfZ4{ef_=1X%9a7EG6O zr&6GGsSlNxjbTJD727Dy)1^rCQK4P%nx`IO*}DIoVCLKAso<<)x$@}Mq?b4MS$|%5 zs_31jE8#itoH4y&|NgrWZgm~#tCvI_9*@JDU9Df(4)fNuv*$T3 z#Mkl=lbQ+35^C2=$#c|M3CPUM{PJcHk;zw*+*VU2G*gY9U&ctR)G5W2N!nhBvWs9=kMXzc92lwbhD%{yZ-SQz)t?PjKg&<>zv0_9oK zu&voAX-}Azaa7^_{g2L_R&TV!+0Y&3XgP(jaNM%YU3S=s0w@U33-=P6WGg@z?4UAP z8?`tH+(Zq}_6jJ_ulX%(L-ahKaQxgQ_e5IIFtfscC3nBJ{HwbFX<2vjY|uPvw)}YdL|CHjo}Xd5#P&LIktYYED#& zn)^q}DCi^t36MiPtc+)}*a8o|bRo4ip@zLGIuAvJYId8iAgVf~&bXFpuRka+hc5kn zyZ54=Fy+gR+lSzaf&saN*+Oc`^q25TzwZRIDp8+e3_Dj`Wyd-&%^(DfV>8pj(e0=` z&In~pnPQl`ZW|oMbb%;_KM|^N`o^< zZ7wPnK;z1pX(zXw9xq(r>&&CAq`5G5X4WveGQ1Ump#C12Qk{3NJfUe^z+3nG=I5>C zimt@vNe|@b1TFJ`e+X*w?9g5TrTgXj^zf>`f4ejG=HD{U?E(33;}D@j-#!5a0(yo2 zPs|1Ve*!ftr(k#i&Kn%_e|Gf!PbJqzqv*rC@AxjwhI6pgha{~IRNSbYZ0C?|oQ2}Q zCB|cVCBHvF2n6DhUHX9`DV2?uqG}lhTngt>7a($fPB;Jk(4Dj;ng^Z~GDzk8{N4_o z0eBVhmli6f!GeCfmaeqN7_-ZzGhAa{ys{m1HcKuS z__^2>9obNSj6@!Iq{Iy0KRC{OZd}1Fm1c_!_&ag*hvxiX_Zeo!Omu{L8}u=cMgDw2 z;4@7|KDc1&io19qqx&#@bbipgxxKi-yRGHg%9-xCPzCWialKd$mI^=|1h~=v{hY|8 zpqC)zKZ}nAAYqB~-sej+-i9P}eZHcm9RV{*f1|DuGi<`RaD4lCOu}$M&pRS*nkp&{ zO1AD8GQo`6pW%^;N;yf58FP{C!7Y#`lv>^w?RdVsA6WJ@rI#d$#f82!Rhody>?39m zx-&sW_S2sE8ZgIkIla3I+(b~wLKcyUv%xUM1bngq{%}k+uw2aVhM=EZ?$k@V=7LPz zvwLVpg?a_Un(|F<*PL-23uEF8XRvliEu@7&h2JmKD$a>Mnj8} z!1e$v6a`3d+eLv4$Mh{Gyf6A|7vGb+E0%1~k$woS{XO5JKAN+WK6JxUI=L_?TDV=E z@7eGXn?4rCS8TugH5_q(1Lv!$bav6r(#tmhfW6_Rk3Ke0Ct>K4i6Z{(Endt7-;;+i z)80m#d~^pV`HB@n&|% zIr?ZOQ8yOL)l=r_bIZ~2oWVq|ozeFK-EB%eQg{KK3=@{>Up%9yy14KZFw1EH&#M3c z4VgCAmZoaI&nPKGw4Eky?s^Adp7BTS&9!BUsIV2^Z`9dw*}O{`E#HRCpA}gkc(df6 z8CJQp4s)fCf-K7=;t!=V)u*em7)1VaJ>K8!zBH~4Jij}cM~vh2dNFcuH~+r9abhKi zKRZOD0dCHmE-L19M!P^VF4i-w^uU+^rIl7S!$<)%hfT*hpG^(dRwY20lCDBY70@33 z4vV8|JBkLw;vvpzH&XXLhSz0UWtY1v7ND8u zSXUa&)auqXSxM^P<1GPp+|je=WG1CQUF*E&Iy>Hl*5+*RxEiizGCLWTAk#c&kd@8d zR|+GAR4{#%C-xPSUCNN`h`{;Ck4NArNrqYiapAC}jrPfepxG3Gim|WWrM%51T|x-| zxCS)=eTdj54;+{~QWf2rVVVi>T$otims2a13{^gM{jhCX+tbK@qfcZVl$uw353%R4 znw`PTgtS_`h+YDag+WFG<~*ou1GvaTWs>1RqfnOkZr+d=MakmH{AOEQAL}*E^v9UD z7iPPer&W&37XOj&G-aUaNly$5JxLn;ELCXV;^8*n`*k^KBmnWC&}9dR))9oPv*?aW z$TEhkQ_$nJ6a3{NV{eyMPw^YG^p8GTWXD!N4Xw@yA5WQ5#~#PCm@O()oBR<1nIjl z`Qm-m`SyHK;R^0avDZloD9ZA&B=9cobh?Cr`f+m0`JAbR6Ri5o?E37NBn_q5N?hU? z@N%c9qg*ORjTT8U>VvHiw0>tb+e3qD*y;mZ8XG5unOqblGglF@iQ@<*aHnixFX0jB@-6h3ZeEDo#iB> zo;^%!6A-m#(C;!IewHC)Tfuab8Nhhw+vQ3s6haN-7XQ z#)c>2E)A83RkfoEJ2L|&ZI&zPs%_0G59NwZ`UM5l0cQCMz6Kg9?&T#YwXyZ~s>g2q z&|_Zmu*Vd~75gwg$Mok#0$|y$d>`R08FzZFM%XG5bR5 zm3;;!{X}0ork4*V83#Mrd;%N!%j(b;e1|6x;58$*dEa2`xu)~b05!BupwzP98rM*N zz^|?5GeF zn$L{Q(WRdypCmWWx3FNs@5Cl4AKK}8)b9g13a{m`Bxp86s*aZ>)p%6VIX$nKU0t)u zPNAwBzx;!)Zr5An&To}JfCiccc9t#ca~Spr-_o#L-k9HR4#|0x@E)<9)hZZW@8hT1)BU(R z{(JDrp24^i_%$+fc0Owc;X@{OWqi6A@~8NMg;-Y(L75fl>Ra~@Uz!`ss(cRb19s27 zxXO63G+U|&$-QUl74DkYB+>@Tw1$E^v0x2+tjMn%56JaW!aAz5&Nf9iSr)*r>P?|z z5+;{F#g`!1AiB(HCj*KbF(C?w9DLNSC<7jBm$L+4)AWRigK_$i(;wiKyW>0g<~5Hv zKGBz+X@BmHzykz$F)}uLGT2%iZB_AJ+u~9>D3kntfuU*421*}|&?f9xL#b(}pDpSC zW{hps##pQ@u2kMT^pT9w~eZehbo&vwqPNr7%QP-+oYTQ)<7wHr7L$tk)ph?zY! zyEw_RHFGn5Q&~EwFo{;?Z|X0w5&xMjfa~`p&?>v!P!#4M8|~{he5mJ14xU;goD8k= zC+#3mZVAo|RE6bD4)O*dWuS<0OrQ2>03ohulJ}~@+DaLtge5hHXdm+zrFNGWjpzSD zAE#*mx*Vf#k(n^KGM-Le&0(MDqMl?o8kp>6^#N@eQ<%1@{84+~5gD!(eJl0CWRrL( z-2i73xSH_gQq(f}aePG^@mCb&YTSZi_4srj`86p25@fO%${?h&gMxAX?>4-m*C6q~5>ixFE6 zR3*(n2DcWEc@#O&aWYV3t@U^n@%sO{4%ae{jY_;HX2<9rSG-IvHId&|IDp{X2bQ^j zSeYx@shXvK)5QhIx>DETN^{$OBpLG;tudHCSncbBFv_Yjc!#jI^pDvz)0oZ)_^P5! zkhf=JlOOfko_4fPWsLMd#T(+w~6y?569Gd4yA?__KU+1R+6N zC3$RZHOC;beN%?ku{Vvn-p_l9x&;5eS4i#hUBI7MS)-zU*Y?)c1gZhN%5!h~UR3`J z+Cjs}ylaR1!b#Zfv$*jHCUQT==Y|MvTC}w*Oxh!{b5tM zg^nZrd4d%1yxLL-38C_j#*7Mab$$3HwIv0Bu{^y2W=sK>4*;I8b7DG?DBR{; zvPi4Y;_*{$7zW!28|9M2AfjSU_KT~EE=`Xc_cStcGO|`=)WlIGB+HQi4>GY;VHMgh z=7^31>hE$faue+DYC_m(H&C(L(cz%4wyhH5fTlc<5Rju`q$04sp!!83Md#;IHB~9b z1!o3Om7e3M?=7?Vm-Mp9-31FiIvife)#&_cf(tbgz6BQSY+raY^W#10VYw#BWflxySO+EG}Z(`^_y%aaw?f!5?72c|Z!CL9qrsQ*f%22^L_1DHbozU>nrcmJUnW=N z=YhQ96a~GHio6%jpUN?Vt?bY?^c(quq-%V^Lx+Ve`u5kapD;Ij-Xp*Gb^bsJ!6>*Y zbCK1Dlf#p!20;;dj2A@?8_InZO%{28)FVMJaE4`!`DL1bJQO`E;=svP2keT-h4QpH zfm#$`J1fzi4&M>;0&;_Y&Lb{HByM!@-5Ql_$Qv8pPW@ET37#uZbN@2z&nq*83*A1K z=`X2pCVzPSkvp7k6zlYs9XbD<8jX#Yn?{#DUwyrv0pYD@V5@}%L;~+Ky}Mq3Ow2^N z02Vs=YdACksX~R6^eabnOpN`kT*CpVQfz=kGROLsv_*Xu>ia7(H22rEXfLQ=LDnwi z;=sjXfgPW2R|<7=tRL^ytj$7fh)+`%PA{6Q&P4~A!N%i2>RbZi6x_ZnFObi&scvcJqyVblM%%O*s}sP-PbuPpF^)gm=v!Xp6-HA*qs| zb`6x>uj5@=F?V(C7dsHw6A+JXyj5I*Eay(rdTQK8 zV0_M}3LS^YzD>+YV;u?L%G?`)H}#*am#(#0(URM$cizq9h%6;I1fu348d|uv9`ChT zb^$SecV8cW=lk=0|FO69hwsC|@%dT(%Kp#$%GwZRgVVFlZA#8)d~z=5oyenstbr&` zLLa^-kw3o`{((=EUDU%INK|9n-T-xp=BC?zIJa`jtktjNW0fR89G1f7*QXh+{AKF7 zZs8}LUPP{If3PJFNKRQDxa1}b~&m}QlddY~DI zo4d4>YbJyEAF@>G@<^6Oi=z<9EsmHk!YxF$Xf&eF%2GIBu#vGZGnaG8Cp>|ox(}tT z^bv>;yj$CYJ)>(wc!J}%@x~gsY_0n@pt)`dZX~_t$cZA zto2wxu~bny2=3CD$}TiXK!+jWMzc&4xK;H-S4EkR3s8G~uO2#2sHQi?@{W%I;!*@iHz#AO@3mT2Jd(6Rnt50X zdiUK$b{8&FZNWWT_k-uk8z}wahGvNEq??V3QPTAKYYNT1Bbz?no@exwB*5a{!pkZw zS%06QuDNtC3}B?x*Okypdo9K|@I&lH#5$e8uPBB|yD+USK6smvf3f z`4Ns=y88maK%{e^=mE$BntSYZ4;Q^2tU=Hl>nNc4*A?&xLAJgT;H(gxo~AMnfAV|4E32}O^-wFH zUcdl1*1D5y?VRyW#rkIkIu^U%y!VVm2VsF)(nQRXHk!@A7B>}a>aedWwFcO%vT^SG z3E1-hiRVu}0WGR(q26=)X>jCmj_$_Nj9&neXW?xlxBLU2vK@>jh%NE(!pQTbjCI_2 z$-Y%0TE^L0OThvn0&~*F1>U1%+G(nZCT)PsN866P1QxoM94_0ydU&s?)OT9U80|?9 zEpL@sLwA(<8@n?yX~JU27iy=6yRzhYkei?^o*R1%RfXYPt?E+CAEpu2Zg8&(i!wd~ zQ;!kFxSbM&Qq2@I-SJA$e~_kQheVMnRBX2&k$f)a5&+Ke zn+;2-CcxB9Yz#bXc2%mqh8%AS0iIv%yHXM#+%RGGawZhpn68byOQY~7Rdbeoj_TGv z)jwx>V3pCAV8sXrVcC>EoQm*npk`3y3$SXK&EHLu$-k4S=h5uX%E;>am zEjxeKDkd&VJ#MxZtjb0~28=@cgZD=xkHuDRVprt+_f*5f=dgWV5u=wAc8?GV{$9Lw zt~R&A0&BW^04^=`DO+}_J*QOjd6ih^a-XC&46rmZ7H7tJ z;zWS(S$0BMgA^+n+c|;YsqR7Nj62*R9TFX3*uQ9Jj(dg5LZ2f(hS$hCv{KNHHEz$b z4ijMXN;qjhM%$b3J674v;@#YRvqS%L&;K9nKdjZ~ScU-vG{^k^6I%4Y_#NEV(_I*A zkpI}hIXGODR*M6e*8i1W5#GSS{jbZ4;Q_|-zb>oROi{_n;B2{!qE z2|X|9umt~m3yTQW=RYbkwH^`#rL}?-cI`htGBub5mJv{$AS-{s@Q-=?gg$guTANNy z#6cyzf_?@HhS_JRAE{QCQyQWxsJP!*36~N9Lx!~VNxL)o?0F#JLtK56UD5Zi|1e#7 z-(KXl?^xdYo1y}7?`{q^$aE+VQP4+R4q3_*O&N(IMMTtD!uSopHSNXjYTIWkgh4hc zSi;JnMF#L3W>jrXAn>4NFvYUUXPpv7Vu|V;@{OL5j8MU@8VF-K#jSEQ?ZVTwzXh}9 z(fX~g<7S0_p1=Dq%6Nu$25D}1->O&CeXim~$6n(W#F(Xez;~Y%EjCOjazvL8R+wdg zf)H9}LZkuLnGV`NJcUc97MiTFYO-!o5`N9yPyt}qQ7gHMAc@H>Xh=@cwWzW}DX%ha zL947~l3}T-geCx;jp1726tdq*k*DHf7yY3BaQidzfUD-x)wLo%G_!bo@li54U~h+7 zZjpA_T(8XJn~G?4tE}^qC)O1AzEaOJsdhvAJD+`4isy-PFd%lu=Wx8OI`|9U;&wp6 z#FJ$POIGcU^}x~V`(y8T#puq#-BU1R@A7|!f10F9qU3)$OP69rMmf8PPoOgnr#^ruRhBjM9?k?PUJZ9@!p{q1mi%W0V43hF6fAX?mQ;5C zZ8$7(CrCabwEd7)Lm6&gzgXvwp~IPT6UCE!jLBjF>KZe5@02_bNtCSVr-yYZxA%%N zg2UZ^h>$f0#*tSrjEpS(^fYP-tEFm92Q!{9gzOL>)&uSX{)4RL+qN~@ld+qh?&+@OFTn^^8QW6qHO3C4f z@CU?~ny+No2a~1CX!Ukp*u#&pffT8Zk@APa_MFmpqI#@mLz$tF=r{aE(RW+BJFd%i z>gAYwu1oGpva1LLnj*-V0*uBqB+TC%jLbu*JT;?FRg`k^4egTdTh{DYZbW*XozZ^rUj4HwN7W zY#9nIAyl`BTKbN_$)j2|cRvJGY#0Q(gv8m&sfbrYyt#>UJHu;t(4W_)*o@5QYb@Ju zvLBf3W%f$QSX(AzI771sjWyYNgF@OG@8VDQQP7eRm2*C{@WQY46B#hnCbVumngLW0 zR{CpgZ$FYRYTnC)^u{4BaNTWC(a|^AfqvCZG(yB4rVTBUQtPWF3PHm9=Ex^9qiD$Jodll~&yzoI8N<-Tl8P^;&>K8j@uoI{}Uw-n1J8w zXFl`O*gQghvLIL)?O;x2e`{K>6cdP*L*PYjati1elh`))vY@2pFnZsAYASpgjOJs0 zKUkMtlrlD2^3)C#RGTlJ&~Bv;o;LKmZXHzNeLv_@Sk&XC1VFp=zXr!0=S4M+7g^cY zYc1I}YX1r`m#qY#ovQ1MutZYd6D25Fz)Mh6HRgChLiy7w+>~Y1a`p}~R%#>It9iE*NWL8?f zL$#c|V-niW7$S*8 zf=oPWlxfsu!D+=ET4D2pI~j^=&yHgo%QO)qUh=@m5b0=W1C=*Cjj|q!)KJEng=o8e zGq5;iNPaTG3802l5=5WPbD|2;oB#_q1;h`+Vdhw$q6L=WiDoL2@I;H_l^~xkv=KyK z%xlVpu&x07PPrVXQLUhx+*oKRiT^;2_(k5a;drEp=SUU$>{_Nc_&N(_x`)hVlI! zu|ZO#kcN9<4;`BaPv){!l~9wK&qfAGFvkKR*Pw1l6u?p zsueyh402f$wkqd)rRnv!lBIls8ew5JpOWyd3b=UJzV+^;bN;q~I3Hj7cu=KS;?$evZ$wUwk!P`OQJyLV#L=J*= z+Uy2UmtYIYwa8ZErMoxA>8uMq?_hUy`NOIwo6*SiktUG1d6TSz;^IhGfC^of1vA|& zzjVo|qEv>~?>YQnxqfC50YM;nNqDCNy6?rDPiU!INXNpFOI6pe})&&JB9L| zRj#Z#s%UNbgPGFP@!X|N6k7ovV-Nk4eW)eb#UDwFG!I;BeEn|OtCUu2`}XB zP;o8P>c*M2K|W!MKAgp2YE9ZY)*pXvPfbF=1KY487!#~0TpUXZXP>LH;Yus%k+(UZC#T6F77{7|y$O^UOYN4)!50)@Wge&^7WmeYGHTk{)f=UoVGAuc!J4 zR!I3~Emb-RrKg<&v#8*S+!+Vn_{#%ipCItS^ zV*TzM1qog|{6|;qzq-1j_s0N(Y9|9ckNX#BOw0g@YI~mQKWH!nFmL;|t~hOxzvB%X zIp3#71EBe{!E5#u+cLur#~vv8Ul8^S16TCjZu;$7TRUF_Q&iA9N>Mv>&|B;0{@T6l z|J@mE7QVqn<8He}rTDq2S@xGJ(Dd~ta3YZQ@E`p?)JGR^T8qb;>D&f%e+32qP4b$` zh9Y47)4#YYw{1#C|8VZ$J1)R=wfl{ZxE=;M|I5i_=93Be&YSL&N>&rC0rssuY>hYG z02)$n8B%WTCSNGO)r@ja_;sHvbJnzaE&h`N>T}k@GB%@Zphqa*-k9LwXXa}Nlb6fz zhwC%?$&;sno8U2^i+>KlJ=eBKg-my1^45A4F&b_o=2XoDJWjc~tJ+$#1 z^sm*^MPmL{Z3B3I$|^6Ggvv|;v-1x=JHqE3Igb}H@==sfZ}05-`U6qI_LCep(M+G9 z$rChMU+-)91^QcE#_J!Fzcy8>h<^F4z3S!qm`b!rS(6VU2uDC!(uD;4V zu_1JHEEDC()ADq|^v3CK<3b`-G+FTMdqE?$@_`&iui~(SVFV`;M*I52U8;yQqTdx` z^I%DF*^u0ExD0Ei1cQ)yE6x-s7FQAnNwn&6gaoa?92>irEn@rf6SzVa8Y^Ud7z~88pNQaJ)m-(gNTloWQ{vw#~xCp@Tm{M zhTn!em;@U#-=<20e(`wxhCCe5O&t@6GMc)k0!uEQE*3&%01)M?==SYGe4A-k+MFmX zWm+(pJEbD@!C?SWQ4~qp;|p;a2TVf}NY*Id>aM8u^Ma&j}DKqKq{%7ah!BVJNP~w0+*29;9GW826q^ zYu&>s#_Tsv1y0PyJ%oq8Ef6@}u4eMi@JjkH*TFA+LDc{(9MZ}{t%p)HH(`tg7t+Oq zYwyZF>uj~hS41rQK6y8q2d*8%$5+tq7_O6u#<;#RC7chPa8s+=Da^|sNiRzo?`=unO zQQtCj!4(27Z#~$uC#W|yL!WvKXISUNtV`E2D6dsonIY zF3|jf{JmSnScrndS1l+!P=-}BINPrEk zZX|%LURw0RUOdH4|0MJ1l0}DbpaJ#SCQOPg+Lygs_j^vy!*4m*e!f*7Z=vv z{Rq@B2Q5I4?lo_Q2rPX^FEFI&|4k)&E?zj!#N&`-{tcb z!Iz*tb~H}Imt?_Ws85ce(JWZdS99gs60bAzm~qjdnHuKc ^?^N?)f)o#Q1LTn3d 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
AViw1}9F}%@lEwfIqKTNWt_pG@ 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%0D+!LBm*Xg? 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

DG?T}36ccBup4Z@ZL`(n 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�o$l{^XmC_fgZH?wKt;q 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

M<{nn4 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

}Mc4k(ZGO( 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 z zzrd{ecCYS4uAQSmn-d;g*OFpH5`v=^W*o~mg&?c%vPOyzwo0u$Z?c*xjsN7E_}8Mg z!qVeR+x!~kAQ3rt9q(g4LvtXU9c z&u`!cW5L;Dqbxb3j>Lx=q_E*n<-j#+u=#Z=hWX#O_G9qM-G7@a0`fZWP8fy5g`;9TFwX`qdu@9sL0IpUkqfwN_LIGRAsjfZ%Y_mAA+Aj6B9pZA5f z2uW+d2oZJ4^pUefr|?zA3%ef^(a_u<5Dgbg`hdgZ)ppo&%8jQw9g`En%aWrF@VAl!K zSa}^6cXhAwaI?;O-i>*)3$!i@*=;B(H`VfPtrDv3;p`|qd!*64h2BipN2;b>130}e zv-wG^7)|qzXDal+?tlT7Om^T+wUMP36K;y;ZAc$fqg8iuoaeFslq-UpdZ;&tPS>6# z448-}d}B|yC);)4s&UpZNC+F7^&%S5h4$(6hTy#n?swXBnTd42ED4YM@uEGA3qR6u z68tf{QG*+IQRddw@bA;}iqt$AN4IU=VP?+pR}y0ZqE>@5d%($JEEo#x^=uRA@duu*g>SqYd|-^_y2;DBRn$pFKhM*sGMV^ zbYu?&1b5Az&OU=S1X_m$l-9aHAGH|Dc|Ms)C)ve6VaBArE^#)-VuS=iK`=n)G2eO_h?vVP95n(7oHLHWCq=wdRu^lU>Y+DH3wNeNz z8gicTIe;SmPN>LD7bl$G5AUWO*br)mMDtW(A`A7?@dvnJ`3TDxsRm=Au}z`gyo4RM zU8BKcSWJ}%qqnHYbhH7wNo$j+?Fq83V=?GD33tE%%|D;fOP68fVjbPr54>&s_I$e^ z+v7>f7M5Vv+I{U3cF&#P|Bg>O4RuPm5ZbAFdIJYl8|-23v3RUn_mcz*eXb;1j$!ab z0e_4;j-_cqqEr!1ZSg|6Nc3c%{yEKArxJ&AFHfnSuCEp?wx0= zi2_S<4JBEt6mo)&u!J7MkblMFkA|?Ka6~guA)kk5vO?;y=64E3- zpH_qAe`htY$`is{F=CttKsXi&V4ORnZ8vPxGpH^@XF3T;ua$q=ntRIzQe`DUO&>RV z&U<(y?oPi-HSWrVfM&qhGt)s(by5B3`3)3isRk$_gYQ#tP>~&-K;w@RmWe@B>RoyA zL09=Q#9bXI_E22*ypbPQZCRlOMAFg9wQn2^$p~p5$5BN3nt@7}-NDa)IzdW%< zU0Gs&)y^}rPeGAxpzbDl7jmY*4g@mQ9C$Zl!1!2bD=t;sZR!zGst~tc4|!*hega^` z5jXw;k5>Mki?)@Pm?-gi^#gaQH?z41xTANN@zwRV?YWh$M%IrZ;SnPZ9B?x&kj2t& zN-1#xPhCW)>}FE5&x+RuWW=e2l5GnBmrK3Ai*QK^X=PI$oCg>koe>%{6N&bUjTnzB zzshE1&^>H+awCe}McujwtoWQ_I8gijqPFGL>kkk16t9352i7mK%OuxAb8G!88IUd;pC>hmml@l1(M|IfV>@mY zgDZRly%lM^o5cz*dN=E*|G0$$+o!O2a^-F4#h)E67J86IX6Dl;1AeP;=YS%KObe}z zRYa|ST7}fxnS|sa1z|K@fRv)sN-9@X!tUDtYMUzw}@refh^`sE{gdGyM*LNZLsx8FnlLU1!$gZFfI_SYw)VYPWo)VVT}8^ z#wkf+QMqaot)ra`mJ&*#_G39?vAjXU0cQm~)vsb8HQXkDW6yHLDoV|#rC@p_oOhF* zy6MlnYG-w6(587tA0>?r{Q4>-}%OE*AsDNGaj_X-*MNw!9aw5&N%U(R#6mhe2fPHq!P7kQIBTatj`zJtsIt;? z>4tg=nbY{(EdT=gg+nnODI1)qpz=GR2b9|7pO}No`R3;Pi-ubL^tBJQ+pkN;C*#9c zPH=w}4qXNmpQ{B+}@AsJ=Mqtp@TR9?blCC)~C~6+N zf_Hq5{^8HcixZmu4d7sp zEkw&k22KtJqc80o&_#Md4FtEUe%tA61_i}a8&>Q~70TP0c#Tm@%`@Ak z5Oy(Zd;DRLm@#CrzwaJ&Blg^mZ>MD&sM(t`0m9S7llbcPbE8+-VFAFDEFu$HqMQPN0fzhVGknttL`{jp7Mt|?A$I4rvI5;0!hwYd5*KGTa!xE@I z5D;G|k>0FpexN36Ov1;nL1j$G6c^HogGsq2vV+hdA^$?QHj7{%m+fMcKgFti2V#XC zoOeAAvE`--T3VGd>)IRqgIUj6aavDU0N=ybeb^rrVK?f`j2-3JrVAwq5>mu@tBpS& z8cDa2h#icY%eQ&Bd-*~;HOWqnTN1|=zu=c}FCP=Te%!MNMXfQV3U@<4Jz|PJ};oitSkQf=86>xvWup_=PhxQW)P2@d_gh<5*sgGV_3#bc0=ITko zb)v_%uSX;w(?reRE46j*#>y*{d9d(xKE|0EG@G6Lp@m%W4GL2T&8(j4b>9$CI;wYg z$p~kgg}P{!hVkz3ZXLGHYbBJg(@VEg^R0w>Icp)&JvOr4HZqgkRe(u3w25BfIJ!aSCdCmm4;ay1!gXT1eeE<!ccFghi*zn6BB@Ht;TC#1I*76EJvvv_NDw>$u zdYb_yBcjS;Gr&QfnTyE|jNaq|?7t?6WptcN%ckagpKytO5Rw5cXxPnycStNUO)-7_ zeH#9MA1u6)B-?}c$oF;2H5bm3*d_`NaboI==&Z!Xr)EA1JEHd$12b^hRY8bTa1~rD zjgsyPhe)dESe)T{8X`%gUu(|6(1!XfGnA35A}T2ZiU5_A2)W*J>d0_vPlc2s=iv9H z0FgOwCL$!^o?1N8O^QtzL?PmEWZ7RFu`J$wrnWNF z%mAIr^yW(27l^aj$iE_8zbvkY?atsEuHMJiKh2?9k1Q;~%AQE{5BLb$7l1(aoiwM!177js9|;KVpGYqJjjKN4a^^84 zgPkK!FSeqTg;LpIuD<8)(4jX#V~I`*5)9}WY&q{#3l}_Z(EinBDYC>wRhngg8ZQEN zBg)d&s!A?lV7;M67*?^~Y^O7k_LqsuGELdVgbhq4EOMi%*Et300zzigYWp0YT0;Fg zU(c{FkO}h)F`OC~X>^d}pBR(cTZYKM`n@-IZf%8XDXQ)bcZlZH|srH|brOti0pdx=5w zqZ-OK{@8f=KbeR2E&if@vG!2XX1T2_+%Cl~Wo|*|{ry$BHNOXQjij^`4~f#>BCV6o zy$713(%t4k>Fq#{8X?kVwj4kCXDM-dT9to;!3A^ve>0r#k!{yo<~n$Ut*3QiVsTW9 zq!;q!7n<3kTmRa<-*+VpBYqN@f$yRF9#y)RNZ1`V3T&?&$ia&7(8Zxe+LwqHL2Tcb z&OUh@I^+{YxT@-35XL{FHYX^2R#J-3&-wq-0+fPus}Sk--yHF`Yrz9xRaQjsF|GT+ z&t`jj?6FW6w;xBbHqBb(;&>t*TSjD3q)I(>#^lO4c~ELqFwGI`P~yu z6cqH6q1`IN-S2sNa#cxB*shNLR>|xVSG|m zI~r)$dZsMi5X_KwGW3~zAvFV@-4XF1C~T-#R_LK+OvQ!LXAUKtr~P@8`sXkud~_}% z&)*06{QgAMhurb*y$=>|YfzI15lAEToTJy8o}_->Y@h}lNu z^I_oNkHkrZ6)Ldvw)(Y9aB7V#1CM*HYS^4QYr#j z(I?G4*}8_EeR9n?--CC~eT3HV;iq6%=)3xFkKG{Z9`XST)Ar`R<{iwt#`(4|h9n~U z#pVh|B0(TO9}wXdldcnK8Bux^VCPfIQtDKHN+D}PS!<|#K#(9d9jOU+UY+G+h}nSv zxzgdviVEH!BjH4cMhRzh4kB_((QSp7jT}n4yG@O6=^uAzlHqL4IfzJKWC+VJJgp5Q zgrZB{yHfyZGvr?^0(hIZl(q5V%IySW#Mi4?ksH@vn#vS-o{EWYMWY}2VfjXCT|CyJ z^Knj4iBZPHqg4-~5xG4{U^LsYc-J|8j;xM>X1d0J1XGFd(jvhBHg881>|` z9{!JA$s8H(B6mC_$U524m~bBUM2&bT6Awkd4}h7+plLTB4V+fF(%FepekInHYc;f2 z?}7pH^msUe3RA2j6SQ)>#>TDUi_ou>)+mkhg+JlWFb>W-O|&`3O+WI|N8&`{W*I?fp5SZX%t(Du1}-#;A3rrxM94K? z>j2;Yr2Xq<#j+JF`s+z!eD1il0ww=hu-Y%pwp!!D{gNoOA2Im-Ijbj7js)E<&!GT6 zy2HpWcgF05M_j|$zWWNtmx;w{sEC#|8S0%m?h+;4k88*KAW04u3R+bXl48WM`>~Ag zdhb?OE9RoOE8m1hr&X>;P}&|xRWAJ27(g`0UNFBsUiT*~dY}{#K)?cc#Py z9EfKzr(FH?} zY!o+8eUD2@dU@0Bec7FGoV3KPIf`rbP9lmcHGFd51Gk2t5-Pt(C=fZDc19dZmjR>B zN#1-C8iU&641@F>S>dMr;uTC5nT`h^p^>`hYwz4y#OT`5Abj;#!P|8!UHPekr$UQf zG3H8HP?qEvBhO~xkf(a)^<~o>S-=+i3j*|zhooBQ&mwKQ`PZ#k;fCjE`Il%3vXs@JRuqb)R;uk&*H;1VKNozQHBQ!~bM)emK*-BT%YY=u72MOyY z%W*AI1J48c$uJ*+Nz-QYyV>hYDU4BJ{NB#y)%Xl6{iD`)jSvZY{{Ycw!v1Djdoe0> zsP=G=jx@%hd4=OzACmDUXX}uS1)y-LeCCYfz4+49X}VyChvwBE8XI|+qe$v00=m(b z*tAd>oVMZ;XT=yjN)p@K#FG}u0oO46=GAEXZ2{1hx@f=weKqhH!i&KR1&EjKq9gk8 z2t7K#;2P{2Ei*0rh5^o&0}T#uvpe)Xx1`XZF$7R0_lwwb7+0cDK%%uB4PKQOT`y(? z&Oor235uyGIz9Ew>RG0;@{O1#kYXcT)s2~uDd!Z|c2)Cdx~aj0favt|ikV_Gjj_T0 z!^0}w$T)1ty}8M_eo-1`8LASHK>CRa^t~p%CgYTwu%uaEI)J1#mY)E%-wVSkdekqSTf-j0G&{ses9*y6+D>jFo z2w;H?cnLY-0+1CevkoOO5t;|e=4!EPyu-0hNP1#N!Un~e@@Jj!1jhyuN|Ap_PadT5 z-FfJZB#uUUpnuJt7)mAbsIJb11TI9Bsyh$3B4B%FaI2g!PjRVyb`5!&TvSqMg1|1c z(^Q6xJuv@j{{t!#tY@hk$;$Y>A(Kr^AoR;NVplevA29q}tM-B2C;;KWv*%0d0H>I~ z-YB%*tvv@@+KyJm3^ROm*kwNo8qhnpovB%&Ey_@o@oxPg09fLhu}^-U`3)8J?ABmUH9GlXVZWJ4s9 zYC5O_pZB4C6)*QN14Dq$xA(H0O@02>)6kp|?}rv^Ef)@NgLk%sJ~2<=ZVIN^s41T&@AGpxM@%(>c_W|vXIqQauvV6i z3pc096B?)5Qbcbg^R*F9zaZ1NubA4#v;&P~E4|@r#ct}EnRDfsuO#TR7^BbS*W(Tz2pkB76i2vvKJ`Bm?7Ge$ zzEbl#&3sVP_-0~*Dl`%2E|o=sK_BFa-mT^Gq)j_t4=e6({j^jb?IX<8h3n3OPscY<(9*|EcU8DcND+UaY9J)GD|A?W6W333Eg6Hm&y- z#UK&J;_3qTWF+-6e$~|UO*#6&0eTD|zmw!pOOQCa;RA%U;qunND}Ku4|hHi(kbExpi$Zw!vk zL67oQd!)sW*FKzFi&$x=2x*|r1xcr=9d#HQs2U;UKZ9^EXKqZ_-%I(26ZJvWW^$9| ziXQ;od;nJ$U(=R#RhV2-vVDO}3xcnU?;puTNGQ8&LHbD&ARuY$|C=S6O0+YMZoj~)IPsZj@_bJT&tiLOfK-lx{poh5gex@W+@LBb zz&{SO=pvCz_U1a{8mB4JVWqm#R@iGo6(2w+`X~k2sKE{L*i1^x#x?7&JpM7MwQI+6 zMK)!3>ityasovjOl=v32&bB#QdNw?vGU6vIw9q z8E~a%zv_f#pAgo{q@_~@RruzBk;=eNK2`WJN|GHE5rRqXlnWNeuKFWbj>@Ajx;!yZ zy7-6Mg*57>ZWJF@N^)1lKPq43xiE>cLWD4YdL7ZUN_75>0lh0xlwb_R2Xi41Scyk~ z3A@o%SAd>Vqn3;k#V1M(+eY-SBPQV2WspCKf&7zxoPjT`!?qdZY6@Pj^rLb_tO%~^ za$@otT2dSjIVy2J30Z<XUuuuX7JOiDgH~!V>!HOL2!>zSn89ml^+jf>N(-7*{E2 zwm|T@pBt`)I>({}CKj*+E_vx1RVgRDXtyxuT4_5HFEco=@x7!L9xId?BPKveaTXq0 ziaZmVRk4wg$_cZ6E8IF(IHW5s`86(pjjMe_6T&9}>u0?$lLFnk?~ejg<%gO`Yc9g1 zaCLLasdlm8FmUeGT0#P|Klg{Q&nN8jJ4*lw+Xyz)-zx2 zqHXu9M0kR#khW?uwgciD;CXYlGdmAZn00Dypj9=Zg6^S7$?say!E)pGn&P`}UxNPx z1L}3TNIf<8BtX?8K|4^CMYk?g{Es1y<^ZS)FAnWp$-A2Ya)ZDCYd9A)EIz>(wN8=K}Y-fE-TSMIJ5P)+Ng&;GlGXqpetjh?8%mA zw7C55)w3p8<6OGm8OZ+$OO zf{~pGgcG~p%{bnjFBAV7zFERLBPU(LS3FvAY9JXirG27+#T(uxjzzW z82?Qgm~@~`gk)eqKwAF~%do|}l0xJ^CV5N$5Cz5mXy6xP6zE9*ML;(w!v4qTjy|Hu z;`=W`LrTd7@n6G?n$iyEr;&=nvO)+R0|Q6E6(u14{wV03UjkNA;ZK0B99PU1)`v@z%7d zj4xi-35%VoD*F5mZGc8_WisS3vS*1<%%VGQS>F_=13I2rmGd&V_gGm3ZHSJ^%7 zK;wV{=RkEJbWEmiJJ%DO?m?rz%N_m+!+^q_Rpe@Hgc|$d!_eD_XgitFTS4g9IUi0> z#M07o&HAf~)laz`6T1@bj;_IrVNSP+zH~3YJzPaoy4z}XI)G|su~dd*=!(MC&5ivH zB$Eb91`5A5K7b~8n`?pyn}QJsKUn-i=Xj*=*yWB|mp*4??84H<9h;#Ka&!;~>n|m6 zQWB*M5Cs|q9^GM>KVx6o^C>Qb6E2emhF$)rvVdCF@8eeH!CS744Y6r!nwEZ&|0kG-r_J z8`F(mc%aLx*`}A4+uqK-u|bF7G35t)N6;VQ(Kc25fj$e$=BSYAJn*>>iDZ;IK zkUB?2u$9E{4UzYUm;=j+`|cUvCl)>3k1GZ7~}5eKkL*8X00!H@>V1 z;veJsKL@=dhs0~g3l346;!X02engy!jmF3s1QoGV??>SeN{cTBl-+>gOO6jguB*2J$OAy|CqINiWYa1#0*_?kn`c+ zF&v)WLM_(QN1J90WWKBVo zqfdh!{CkQ(Kx6U(18|GN$Qg*8KPX%$li5CX{TcIijGjfa=xuwea5$_O7OhoCoWh=YvWo z)@#*NQbE@E(tlIHuFM<0ZeaZ|;?Z5s5c~?(be7#|$6(rlS@@jU+i_NQw3y{KTj({r zDLSij`EFxg$u&c(92oZ09KBLfNa#)1 zifkrB#!WrrqBz@(xfF#QX=OuRqxUl*51{&Q(-t446q05S$jp$x z;Z`83R57_{fwpj=8Q2s+NL>yfis5u9rvQ!Bf87%*bLkKEQr zEiX~>O5!%P`#LOsT%~|v|04t94 z=^|OMPw!2GPueIJHIR9+1pG{Tg>n4^TjPCV;pU3zSqHPdMSLuTyNH6D8I(wZWj{oa zKkldxQ}fFr=}?O2(8HB@q&Ed|!l=Od<)iL+7|G_YP1ZY&Z~tyCeMHMf`RG!B2!}=V z7YZg{N%ux?fh-qQ2Ns-Ic}7Gk0h@+J>4=&&LD-BIa5af8(Tk_N|He{|X~50Z6Nz3SAX$ z{&X$%oE?VGeg<@&cVWZU-k@@~`oG-(ON07RBc_2Tofk2hYIAPCftoxV9EB(&uwHL6ENK_!gst>MBsES3&mvz z8B=($wthUVWWkrae2>nMarY{h6h3%Xb^CAka^LM@IOEQ-y}VK+b|G=Cbiu1zB-J3i zvT~A8y3mT4I)@LCzRn7^R1Y$-uA*fFf-fFhex)RacgGdK6VD;F?0`@QZjPdz&J%M_ zEObbxSFqUvQ<(sR!Wl-7wre4mQ~N#qqS%1)O_23;0z2(^7E#?7l@h19i1FFFkpt7b z$u`Hkh5E=EQ+NjdF*^|?dbs_aHC2=|h=IG_Na0HiY`Wsiv{QwIiSt=&Cd zHS@HG(sWDr^2g@sG>w^6uA*SNo|Be4pjK3%1zU?)b0{h7mjVwT~5(nGGRR+TH@Gwn?pC%|vq=PL`PGzi<5@xD+ds(V|W#;C= zy{Sm!fggbL#81rS4QH?sE4T-Hs1X>+G=$Nnmr6i12hM2yv0Kk0wlrpR4;c3#r1iT6 zySmD7)A|<%E4EGKkfpmjkRqX9ZC6^$!P1}5OPP`Um3-6Q<2{PrfE|RAT(-nY5d@_K6_1};EG*2}J2WLbQ@ou_M z4dZ9?YA;e^Tlo6C8LoW*Wg)M~WAA`5(wbzq{0)=00a|gcF)qZQ z`Qx9`eD_};i9*ai;yr%= z#vU-N?WtFm6CzZkoH+cgG%ZMMCQGMhLjdG>h)h`)ZaGx=wvawnhIWpIoDoP`#w)E5 zFPu364V!>lP>6-_B+Z5Kj=ZSmtWdEez0aKGB=1>@AG!aJ_f(?5hNlr?%*0FA832qK zsgUM*2g>ye$T``u`ZR{;s!=&D_!q?P?J9r))54qy7pT}m8x|Z^I`_KhV?6s%@+R+I zmXB}ca|6_M@U52t_@v{A)&$g$LkMt#--c#=zzi?A=2J+&%`$O^9<6+$PYXnCnLkj(O;__DCjdG1!V#&_mUGAJ@zfzMsc+oS@=993xyZ16u>dz zP^jc^ZCe!NY&-XsVvuUJS=FXz5+orhP@d-vq_$|J`S_Vdwb#V3mApUoP{m# z`Fp?^+ZOwrS_{7RE063_0B+!e3b{wj;uMELVAU~YetF`TX^F2!D&NYwzr@}N1dp=* zTU~}QTZlaH6t8Zsi|!PI=iSt$)|GF~2}k9GhrO!DYEDr$n!m3jcK4`Fza}7pXrFCL zXe~)unOsOxvcnhw(_5fR_3f%6Art)JdJN!rc)e^%Y;S&SKxOzdWVAxy|T@7 z(x+#g&5uTL=12@~-T|d84Mm$;?fiS0JMTCyn&hn>%y8Pv8*5-MSP-*Lnp#^#ITE;~ zorPCe1z1oc@u1v&d=G6*;1NYO)4d(Lg2wq6SV)dS#AG zwn_;qmEGlo>XKx;E=*>OPR+o!6GpPs=7pM9EB7_yEvIEvdv=f7%*Hin1Y_eI#;?Td zf`EXtyrat2{f4nIq?^{WoV=a8;X#C2qKP}YnfbT`*Oj9p~ zPaHu8hG0iI_Soceq6f({&qeuqJ z?Sl9#aMK(NKecj?elO93J;h@$G^s4bK!t(zgBIY^FihEb~X0< z8{>7t57pdqQAOqa`S2c~-A>@T*0*0rzCmGrz))(%d%P@g5FA=OCg&;xQaoa+1;Ccw zyJZ>c+I#0gC?BEdDFk6`E?2+1*AOoAXv4zT?-^+Tpa$O+k4Z*uv{ro00CtT8N-A!8( zBv8OXv^644c)c39QdB(PTva%LI`#=E_ z_r09mDz5?R(;S;ir;6-+Lp>c?~N6v;e2l0z|+?z5X~XtPzyK@JZMI< z0$@p$(#YkYfd(8{28v4Bu4_z0j|zp*P>iY(v7@cPh73gu)|9VrEzf}*zT*x2C~!Br zH3;yw1YQ`M=!m@EwA5Br4d0Yqq-edZ)S)oOe6*MaPZi~jTb;6PSvZ^h#C5eRaP_U4 zb#O9YSbDW+=lZdk5>}Nz? zR!J$YDSYQCV(r}V50SdmX0p7cxP3paFcKaDx;vnZSC9J)g@T z$>niZingJ2KNW)GMT6UAm)wxDfO*`LF|m@r5FgeCaqdKsdW4fvp^nsqvCpMkl>yFy z(CmIyT_HF~>9-&&sNLODVCF9CFjg%cT(~bi8#+jMxC~JPKJDZ@FI>u8IcB}6oWnkp zC99r>CJOYIQu}sKP)yj&zcbm`?)&9!_k^ckoym{!f)D?EhW*Y4KX0?}Nw-Jqsibe1 zRt_ahVoHi(>G%iF6hoePDhb(e$_>z`zo*w$Yj>S!zvOyXH`K1QVk*7e9zWrEoRDKw zXav+6js>Tyfoqeb1?rG@*iobj`(gwcFp@2spiISoJB=Uv>PFUQTjSr%13I#;RgVX{ z^|6O? zNZ~b8#Do1~ZN9R%?T3w0ns25XHk4I?7{X1kgxO6|&OQIN#=t$-=`njr%cUOB4?|l`i0SPtEgW!oh9UK#Nfl%*!{P#HK>ZR=s<+61Lc93FeC?zTbmYRI zK+6OBBHRhpg5C^|1f>F-t*lx(LQ-6fU;JjOBP6&rwM9I_E`yL?u$-WMQLLkD6++dL z@(1!fn6CIzVtP7@RvG|JSsJ)MM}{mXN~r5Oj_YIRG!<}s0KH27@oZ7Rjv)V(-WjB9 zqq3BrOLw#=BMJZ4PA^b3;L$?#1V1$axx`IIBwdad=&G8C`)zGzvbtRUF2A8#_i>c{ zYDm@g9nBs5CtfKm(0PumR&fFt$f!jQ`Wx634PyJ zS-e^<*1-6CPBPhE8K>yD7yFNukr}E@vz`mgX>?|x_0jkbf!^zRz~R|i&Ylg&3Rc3a z8RakU4*y?XcF}cDTfAOBy2{Uwn^2rMRV*Z~V4vwBa8mM6ehkCwN2t;5zZ`vgSKdnSUwk{z5HDWMj%a+M<>kiUPE2JD36--ybefCoeW+E6 zH{J;<_~F@=8(@9yHdS>8KY14qapj&97S8+=Cc&N^P{KR$lYmF$e-rj8FjRw^nFXmifogz>3v6(`CCS2r%p;u?*iseB zS6+er;${jqcp*DQ>)#%K`{ciV%YLPaxE0|ME1YAPWR2#^e{GKCDu0n$8zFH$1c0!j z!{Q6ujbluH7I2EWJ9tdn<%H0*L~;Z;{)_J|I@a-J3U|Kj*q%AkRf&g}P-_`e_n>Ar z0r!$(z{LQdt52-#-0)_@4$`L+SagY$ivY%w^KI4sSP+6x&3IaVI+GT-PZ#q@c5+`g z8u~9JfbQboC@-ENi4Qb2U}-4CqQLB)%|37s@c+B;O%P(!2)q@LHcMcpRja^OOeuHxwbd>Kdn=Eer987(5c!a<=W3I<$kV5i2C%TKKAjUfS@3+=EhS3 z5XiPEFB6OgL7l4q<&3vLyseRWrRExJm-)+c*TtDm3%t5G2i)cZVrb$|WDEngIxZ~t zW{eH?I1e1+3etAjTyiC8PRewDeg^Q?dP@87fD*Z(Aqyy6HdKT&~zz)t>eaf_A-56blaDGHhT zP@W?E2Pw%%Q+oanM4F7JME;*t(QYm!&i}-VKJzKHfBkojRy8HZf00y&0b-Pv(pt*F z|D!n6LAmk2&ZK)N7g7GZ@COV3hWxKVyg_;OKP4n2NUC4|>z)9XN|g1#Q>Fq`ssD?7 zi%@0!Ps=Ft4;AG9`uVFsMFjWXb4GNj7y(16vQ8Uph#@zhXt+6K2;KbNPT7aEWr;H7 zkMm;&z_i9}$Y(@UEBLWrUa3(B8IHu#?MWC4^T?}aFGH}m`9VJfx<o-hL?yJrFAc(0+H+j;~!>12L#Jc!2o12DekstR%HHt@<~*|9a9GmdBtR-LqfjcPPWKBWLT zmiT~~b&%sVm4zIdvKKIF)L^-8OA9u9aqQyjOWae7!o*4D6fTh^xeOwLmDtQDU!uYS zjg$<>eJ%Y|WD}Q!!lCL|+@M z$j>aZNFdcwd03hxi(|D)3@}S=W?gq3={wqF?l>p>^5i#Mu0*ufm~PvD8XT=^Ni^n9 za-0`sxQsQ!RHc$1D0rYSREU1bu{L+bQgYwMt0{VwjEu;{U??JKHD__CVMRsc6e#4k zgcRF%QFjpug?DYUKIHB1_IY9{IM+yo2eh)&wJGuezfp->`wZd04=D4yRgE_;E7Qh2 zr-3;m6azF9pE_pNo$JbS0`=U3&CqvXo4o(^V1e?E?8mUn3MeR`=MM0So(@c*DYjCu_G zsYCltcN=SKqIb_eZChXWzyAZpm49*UO@RUdA;JCMlM|mh(Eo4ysoIXl2TP4Jq#^;> zsBMfUe0BE}99(7@k&6u@658`mngpcVqxa+LUYq{ON=&YTV2LNw>q1OxYv}Rm(4^C- zH>oUF7a&kFi;~`Lf+v+nTGwLkMhrXTyxO z*{RzdP%Uw}^8C0r=pVXSqR6>;C~X3K-^u+u_hG`nuWj17XuKrth8vvV*J8Kzz6|R@ zd_h&)Z}~cJ6!Rx=;z!T@b2*3c9>Pp^XJ;?R9U%ug(&gIbWIjS@<7D*k^d@HKGe$ z|AR37Ej@~}v4@et0|w&XS@8mpGTdJDLH=&w#E!tJ-!FRQ{+ z-~wxqXzpl&x_zR92wI8jETe2SaJW*La&$@jDLcgaPvibv^68QS`_;o@?>KIn@2?@u ze%Q=?1o_LV){dk}tTdX9lV`a$*ag+F$lQKOpLmNUvB}XRPlItF`^&O7Uvo^)@ zydQ^fUpadwhAaWt=HD#z)on-^s}@ ##k{1n?plhBEwmi)_-Fn$g|)U4$(KA}5- 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

K)lI30`V^}dN%=N+I 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

c@4!%LO27v{vALU>6cXRTxBL~bJU0yKn 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Ɯ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

2n+rzCg)?73^jTAN} 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 VjoWDH6+RDohAU9_5jj>zl`MWTW` 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 z

F)~QZ24d*oM_k#d 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