From 128ce8bb0637e262edfddfaec596cf918f80c715 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sat, 7 Oct 2023 14:49:22 +0000 Subject: [PATCH] Rebuild pages at 833f68eaf89ad6f4f1d0e14b3f007440b9b93430 --- .../authorship.json | 2 +- AY2324S1-CS2113-T18-2_tp_master/commits.json | 2 +- .../authorship.json | 2 +- AY2324S1-CS2113-W12-1_tp_master/commits.json | 2 +- archive.zip | Bin 55234 -> 55323 bytes reposense-logs/reposense.log.0 | 460 +++++++++--------- summary.json | 2 +- 7 files changed, 235 insertions(+), 235 deletions(-) diff --git a/AY2324S1-CS2113-T18-2_tp_master/authorship.json b/AY2324S1-CS2113-T18-2_tp_master/authorship.json index cda5dfe..2475760 100644 --- a/AY2324S1-CS2113-T18-2_tp_master/authorship.json +++ b/AY2324S1-CS2113-T18-2_tp_master/authorship.json @@ -1 +1 @@ -[{"path":"build.gradle","fileType":"other","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 \u0027checkstyle\u0027","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":" id \u0027com.github.johnrengelman.shadow\u0027 version \u00277.1.2\u0027","lastModifiedDate":"2022-06-17"},{"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":"ryan1604"},"content":" mainClass.set(\"seedu.financialplanner.FinancialPlanner\")","lastModifiedDate":"2023-10-07"},{"lineNumber":33,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" archiveBaseName.set(\"duke\")","lastModifiedDate":"2023-09-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":" archiveClassifier.set(\"\")","lastModifiedDate":"2023-09-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":"checkstyle {","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":" toolVersion \u003d \u002710.2\u0027","lastModifiedDate":"2022-04-29"},{"lineNumber":42,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":"run{","lastModifiedDate":"2020-05-25"},{"lineNumber":45,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":46,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"-":45,"ryan1604":1}},{"path":"docs/AboutUs.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"# About us","lastModifiedDate":"2020-05-24"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"Display | Name | Github Profile | Portfolio ","lastModifiedDate":"2020-05-24"},{"lineNumber":4,"author":{"gitId":"NeoMinWei"},"content":"--------|:-----------:|:--------------:|:---------:","lastModifiedDate":"2023-10-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"![](https://via.placeholder.com/100.png?text\u003dPhoto) | John Doe | [Github](https://github.com/) | [Portfolio](docs/team/johndoe.md)","lastModifiedDate":"2020-05-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":"![](https://via.placeholder.com/100.png?text\u003dPhoto) | Don Joe | [Github](https://github.com/) | [Portfolio](docs/team/johndoe.md)","lastModifiedDate":"2020-05-24"},{"lineNumber":7,"author":{"gitId":"-"},"content":"![](https://via.placeholder.com/100.png?text\u003dPhoto) | Ryan Chua | [Github](https://github.com/ryan1604) | [Portfolio](docs/team/ryanchua.md)","lastModifiedDate":"2023-10-05"},{"lineNumber":8,"author":{"gitId":"NeoMinWei"},"content":"![](https://via.placeholder.com/100.png?text\u003dPhoto) | Neo Min Wei | [Github](https://github.com/NeoMinWei) | [Portfolio](docs/team/NeoMinWei.md)","lastModifiedDate":"2023-10-05"},{"lineNumber":9,"author":{"gitId":"wwweert123"},"content":"![](https://via.placeholder.com/100.png?text\u003dPhoto) | Frederick | [Github](https://github.com/) | [Portfolio](docs/team/frederick.md)","lastModifiedDate":"2023-10-05"},{"lineNumber":10,"author":{"gitId":"NeoMinWei"},"content":"","lastModifiedDate":"2023-10-05"}],"authorContributionMap":{"wwweert123":1,"NeoMinWei":3,"-":6}},{"path":"docs/team/NeoMinWei.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"NeoMinWei"},"content":"# Neo Min Wei - Project Portfolio Page","lastModifiedDate":"2023-10-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"## Overview","lastModifiedDate":"2020-05-24"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-24"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":"### Summary of Contributions","lastModifiedDate":"2020-05-24"}],"authorContributionMap":{"NeoMinWei":1,"-":5}},{"path":"docs/team/frederick.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"wwweert123"},"content":"I am Frederick ","lastModifiedDate":"2023-10-05"},{"lineNumber":2,"author":{"gitId":"wwweert123"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":3,"author":{"gitId":"wwweert123"},"content":"Hello ","lastModifiedDate":"2023-10-05"},{"lineNumber":4,"author":{"gitId":"wwweert123"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":5,"author":{"gitId":"wwweert123"},"content":"I am from this team!","lastModifiedDate":"2023-10-05"}],"authorContributionMap":{"wwweert123":5}},{"path":"src/main/java/seedu/financialplanner/FinancialPlanner.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ryan1604"},"content":"package seedu.financialplanner;","lastModifiedDate":"2023-10-07"},{"lineNumber":2,"author":{"gitId":"ryan1604"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":3,"author":{"gitId":"ryan1604"},"content":"import seedu.financialplanner.commands.Command;","lastModifiedDate":"2023-10-07"},{"lineNumber":4,"author":{"gitId":"ryan1604"},"content":"import seedu.financialplanner.commands.Exit;","lastModifiedDate":"2023-10-07"},{"lineNumber":5,"author":{"gitId":"ryan1604"},"content":"import seedu.financialplanner.utils.Parser;","lastModifiedDate":"2023-10-07"},{"lineNumber":6,"author":{"gitId":"ryan1604"},"content":"import seedu.financialplanner.utils.Ui;","lastModifiedDate":"2023-10-07"},{"lineNumber":7,"author":{"gitId":"ryan1604"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":8,"author":{"gitId":"ryan1604"},"content":"public class FinancialPlanner {","lastModifiedDate":"2023-10-07"},{"lineNumber":9,"author":{"gitId":"ryan1604"},"content":" private Ui ui;","lastModifiedDate":"2023-10-07"},{"lineNumber":10,"author":{"gitId":"ryan1604"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":11,"author":{"gitId":"ryan1604"},"content":" public FinancialPlanner() {","lastModifiedDate":"2023-10-07"},{"lineNumber":12,"author":{"gitId":"ryan1604"},"content":" ui \u003d new Ui();","lastModifiedDate":"2023-10-07"},{"lineNumber":13,"author":{"gitId":"ryan1604"},"content":" }","lastModifiedDate":"2023-10-07"},{"lineNumber":14,"author":{"gitId":"ryan1604"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":15,"author":{"gitId":"ryan1604"},"content":" public void run() {","lastModifiedDate":"2023-10-07"},{"lineNumber":16,"author":{"gitId":"ryan1604"},"content":" ui.welcomeMessage();","lastModifiedDate":"2023-10-07"},{"lineNumber":17,"author":{"gitId":"ryan1604"},"content":" String input;","lastModifiedDate":"2023-10-07"},{"lineNumber":18,"author":{"gitId":"ryan1604"},"content":" Command command \u003d null;","lastModifiedDate":"2023-10-07"},{"lineNumber":19,"author":{"gitId":"ryan1604"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":20,"author":{"gitId":"ryan1604"},"content":" while (!(command instanceof Exit)) {","lastModifiedDate":"2023-10-07"},{"lineNumber":21,"author":{"gitId":"ryan1604"},"content":" input \u003d ui.input();","lastModifiedDate":"2023-10-07"},{"lineNumber":22,"author":{"gitId":"ryan1604"},"content":" command \u003d Parser.parse(input);","lastModifiedDate":"2023-10-07"},{"lineNumber":23,"author":{"gitId":"ryan1604"},"content":" command.execute(ui);","lastModifiedDate":"2023-10-07"},{"lineNumber":24,"author":{"gitId":"ryan1604"},"content":" }","lastModifiedDate":"2023-10-07"},{"lineNumber":25,"author":{"gitId":"ryan1604"},"content":" ui.exitMessage();","lastModifiedDate":"2023-10-07"},{"lineNumber":26,"author":{"gitId":"ryan1604"},"content":" }","lastModifiedDate":"2023-10-07"},{"lineNumber":27,"author":{"gitId":"ryan1604"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":28,"author":{"gitId":"ryan1604"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-10-07"},{"lineNumber":29,"author":{"gitId":"ryan1604"},"content":" new FinancialPlanner().run();","lastModifiedDate":"2023-10-07"},{"lineNumber":30,"author":{"gitId":"ryan1604"},"content":" }","lastModifiedDate":"2023-10-07"},{"lineNumber":31,"author":{"gitId":"ryan1604"},"content":"}","lastModifiedDate":"2023-10-07"}],"authorContributionMap":{"ryan1604":31}},{"path":"src/main/java/seedu/financialplanner/commands/Command.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ryan1604"},"content":"package seedu.financialplanner.commands;","lastModifiedDate":"2023-10-07"},{"lineNumber":2,"author":{"gitId":"ryan1604"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":3,"author":{"gitId":"ryan1604"},"content":"import seedu.financialplanner.utils.Ui;","lastModifiedDate":"2023-10-07"},{"lineNumber":4,"author":{"gitId":"ryan1604"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":5,"author":{"gitId":"ryan1604"},"content":"public class Command {","lastModifiedDate":"2023-10-07"},{"lineNumber":6,"author":{"gitId":"ryan1604"},"content":" public void execute(Ui ui) {","lastModifiedDate":"2023-10-07"},{"lineNumber":7,"author":{"gitId":"ryan1604"},"content":" }","lastModifiedDate":"2023-10-07"},{"lineNumber":8,"author":{"gitId":"ryan1604"},"content":"}","lastModifiedDate":"2023-10-07"}],"authorContributionMap":{"ryan1604":8}},{"path":"src/main/java/seedu/financialplanner/commands/Exit.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ryan1604"},"content":"package seedu.financialplanner.commands;","lastModifiedDate":"2023-10-07"},{"lineNumber":2,"author":{"gitId":"ryan1604"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":3,"author":{"gitId":"ryan1604"},"content":"import seedu.financialplanner.utils.Ui;","lastModifiedDate":"2023-10-07"},{"lineNumber":4,"author":{"gitId":"ryan1604"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":5,"author":{"gitId":"ryan1604"},"content":"public class Exit extends Command {","lastModifiedDate":"2023-10-07"},{"lineNumber":6,"author":{"gitId":"ryan1604"},"content":" public Exit() {","lastModifiedDate":"2023-10-07"},{"lineNumber":7,"author":{"gitId":"ryan1604"},"content":" }","lastModifiedDate":"2023-10-07"},{"lineNumber":8,"author":{"gitId":"ryan1604"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":9,"author":{"gitId":"ryan1604"},"content":" @Override","lastModifiedDate":"2023-10-07"},{"lineNumber":10,"author":{"gitId":"ryan1604"},"content":" public void execute(Ui ui) {","lastModifiedDate":"2023-10-07"},{"lineNumber":11,"author":{"gitId":"ryan1604"},"content":" }","lastModifiedDate":"2023-10-07"},{"lineNumber":12,"author":{"gitId":"ryan1604"},"content":"}","lastModifiedDate":"2023-10-07"}],"authorContributionMap":{"ryan1604":12}},{"path":"src/main/java/seedu/financialplanner/commands/Invalid.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ryan1604"},"content":"package seedu.financialplanner.commands;","lastModifiedDate":"2023-10-07"},{"lineNumber":2,"author":{"gitId":"ryan1604"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":3,"author":{"gitId":"ryan1604"},"content":"import seedu.financialplanner.utils.Ui;","lastModifiedDate":"2023-10-07"},{"lineNumber":4,"author":{"gitId":"ryan1604"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":5,"author":{"gitId":"ryan1604"},"content":"public class Invalid extends Command {","lastModifiedDate":"2023-10-07"},{"lineNumber":6,"author":{"gitId":"ryan1604"},"content":" public Invalid() {","lastModifiedDate":"2023-10-07"},{"lineNumber":7,"author":{"gitId":"ryan1604"},"content":" }","lastModifiedDate":"2023-10-07"},{"lineNumber":8,"author":{"gitId":"ryan1604"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":9,"author":{"gitId":"ryan1604"},"content":" @Override","lastModifiedDate":"2023-10-07"},{"lineNumber":10,"author":{"gitId":"ryan1604"},"content":" public void execute(Ui ui) {","lastModifiedDate":"2023-10-07"},{"lineNumber":11,"author":{"gitId":"ryan1604"},"content":" ui.showMessage(\"\\tUnknown command. Please try again.\");","lastModifiedDate":"2023-10-07"},{"lineNumber":12,"author":{"gitId":"ryan1604"},"content":" }","lastModifiedDate":"2023-10-07"},{"lineNumber":13,"author":{"gitId":"ryan1604"},"content":"}","lastModifiedDate":"2023-10-07"}],"authorContributionMap":{"ryan1604":13}},{"path":"src/main/java/seedu/financialplanner/exceptions/FinancialPlannerException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ryan1604"},"content":"package seedu.financialplanner.exceptions;","lastModifiedDate":"2023-10-07"},{"lineNumber":2,"author":{"gitId":"ryan1604"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":3,"author":{"gitId":"ryan1604"},"content":"public class FinancialPlannerException extends Exception {","lastModifiedDate":"2023-10-07"},{"lineNumber":4,"author":{"gitId":"ryan1604"},"content":" public FinancialPlannerException(String message) {","lastModifiedDate":"2023-10-07"},{"lineNumber":5,"author":{"gitId":"ryan1604"},"content":" super(message);","lastModifiedDate":"2023-10-07"},{"lineNumber":6,"author":{"gitId":"ryan1604"},"content":" }","lastModifiedDate":"2023-10-07"},{"lineNumber":7,"author":{"gitId":"ryan1604"},"content":"}","lastModifiedDate":"2023-10-07"}],"authorContributionMap":{"ryan1604":7}},{"path":"src/main/java/seedu/financialplanner/utils/Parser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ryan1604"},"content":"package seedu.financialplanner.utils;","lastModifiedDate":"2023-10-07"},{"lineNumber":2,"author":{"gitId":"ryan1604"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":3,"author":{"gitId":"ryan1604"},"content":"import seedu.financialplanner.commands.Command;","lastModifiedDate":"2023-10-07"},{"lineNumber":4,"author":{"gitId":"ryan1604"},"content":"import seedu.financialplanner.commands.Exit;","lastModifiedDate":"2023-10-07"},{"lineNumber":5,"author":{"gitId":"ryan1604"},"content":"import seedu.financialplanner.commands.Invalid;","lastModifiedDate":"2023-10-07"},{"lineNumber":6,"author":{"gitId":"ryan1604"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":7,"author":{"gitId":"ryan1604"},"content":"public class Parser {","lastModifiedDate":"2023-10-07"},{"lineNumber":8,"author":{"gitId":"ryan1604"},"content":" private static final String EXIT_COMMAND \u003d \"exit\";","lastModifiedDate":"2023-10-07"},{"lineNumber":9,"author":{"gitId":"ryan1604"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":10,"author":{"gitId":"ryan1604"},"content":" public static Command parse(String input) {","lastModifiedDate":"2023-10-07"},{"lineNumber":11,"author":{"gitId":"ryan1604"},"content":" String[] split \u003d input.split(\" \", 2);","lastModifiedDate":"2023-10-07"},{"lineNumber":12,"author":{"gitId":"ryan1604"},"content":" String command \u003d split[0].toLowerCase();","lastModifiedDate":"2023-10-07"},{"lineNumber":13,"author":{"gitId":"ryan1604"},"content":" String restOfInput \u003d split.length \u003e 1 ? split[1] : \"\"; // checks if rest of input is empty","lastModifiedDate":"2023-10-07"},{"lineNumber":14,"author":{"gitId":"ryan1604"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":15,"author":{"gitId":"ryan1604"},"content":" switch (command) {","lastModifiedDate":"2023-10-07"},{"lineNumber":16,"author":{"gitId":"ryan1604"},"content":" case EXIT_COMMAND:","lastModifiedDate":"2023-10-07"},{"lineNumber":17,"author":{"gitId":"ryan1604"},"content":" return new Exit();","lastModifiedDate":"2023-10-07"},{"lineNumber":18,"author":{"gitId":"ryan1604"},"content":" default:","lastModifiedDate":"2023-10-07"},{"lineNumber":19,"author":{"gitId":"ryan1604"},"content":" return new Invalid();","lastModifiedDate":"2023-10-07"},{"lineNumber":20,"author":{"gitId":"ryan1604"},"content":" }","lastModifiedDate":"2023-10-07"},{"lineNumber":21,"author":{"gitId":"ryan1604"},"content":" }","lastModifiedDate":"2023-10-07"},{"lineNumber":22,"author":{"gitId":"ryan1604"},"content":"}","lastModifiedDate":"2023-10-07"}],"authorContributionMap":{"ryan1604":22}},{"path":"src/main/java/seedu/financialplanner/utils/Ui.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ryan1604"},"content":"package seedu.financialplanner.utils;","lastModifiedDate":"2023-10-07"},{"lineNumber":2,"author":{"gitId":"ryan1604"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":3,"author":{"gitId":"ryan1604"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-10-07"},{"lineNumber":4,"author":{"gitId":"ryan1604"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":5,"author":{"gitId":"ryan1604"},"content":"public class Ui {","lastModifiedDate":"2023-10-07"},{"lineNumber":6,"author":{"gitId":"ryan1604"},"content":" public Ui() {","lastModifiedDate":"2023-10-07"},{"lineNumber":7,"author":{"gitId":"ryan1604"},"content":" }","lastModifiedDate":"2023-10-07"},{"lineNumber":8,"author":{"gitId":"ryan1604"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":9,"author":{"gitId":"ryan1604"},"content":" public void showMessage(String message) {","lastModifiedDate":"2023-10-07"},{"lineNumber":10,"author":{"gitId":"ryan1604"},"content":" System.out.println(message);","lastModifiedDate":"2023-10-07"},{"lineNumber":11,"author":{"gitId":"ryan1604"},"content":" }","lastModifiedDate":"2023-10-07"},{"lineNumber":12,"author":{"gitId":"ryan1604"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":13,"author":{"gitId":"ryan1604"},"content":" public void welcomeMessage() {","lastModifiedDate":"2023-10-07"},{"lineNumber":14,"author":{"gitId":"ryan1604"},"content":" showMessage(\"\\tWelcome to your Financial Planner. Type something to get started.\");","lastModifiedDate":"2023-10-07"},{"lineNumber":15,"author":{"gitId":"ryan1604"},"content":" }","lastModifiedDate":"2023-10-07"},{"lineNumber":16,"author":{"gitId":"ryan1604"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":17,"author":{"gitId":"ryan1604"},"content":" public void exitMessage() {","lastModifiedDate":"2023-10-07"},{"lineNumber":18,"author":{"gitId":"ryan1604"},"content":" showMessage(\"\\tExiting Financial Planner. Goodbye.\");","lastModifiedDate":"2023-10-07"},{"lineNumber":19,"author":{"gitId":"ryan1604"},"content":" }","lastModifiedDate":"2023-10-07"},{"lineNumber":20,"author":{"gitId":"ryan1604"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":21,"author":{"gitId":"ryan1604"},"content":" public String input() {","lastModifiedDate":"2023-10-07"},{"lineNumber":22,"author":{"gitId":"ryan1604"},"content":" Scanner in \u003d new Scanner(System.in);","lastModifiedDate":"2023-10-07"},{"lineNumber":23,"author":{"gitId":"ryan1604"},"content":" return in.nextLine().trim();","lastModifiedDate":"2023-10-07"},{"lineNumber":24,"author":{"gitId":"ryan1604"},"content":" }","lastModifiedDate":"2023-10-07"},{"lineNumber":25,"author":{"gitId":"ryan1604"},"content":"}","lastModifiedDate":"2023-10-07"}],"authorContributionMap":{"ryan1604":25}},{"path":"src/test/java/seedu/financialplanner/FinancialPlannerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"ryan1604"},"content":"package seedu.financialplanner;","lastModifiedDate":"2023-10-07"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2020-05-24"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-24"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2020-05-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-24"},{"lineNumber":7,"author":{"gitId":"ryan1604"},"content":"class FinancialPlannerTest {","lastModifiedDate":"2023-10-07"},{"lineNumber":8,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2020-05-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":" public void sampleTest() {","lastModifiedDate":"2020-05-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":" assertTrue(true);","lastModifiedDate":"2020-05-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-24"}],"authorContributionMap":{"-":10,"ryan1604":2}}] +[{"path":"build.gradle","fileType":"other","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 \u0027checkstyle\u0027","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":" id \u0027com.github.johnrengelman.shadow\u0027 version \u00277.1.2\u0027","lastModifiedDate":"2022-06-17"},{"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":"ryan1604"},"content":" mainClass.set(\"seedu.financialplanner.FinancialPlanner\")","lastModifiedDate":"2023-10-07"},{"lineNumber":33,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" archiveBaseName.set(\"duke\")","lastModifiedDate":"2023-09-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":" archiveClassifier.set(\"\")","lastModifiedDate":"2023-09-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":"checkstyle {","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":" toolVersion \u003d \u002710.2\u0027","lastModifiedDate":"2022-04-29"},{"lineNumber":42,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":"run{","lastModifiedDate":"2020-05-25"},{"lineNumber":45,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":46,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"-":45,"ryan1604":1}},{"path":"docs/AboutUs.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"# About us","lastModifiedDate":"2020-05-24"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"Display | Name | Github Profile | Portfolio ","lastModifiedDate":"2020-05-24"},{"lineNumber":4,"author":{"gitId":"NeoMinWei"},"content":"--------|:-----------:|:--------------:|:---------:","lastModifiedDate":"2023-10-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"![](https://via.placeholder.com/100.png?text\u003dPhoto) | John Doe | [Github](https://github.com/) | [Portfolio](docs/team/johndoe.md)","lastModifiedDate":"2020-05-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":"![](https://via.placeholder.com/100.png?text\u003dPhoto) | Don Joe | [Github](https://github.com/) | [Portfolio](docs/team/johndoe.md)","lastModifiedDate":"2020-05-24"},{"lineNumber":7,"author":{"gitId":"ryan1604"},"content":"![](https://via.placeholder.com/100.png?text\u003dPhoto) | Ryan Chua | [Github](https://github.com/ryan1604) | [Portfolio](docs/team/ryanchua.md)","lastModifiedDate":"2023-10-05"},{"lineNumber":8,"author":{"gitId":"NeoMinWei"},"content":"![](https://via.placeholder.com/100.png?text\u003dPhoto) | Neo Min Wei | [Github](https://github.com/NeoMinWei) | [Portfolio](docs/team/NeoMinWei.md)","lastModifiedDate":"2023-10-05"},{"lineNumber":9,"author":{"gitId":"wwweert123"},"content":"![](https://via.placeholder.com/100.png?text\u003dPhoto) | Frederick | [Github](https://github.com/) | [Portfolio](docs/team/frederick.md)","lastModifiedDate":"2023-10-05"},{"lineNumber":10,"author":{"gitId":"NeoMinWei"},"content":"","lastModifiedDate":"2023-10-05"}],"authorContributionMap":{"wwweert123":1,"NeoMinWei":3,"-":5,"ryan1604":1}},{"path":"docs/team/NeoMinWei.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"NeoMinWei"},"content":"# Neo Min Wei - Project Portfolio Page","lastModifiedDate":"2023-10-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"## Overview","lastModifiedDate":"2020-05-24"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-24"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":"### Summary of Contributions","lastModifiedDate":"2020-05-24"}],"authorContributionMap":{"NeoMinWei":1,"-":5}},{"path":"docs/team/frederick.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"wwweert123"},"content":"I am Frederick ","lastModifiedDate":"2023-10-05"},{"lineNumber":2,"author":{"gitId":"wwweert123"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":3,"author":{"gitId":"wwweert123"},"content":"Hello ","lastModifiedDate":"2023-10-05"},{"lineNumber":4,"author":{"gitId":"wwweert123"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":5,"author":{"gitId":"wwweert123"},"content":"I am from this team!","lastModifiedDate":"2023-10-05"}],"authorContributionMap":{"wwweert123":5}},{"path":"src/main/java/seedu/financialplanner/FinancialPlanner.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ryan1604"},"content":"package seedu.financialplanner;","lastModifiedDate":"2023-10-07"},{"lineNumber":2,"author":{"gitId":"ryan1604"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":3,"author":{"gitId":"ryan1604"},"content":"import seedu.financialplanner.commands.Command;","lastModifiedDate":"2023-10-07"},{"lineNumber":4,"author":{"gitId":"ryan1604"},"content":"import seedu.financialplanner.commands.Exit;","lastModifiedDate":"2023-10-07"},{"lineNumber":5,"author":{"gitId":"ryan1604"},"content":"import seedu.financialplanner.utils.Parser;","lastModifiedDate":"2023-10-07"},{"lineNumber":6,"author":{"gitId":"ryan1604"},"content":"import seedu.financialplanner.utils.Ui;","lastModifiedDate":"2023-10-07"},{"lineNumber":7,"author":{"gitId":"ryan1604"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":8,"author":{"gitId":"ryan1604"},"content":"public class FinancialPlanner {","lastModifiedDate":"2023-10-07"},{"lineNumber":9,"author":{"gitId":"ryan1604"},"content":" private Ui ui;","lastModifiedDate":"2023-10-07"},{"lineNumber":10,"author":{"gitId":"ryan1604"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":11,"author":{"gitId":"ryan1604"},"content":" public FinancialPlanner() {","lastModifiedDate":"2023-10-07"},{"lineNumber":12,"author":{"gitId":"ryan1604"},"content":" ui \u003d new Ui();","lastModifiedDate":"2023-10-07"},{"lineNumber":13,"author":{"gitId":"ryan1604"},"content":" }","lastModifiedDate":"2023-10-07"},{"lineNumber":14,"author":{"gitId":"ryan1604"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":15,"author":{"gitId":"ryan1604"},"content":" public void run() {","lastModifiedDate":"2023-10-07"},{"lineNumber":16,"author":{"gitId":"ryan1604"},"content":" ui.welcomeMessage();","lastModifiedDate":"2023-10-07"},{"lineNumber":17,"author":{"gitId":"ryan1604"},"content":" String input;","lastModifiedDate":"2023-10-07"},{"lineNumber":18,"author":{"gitId":"ryan1604"},"content":" Command command \u003d null;","lastModifiedDate":"2023-10-07"},{"lineNumber":19,"author":{"gitId":"ryan1604"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":20,"author":{"gitId":"ryan1604"},"content":" while (!(command instanceof Exit)) {","lastModifiedDate":"2023-10-07"},{"lineNumber":21,"author":{"gitId":"ryan1604"},"content":" input \u003d ui.input();","lastModifiedDate":"2023-10-07"},{"lineNumber":22,"author":{"gitId":"ryan1604"},"content":" command \u003d Parser.parse(input);","lastModifiedDate":"2023-10-07"},{"lineNumber":23,"author":{"gitId":"ryan1604"},"content":" command.execute(ui);","lastModifiedDate":"2023-10-07"},{"lineNumber":24,"author":{"gitId":"ryan1604"},"content":" }","lastModifiedDate":"2023-10-07"},{"lineNumber":25,"author":{"gitId":"ryan1604"},"content":" ui.exitMessage();","lastModifiedDate":"2023-10-07"},{"lineNumber":26,"author":{"gitId":"ryan1604"},"content":" }","lastModifiedDate":"2023-10-07"},{"lineNumber":27,"author":{"gitId":"ryan1604"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":28,"author":{"gitId":"ryan1604"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-10-07"},{"lineNumber":29,"author":{"gitId":"ryan1604"},"content":" new FinancialPlanner().run();","lastModifiedDate":"2023-10-07"},{"lineNumber":30,"author":{"gitId":"ryan1604"},"content":" }","lastModifiedDate":"2023-10-07"},{"lineNumber":31,"author":{"gitId":"ryan1604"},"content":"}","lastModifiedDate":"2023-10-07"}],"authorContributionMap":{"ryan1604":31}},{"path":"src/main/java/seedu/financialplanner/commands/Command.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ryan1604"},"content":"package seedu.financialplanner.commands;","lastModifiedDate":"2023-10-07"},{"lineNumber":2,"author":{"gitId":"ryan1604"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":3,"author":{"gitId":"ryan1604"},"content":"import seedu.financialplanner.utils.Ui;","lastModifiedDate":"2023-10-07"},{"lineNumber":4,"author":{"gitId":"ryan1604"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":5,"author":{"gitId":"ryan1604"},"content":"public class Command {","lastModifiedDate":"2023-10-07"},{"lineNumber":6,"author":{"gitId":"ryan1604"},"content":" public void execute(Ui ui) {","lastModifiedDate":"2023-10-07"},{"lineNumber":7,"author":{"gitId":"ryan1604"},"content":" }","lastModifiedDate":"2023-10-07"},{"lineNumber":8,"author":{"gitId":"ryan1604"},"content":"}","lastModifiedDate":"2023-10-07"}],"authorContributionMap":{"ryan1604":8}},{"path":"src/main/java/seedu/financialplanner/commands/Exit.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ryan1604"},"content":"package seedu.financialplanner.commands;","lastModifiedDate":"2023-10-07"},{"lineNumber":2,"author":{"gitId":"ryan1604"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":3,"author":{"gitId":"ryan1604"},"content":"import seedu.financialplanner.utils.Ui;","lastModifiedDate":"2023-10-07"},{"lineNumber":4,"author":{"gitId":"ryan1604"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":5,"author":{"gitId":"ryan1604"},"content":"public class Exit extends Command {","lastModifiedDate":"2023-10-07"},{"lineNumber":6,"author":{"gitId":"ryan1604"},"content":" public Exit() {","lastModifiedDate":"2023-10-07"},{"lineNumber":7,"author":{"gitId":"ryan1604"},"content":" }","lastModifiedDate":"2023-10-07"},{"lineNumber":8,"author":{"gitId":"ryan1604"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":9,"author":{"gitId":"ryan1604"},"content":" @Override","lastModifiedDate":"2023-10-07"},{"lineNumber":10,"author":{"gitId":"ryan1604"},"content":" public void execute(Ui ui) {","lastModifiedDate":"2023-10-07"},{"lineNumber":11,"author":{"gitId":"ryan1604"},"content":" }","lastModifiedDate":"2023-10-07"},{"lineNumber":12,"author":{"gitId":"ryan1604"},"content":"}","lastModifiedDate":"2023-10-07"}],"authorContributionMap":{"ryan1604":12}},{"path":"src/main/java/seedu/financialplanner/commands/Invalid.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ryan1604"},"content":"package seedu.financialplanner.commands;","lastModifiedDate":"2023-10-07"},{"lineNumber":2,"author":{"gitId":"ryan1604"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":3,"author":{"gitId":"ryan1604"},"content":"import seedu.financialplanner.utils.Ui;","lastModifiedDate":"2023-10-07"},{"lineNumber":4,"author":{"gitId":"ryan1604"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":5,"author":{"gitId":"ryan1604"},"content":"public class Invalid extends Command {","lastModifiedDate":"2023-10-07"},{"lineNumber":6,"author":{"gitId":"ryan1604"},"content":" public Invalid() {","lastModifiedDate":"2023-10-07"},{"lineNumber":7,"author":{"gitId":"ryan1604"},"content":" }","lastModifiedDate":"2023-10-07"},{"lineNumber":8,"author":{"gitId":"ryan1604"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":9,"author":{"gitId":"ryan1604"},"content":" @Override","lastModifiedDate":"2023-10-07"},{"lineNumber":10,"author":{"gitId":"ryan1604"},"content":" public void execute(Ui ui) {","lastModifiedDate":"2023-10-07"},{"lineNumber":11,"author":{"gitId":"ryan1604"},"content":" ui.showMessage(\"\\tUnknown command. Please try again.\");","lastModifiedDate":"2023-10-07"},{"lineNumber":12,"author":{"gitId":"ryan1604"},"content":" }","lastModifiedDate":"2023-10-07"},{"lineNumber":13,"author":{"gitId":"ryan1604"},"content":"}","lastModifiedDate":"2023-10-07"}],"authorContributionMap":{"ryan1604":13}},{"path":"src/main/java/seedu/financialplanner/exceptions/FinancialPlannerException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ryan1604"},"content":"package seedu.financialplanner.exceptions;","lastModifiedDate":"2023-10-07"},{"lineNumber":2,"author":{"gitId":"ryan1604"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":3,"author":{"gitId":"ryan1604"},"content":"public class FinancialPlannerException extends Exception {","lastModifiedDate":"2023-10-07"},{"lineNumber":4,"author":{"gitId":"ryan1604"},"content":" public FinancialPlannerException(String message) {","lastModifiedDate":"2023-10-07"},{"lineNumber":5,"author":{"gitId":"ryan1604"},"content":" super(message);","lastModifiedDate":"2023-10-07"},{"lineNumber":6,"author":{"gitId":"ryan1604"},"content":" }","lastModifiedDate":"2023-10-07"},{"lineNumber":7,"author":{"gitId":"ryan1604"},"content":"}","lastModifiedDate":"2023-10-07"}],"authorContributionMap":{"ryan1604":7}},{"path":"src/main/java/seedu/financialplanner/utils/Parser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ryan1604"},"content":"package seedu.financialplanner.utils;","lastModifiedDate":"2023-10-07"},{"lineNumber":2,"author":{"gitId":"ryan1604"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":3,"author":{"gitId":"ryan1604"},"content":"import seedu.financialplanner.commands.Command;","lastModifiedDate":"2023-10-07"},{"lineNumber":4,"author":{"gitId":"ryan1604"},"content":"import seedu.financialplanner.commands.Exit;","lastModifiedDate":"2023-10-07"},{"lineNumber":5,"author":{"gitId":"ryan1604"},"content":"import seedu.financialplanner.commands.Invalid;","lastModifiedDate":"2023-10-07"},{"lineNumber":6,"author":{"gitId":"ryan1604"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":7,"author":{"gitId":"ryan1604"},"content":"public class Parser {","lastModifiedDate":"2023-10-07"},{"lineNumber":8,"author":{"gitId":"ryan1604"},"content":" private static final String EXIT_COMMAND \u003d \"exit\";","lastModifiedDate":"2023-10-07"},{"lineNumber":9,"author":{"gitId":"ryan1604"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":10,"author":{"gitId":"ryan1604"},"content":" public static Command parse(String input) {","lastModifiedDate":"2023-10-07"},{"lineNumber":11,"author":{"gitId":"ryan1604"},"content":" String[] split \u003d input.split(\" \", 2);","lastModifiedDate":"2023-10-07"},{"lineNumber":12,"author":{"gitId":"ryan1604"},"content":" String command \u003d split[0].toLowerCase();","lastModifiedDate":"2023-10-07"},{"lineNumber":13,"author":{"gitId":"ryan1604"},"content":" String restOfInput \u003d split.length \u003e 1 ? split[1] : \"\"; // checks if rest of input is empty","lastModifiedDate":"2023-10-07"},{"lineNumber":14,"author":{"gitId":"ryan1604"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":15,"author":{"gitId":"ryan1604"},"content":" switch (command) {","lastModifiedDate":"2023-10-07"},{"lineNumber":16,"author":{"gitId":"ryan1604"},"content":" case EXIT_COMMAND:","lastModifiedDate":"2023-10-07"},{"lineNumber":17,"author":{"gitId":"ryan1604"},"content":" return new Exit();","lastModifiedDate":"2023-10-07"},{"lineNumber":18,"author":{"gitId":"ryan1604"},"content":" default:","lastModifiedDate":"2023-10-07"},{"lineNumber":19,"author":{"gitId":"ryan1604"},"content":" return new Invalid();","lastModifiedDate":"2023-10-07"},{"lineNumber":20,"author":{"gitId":"ryan1604"},"content":" }","lastModifiedDate":"2023-10-07"},{"lineNumber":21,"author":{"gitId":"ryan1604"},"content":" }","lastModifiedDate":"2023-10-07"},{"lineNumber":22,"author":{"gitId":"ryan1604"},"content":"}","lastModifiedDate":"2023-10-07"}],"authorContributionMap":{"ryan1604":22}},{"path":"src/main/java/seedu/financialplanner/utils/Ui.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ryan1604"},"content":"package seedu.financialplanner.utils;","lastModifiedDate":"2023-10-07"},{"lineNumber":2,"author":{"gitId":"ryan1604"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":3,"author":{"gitId":"ryan1604"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-10-07"},{"lineNumber":4,"author":{"gitId":"ryan1604"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":5,"author":{"gitId":"ryan1604"},"content":"public class Ui {","lastModifiedDate":"2023-10-07"},{"lineNumber":6,"author":{"gitId":"ryan1604"},"content":" public Ui() {","lastModifiedDate":"2023-10-07"},{"lineNumber":7,"author":{"gitId":"ryan1604"},"content":" }","lastModifiedDate":"2023-10-07"},{"lineNumber":8,"author":{"gitId":"ryan1604"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":9,"author":{"gitId":"ryan1604"},"content":" public void showMessage(String message) {","lastModifiedDate":"2023-10-07"},{"lineNumber":10,"author":{"gitId":"ryan1604"},"content":" System.out.println(message);","lastModifiedDate":"2023-10-07"},{"lineNumber":11,"author":{"gitId":"ryan1604"},"content":" }","lastModifiedDate":"2023-10-07"},{"lineNumber":12,"author":{"gitId":"ryan1604"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":13,"author":{"gitId":"ryan1604"},"content":" public void welcomeMessage() {","lastModifiedDate":"2023-10-07"},{"lineNumber":14,"author":{"gitId":"ryan1604"},"content":" showMessage(\"\\tWelcome to your Financial Planner. Type something to get started.\");","lastModifiedDate":"2023-10-07"},{"lineNumber":15,"author":{"gitId":"ryan1604"},"content":" }","lastModifiedDate":"2023-10-07"},{"lineNumber":16,"author":{"gitId":"ryan1604"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":17,"author":{"gitId":"ryan1604"},"content":" public void exitMessage() {","lastModifiedDate":"2023-10-07"},{"lineNumber":18,"author":{"gitId":"ryan1604"},"content":" showMessage(\"\\tExiting Financial Planner. Goodbye.\");","lastModifiedDate":"2023-10-07"},{"lineNumber":19,"author":{"gitId":"ryan1604"},"content":" }","lastModifiedDate":"2023-10-07"},{"lineNumber":20,"author":{"gitId":"ryan1604"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":21,"author":{"gitId":"ryan1604"},"content":" public String input() {","lastModifiedDate":"2023-10-07"},{"lineNumber":22,"author":{"gitId":"ryan1604"},"content":" Scanner in \u003d new Scanner(System.in);","lastModifiedDate":"2023-10-07"},{"lineNumber":23,"author":{"gitId":"ryan1604"},"content":" return in.nextLine().trim();","lastModifiedDate":"2023-10-07"},{"lineNumber":24,"author":{"gitId":"ryan1604"},"content":" }","lastModifiedDate":"2023-10-07"},{"lineNumber":25,"author":{"gitId":"ryan1604"},"content":"}","lastModifiedDate":"2023-10-07"}],"authorContributionMap":{"ryan1604":25}},{"path":"src/test/java/seedu/financialplanner/FinancialPlannerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"ryan1604"},"content":"package seedu.financialplanner;","lastModifiedDate":"2023-10-07"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2020-05-24"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-24"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2020-05-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-24"},{"lineNumber":7,"author":{"gitId":"ryan1604"},"content":"class FinancialPlannerTest {","lastModifiedDate":"2023-10-07"},{"lineNumber":8,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2020-05-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":" public void sampleTest() {","lastModifiedDate":"2020-05-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":" assertTrue(true);","lastModifiedDate":"2020-05-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-24"}],"authorContributionMap":{"-":10,"ryan1604":2}}] diff --git a/AY2324S1-CS2113-T18-2_tp_master/commits.json b/AY2324S1-CS2113-T18-2_tp_master/commits.json index 9f55875..69ccac7 100644 --- a/AY2324S1-CS2113-T18-2_tp_master/commits.json +++ b/AY2324S1-CS2113-T18-2_tp_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"wwweert123":[{"date":"2023-10-05","commitResults":[{"hash":"491c9238e3c2b52f8ddaa10ba332e9566a8b7e9e","isMergeCommit":false,"messageTitle":"Add aboutus links and add my my own md file","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":12,"deletions":7}}},{"hash":"2712d42c6b6d4552c9a0ea7bcc75de166bdf1546","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/AY2324S1-CS2113-T18-2/tp into Frederick-AboutUs","messageBody":"# Conflicts:\n#\tdocs/AboutUs.md\n","fileTypesAndContributionMap":{}},{"hash":"11db7a69a38c31d6f7658163f69ac8726f80a0b0","isMergeCommit":true,"messageTitle":"Merge pull request #3 from wwweert123/Frederick-AboutUs","messageBody":"Add aboutus links and add my my own md file","fileTypesAndContributionMap":{}}]}],"NeoMinWei":[{"date":"2023-10-05","commitResults":[{"hash":"4f47ae40234b912a4c5b7dc60382509629d101a3","isMergeCommit":false,"messageTitle":"Add name to AboutUs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":8,"deletions":8}}},{"hash":"f2c1d37c4806aa17f190a32959ef65e5687b4aee","isMergeCommit":true,"messageTitle":"Merge pull request #1 from ryan1604/ryanChua-AboutUs","messageBody":"Update AboutUs","fileTypesAndContributionMap":{}},{"hash":"2c62d715ae126cdd37eb029c1637b350c38be6de","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/AY2324S1-CS2113-T18-2/tp into NeoMinWei-AboutUs","messageBody":"# Conflicts:\n#\tdocs/AboutUs.md\n","fileTypesAndContributionMap":{}},{"hash":"22503c3b8de7c4b1a38b85131f14e6b63162ded7","isMergeCommit":true,"messageTitle":"Merge pull request #2 from NeoMinWei/NeoMinWei-AboutUs","messageBody":"Add name to AboutUs","fileTypesAndContributionMap":{}}]}],"ryan1604":[{"date":"2023-10-07","commitResults":[{"hash":"e8da8d09f6900bdcf1299dabba13d3177794676f","isMergeCommit":false,"messageTitle":"Setup Ui and rename Duke to FinancialPlanner","messageBody":"Fixes #5\n","fileTypesAndContributionMap":{"functional-code":{"insertions":45,"deletions":22},"other":{"insertions":3,"deletions":3}}},{"hash":"d5be6d4bae825dbb2ba49c20588e7d1ecfaa8f7e","isMergeCommit":false,"messageTitle":"Add FinancialPlannerException","messageBody":"Fixes #8\n","fileTypesAndContributionMap":{"functional-code":{"insertions":7,"deletions":0}}},{"hash":"41909a10cf9d822fabd58091788fa8d898615517","isMergeCommit":false,"messageTitle":"Add Parser, add \u0027exit\u0027 and \u0027invalid\u0027 command to Parser","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":67,"deletions":1},"other":{"insertions":1,"deletions":1}}},{"hash":"d926641278054652b6bf5faba4d7a71495ad91b9","isMergeCommit":true,"messageTitle":"Merge pull request #26 from ryan1604/branch-setup","messageBody":"Branch setup","fileTypesAndContributionMap":{}}]}],"YFshadaow":[],"hshiah":[{"date":"2023-10-05","commitResults":[{"hash":"f4e110ae257a2d4b5945b76e92c4f67b53a9b9c9","isMergeCommit":false,"messageTitle":"Test","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":1}}},{"hash":"483fb3d416dea3f0ae1999b544aaa379f9eb6575","isMergeCommit":true,"messageTitle":"Merge pull request #4 from hshiah/hshiah","messageBody":"Shi,Haochen","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"wwweert123":{"docs":6,"functional-code":0,"test-code":0},"NeoMinWei":{"docs":4,"functional-code":0,"test-code":0},"ryan1604":{"docs":0,"functional-code":118,"test-code":2,"other":1},"YFshadaow":{"docs":0,"functional-code":0,"test-code":0},"hshiah":{"docs":0,"functional-code":0,"test-code":0}},"authorContributionVariance":{"wwweert123":21.152344,"NeoMinWei":15.0,"ryan1604":1318.3594,"YFshadaow":0.0,"hshiah":0.52734375},"authorDisplayNameMap":{"wwweert123":"CS2113-T18-2 PUA ..RICK","NeoMinWei":"CS2113-T18-2 NEO .. WEI","ryan1604":"CS2113-T18-2 CHUA..RYAN","YFshadaow":"CS2113-T18-2 REN ..GDAO","hshiah":"CS2113-T18-2 SHI ..CHEN"}} +{"authorDailyContributionsMap":{"wwweert123":[{"date":"2023-10-05","commitResults":[{"hash":"491c9238e3c2b52f8ddaa10ba332e9566a8b7e9e","isMergeCommit":false,"messageTitle":"Add aboutus links and add my my own md file","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":12,"deletions":7}}},{"hash":"2712d42c6b6d4552c9a0ea7bcc75de166bdf1546","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/AY2324S1-CS2113-T18-2/tp into Frederick-AboutUs","messageBody":"# Conflicts:\n#\tdocs/AboutUs.md\n","fileTypesAndContributionMap":{}},{"hash":"11db7a69a38c31d6f7658163f69ac8726f80a0b0","isMergeCommit":true,"messageTitle":"Merge pull request #3 from wwweert123/Frederick-AboutUs","messageBody":"Add aboutus links and add my my own md file","fileTypesAndContributionMap":{}}]}],"NeoMinWei":[{"date":"2023-10-05","commitResults":[{"hash":"4f47ae40234b912a4c5b7dc60382509629d101a3","isMergeCommit":false,"messageTitle":"Add name to AboutUs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":8,"deletions":8}}},{"hash":"f2c1d37c4806aa17f190a32959ef65e5687b4aee","isMergeCommit":true,"messageTitle":"Merge pull request #1 from ryan1604/ryanChua-AboutUs","messageBody":"Update AboutUs","fileTypesAndContributionMap":{}},{"hash":"2c62d715ae126cdd37eb029c1637b350c38be6de","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/AY2324S1-CS2113-T18-2/tp into NeoMinWei-AboutUs","messageBody":"# Conflicts:\n#\tdocs/AboutUs.md\n","fileTypesAndContributionMap":{}},{"hash":"22503c3b8de7c4b1a38b85131f14e6b63162ded7","isMergeCommit":true,"messageTitle":"Merge pull request #2 from NeoMinWei/NeoMinWei-AboutUs","messageBody":"Add name to AboutUs","fileTypesAndContributionMap":{}}]}],"ryan1604":[{"date":"2023-10-05","commitResults":[{"hash":"eab7be4bcbb2bd13648ec4f347d0278a5b33b3b1","isMergeCommit":false,"messageTitle":"Update AboutUs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":7,"deletions":7}}}]},{"date":"2023-10-07","commitResults":[{"hash":"e8da8d09f6900bdcf1299dabba13d3177794676f","isMergeCommit":false,"messageTitle":"Setup Ui and rename Duke to FinancialPlanner","messageBody":"Fixes #5\n","fileTypesAndContributionMap":{"functional-code":{"insertions":45,"deletions":22},"other":{"insertions":3,"deletions":3}}},{"hash":"d5be6d4bae825dbb2ba49c20588e7d1ecfaa8f7e","isMergeCommit":false,"messageTitle":"Add FinancialPlannerException","messageBody":"Fixes #8\n","fileTypesAndContributionMap":{"functional-code":{"insertions":7,"deletions":0}}},{"hash":"41909a10cf9d822fabd58091788fa8d898615517","isMergeCommit":false,"messageTitle":"Add Parser, add \u0027exit\u0027 and \u0027invalid\u0027 command to Parser","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":67,"deletions":1},"other":{"insertions":1,"deletions":1}}},{"hash":"d926641278054652b6bf5faba4d7a71495ad91b9","isMergeCommit":true,"messageTitle":"Merge pull request #26 from ryan1604/branch-setup","messageBody":"Branch setup","fileTypesAndContributionMap":{}}]}],"YFshadaow":[],"hshiah":[{"date":"2023-10-05","commitResults":[{"hash":"f4e110ae257a2d4b5945b76e92c4f67b53a9b9c9","isMergeCommit":false,"messageTitle":"Test","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":1}}},{"hash":"483fb3d416dea3f0ae1999b544aaa379f9eb6575","isMergeCommit":true,"messageTitle":"Merge pull request #4 from hshiah/hshiah","messageBody":"Shi,Haochen","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"wwweert123":{"docs":6,"functional-code":0,"test-code":0},"NeoMinWei":{"docs":4,"functional-code":0,"test-code":0},"ryan1604":{"docs":1,"functional-code":118,"test-code":2,"other":1},"YFshadaow":{"docs":0,"functional-code":0,"test-code":0},"hshiah":{"docs":0,"functional-code":0,"test-code":0}},"authorContributionVariance":{"wwweert123":21.152344,"NeoMinWei":15.0,"ryan1604":1313.4375,"YFshadaow":0.0,"hshiah":0.52734375},"authorDisplayNameMap":{"wwweert123":"CS2113-T18-2 PUA ..RICK","NeoMinWei":"CS2113-T18-2 NEO .. WEI","ryan1604":"CS2113-T18-2 CHUA..RYAN","YFshadaow":"CS2113-T18-2 REN ..GDAO","hshiah":"CS2113-T18-2 SHI ..CHEN"}} diff --git a/AY2324S1-CS2113-W12-1_tp_master/authorship.json b/AY2324S1-CS2113-W12-1_tp_master/authorship.json index 59c5846..f75e870 100644 --- a/AY2324S1-CS2113-W12-1_tp_master/authorship.json +++ b/AY2324S1-CS2113-W12-1_tp_master/authorship.json @@ -1 +1 @@ -[{"path":"README.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"yeo-menghan"},"content":"# QuizHub project template","lastModifiedDate":"2023-10-04"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"This is a project template for a greenfield Java project. It\u0027s named after the Java mascot _Duke_. Given below are instructions on how to use it.","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"## Setting up in Intellij","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"Prerequisites: JDK 11 (use the exact version), update Intellij to the most recent version.","lastModifiedDate":"2020-05-24"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":"1. **Ensure Intellij JDK 11 is defined as an SDK**, as described [here](https://www.jetbrains.com/help/idea/sdk.html#set-up-jdk) -- this step is not needed if you have used JDK 11 in a previous Intellij project.","lastModifiedDate":"2020-05-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":"1. **Import the project _as a Gradle project_**, as described [here](https://se-education.org/guides/tutorials/intellijImportGradleProject.html).","lastModifiedDate":"2020-05-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":"1. **Verify the set up**: After the importing is complete, locate the `src/main/java/seedu/duke/Duke.java` file, right-click it, and choose `Run Duke.main()`. If the setup is correct, you should see something like the below:","lastModifiedDate":"2020-05-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":" \u003e Task :compileJava","lastModifiedDate":"2020-05-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":" \u003e Task :processResources NO-SOURCE","lastModifiedDate":"2020-05-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003e Task :classes","lastModifiedDate":"2020-05-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":" ","lastModifiedDate":"2020-05-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003e Task :Duke.main()","lastModifiedDate":"2020-05-24"},{"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-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":" What is your name?","lastModifiedDate":"2020-05-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" Type some word and press enter to let the execution proceed to the end.","lastModifiedDate":"2020-05-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":"## Build automation using Gradle","lastModifiedDate":"2020-05-24"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-24"},{"lineNumber":31,"author":{"gitId":"-"},"content":"* This project uses Gradle for build automation and dependency management. It includes a basic build script as well (i.e. the `build.gradle` file).","lastModifiedDate":"2020-05-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":"* If you are new to Gradle, refer to the [Gradle Tutorial at se-education.org/guides](https://se-education.org/guides/tutorials/gradle.html).","lastModifiedDate":"2020-05-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":"## Testing","lastModifiedDate":"2020-05-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":"### I/O redirection tests","lastModifiedDate":"2020-05-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":"* To run _I/O redirection_ tests (aka _Text UI tests_), navigate to the `text-ui-test` and run the `runtest(.bat/.sh)` script.","lastModifiedDate":"2020-05-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":"### JUnit tests","lastModifiedDate":"2020-05-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":"* A skeleton JUnit test (`src/test/java/seedu/duke/DukeTest.java`) is provided with this project template. ","lastModifiedDate":"2020-05-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":"* If you are new to JUnit, refer to the [JUnit Tutorial at se-education.org/guides](https://se-education.org/guides/tutorials/junit.html).","lastModifiedDate":"2020-05-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-24"},{"lineNumber":45,"author":{"gitId":"-"},"content":"## Checkstyle","lastModifiedDate":"2020-05-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":"* A sample CheckStyle rule configuration is provided in this project.","lastModifiedDate":"2020-05-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":"* If you are new to Checkstyle, refer to the [Checkstyle Tutorial at se-education.org/guides](https://se-education.org/guides/tutorials/checkstyle.html).","lastModifiedDate":"2020-05-24"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-24"},{"lineNumber":50,"author":{"gitId":"-"},"content":"## CI using GitHub Actions","lastModifiedDate":"2020-05-24"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-24"},{"lineNumber":52,"author":{"gitId":"-"},"content":"The project uses [GitHub actions](https://github.com/features/actions) for CI. When you push a commit to this repo or PR against it, GitHub actions will run automatically to build and verify the code as updated by the commit/PR.","lastModifiedDate":"2020-05-24"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-24"},{"lineNumber":54,"author":{"gitId":"-"},"content":"## Documentation","lastModifiedDate":"2020-05-24"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-24"},{"lineNumber":56,"author":{"gitId":"-"},"content":"`/docs` folder contains a skeleton version of the project documentation.","lastModifiedDate":"2020-05-24"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-24"},{"lineNumber":58,"author":{"gitId":"-"},"content":"Steps for publishing documentation to the public: ","lastModifiedDate":"2020-05-24"},{"lineNumber":59,"author":{"gitId":"-"},"content":"1. If you are using this project template for an individual project, go your fork on GitHub.\u003cbr\u003e","lastModifiedDate":"2020-05-24"},{"lineNumber":60,"author":{"gitId":"-"},"content":" If you are using this project template for a team project, go to the team fork on GitHub.","lastModifiedDate":"2020-05-24"},{"lineNumber":61,"author":{"gitId":"-"},"content":"1. Click on the `settings` tab.","lastModifiedDate":"2020-05-24"},{"lineNumber":62,"author":{"gitId":"-"},"content":"1. Scroll down to the `GitHub Pages` section.","lastModifiedDate":"2020-05-24"},{"lineNumber":63,"author":{"gitId":"-"},"content":"1. Set the `source` as `master branch /docs folder`.","lastModifiedDate":"2020-05-24"},{"lineNumber":64,"author":{"gitId":"-"},"content":"1. Optionally, use the `choose a theme` button to choose a theme for your documentation.","lastModifiedDate":"2020-05-24"}],"authorContributionMap":{"yeo-menghan":1,"-":63}},{"path":"docs/AboutUs.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"# About us","lastModifiedDate":"2020-05-24"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"Display | Name | Github Profile | Portfolio ","lastModifiedDate":"2020-05-24"},{"lineNumber":4,"author":{"gitId":"lisizhuang-0121"},"content":"--------|:--------------:|:--------------------------------------------:|:---------:","lastModifiedDate":"2023-10-04"},{"lineNumber":5,"author":{"gitId":"James-Hong-Jey"},"content":"![](https://www.comp.nus.edu.sg/~stevenha/images/sh7.jpg) | James Hong Jey | [Github](https://github.com/James-Hong-Jey) | [Portfolio](docs/team/jameshong.md)","lastModifiedDate":"2023-10-04"},{"lineNumber":6,"author":{"gitId":"StevenGX12"},"content":"![](https://via.placeholder.com/100.png?text\u003dPhoto) | Guan Xiao | [Github](https://github.com/StevenGX12) | [Portfolio](docs/team/guanxiao.md)","lastModifiedDate":"2023-10-04"},{"lineNumber":7,"author":{"gitId":"spinoandraptos"},"content":"![](https://avatars.githubusercontent.com/u/111041948?s\u003d400\u0026u\u003d6619a8328eba45edbc88fe01cf54efeb1f986d11\u0026v\u003d4) | Man Juncheng | [Github](https://github.com/spinoandraptos) | [Portfolio](docs/team/juncheng.md)","lastModifiedDate":"2023-10-04"},{"lineNumber":8,"author":{"gitId":"lisizhuang-0121"},"content":"![](https://i.redd.it/6do158vk2ue61.png) | Li Sizhuang | [Github](https://github.com/lisizhuang-0121) | [Portfolio](docs/team/johndoe.md)","lastModifiedDate":"2023-10-04"},{"lineNumber":9,"author":{"gitId":"-"},"content":"![](https://via.placeholder.com/100.png?text\u003dPhoto) | Yeo Meng Han | [Github](https://github.com/yeo-menghan) | [Portfolio](https://linkedin.com/in/yeo-meng-han/)","lastModifiedDate":"2023-10-04"}],"authorContributionMap":{"spinoandraptos":1,"StevenGX12":1,"James-Hong-Jey":1,"lisizhuang-0121":2,"-":4}},{"path":"src/main/java/Duke.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"spinoandraptos"},"content":"import rene.command.Command;","lastModifiedDate":"2023-10-04"},{"lineNumber":2,"author":{"gitId":"spinoandraptos"},"content":"import rene.parser.Parser;","lastModifiedDate":"2023-10-04"},{"lineNumber":3,"author":{"gitId":"spinoandraptos"},"content":"import rene.tasklist.TaskList;","lastModifiedDate":"2023-10-04"},{"lineNumber":4,"author":{"gitId":"spinoandraptos"},"content":"import rene.ui.Ui;","lastModifiedDate":"2023-10-04"},{"lineNumber":5,"author":{"gitId":"spinoandraptos"},"content":"import rene.storage.Storage;","lastModifiedDate":"2023-10-04"},{"lineNumber":6,"author":{"gitId":"spinoandraptos"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":7,"author":{"gitId":"spinoandraptos"},"content":"/**","lastModifiedDate":"2023-10-04"},{"lineNumber":8,"author":{"gitId":"spinoandraptos"},"content":" * The main program running for the Duke chatbot.","lastModifiedDate":"2023-10-04"},{"lineNumber":9,"author":{"gitId":"spinoandraptos"},"content":" * The program bridges the user interface (Ui),","lastModifiedDate":"2023-10-04"},{"lineNumber":10,"author":{"gitId":"spinoandraptos"},"content":" * hard disk data (dataStorage) and supports","lastModifiedDate":"2023-10-04"},{"lineNumber":11,"author":{"gitId":"spinoandraptos"},"content":" * dynamic data manipulation.","lastModifiedDate":"2023-10-04"},{"lineNumber":12,"author":{"gitId":"spinoandraptos"},"content":" */","lastModifiedDate":"2023-10-04"},{"lineNumber":13,"author":{"gitId":"spinoandraptos"},"content":"public class Duke {","lastModifiedDate":"2023-10-04"},{"lineNumber":14,"author":{"gitId":"spinoandraptos"},"content":" private Ui ui;","lastModifiedDate":"2023-10-04"},{"lineNumber":15,"author":{"gitId":"spinoandraptos"},"content":" private Storage dataStorage;","lastModifiedDate":"2023-10-04"},{"lineNumber":16,"author":{"gitId":"spinoandraptos"},"content":" private TaskList tasks;","lastModifiedDate":"2023-10-04"},{"lineNumber":17,"author":{"gitId":"spinoandraptos"},"content":" private Parser parser;","lastModifiedDate":"2023-10-04"},{"lineNumber":18,"author":{"gitId":"spinoandraptos"},"content":" /**","lastModifiedDate":"2023-10-04"},{"lineNumber":19,"author":{"gitId":"spinoandraptos"},"content":" * Initiates the program with the necessary components.","lastModifiedDate":"2023-10-04"},{"lineNumber":20,"author":{"gitId":"spinoandraptos"},"content":" *","lastModifiedDate":"2023-10-04"},{"lineNumber":21,"author":{"gitId":"spinoandraptos"},"content":" * @param filePath File location where data is","lastModifiedDate":"2023-10-04"},{"lineNumber":22,"author":{"gitId":"spinoandraptos"},"content":" * written to and read from by the program.","lastModifiedDate":"2023-10-04"},{"lineNumber":23,"author":{"gitId":"spinoandraptos"},"content":" */","lastModifiedDate":"2023-10-04"},{"lineNumber":24,"author":{"gitId":"spinoandraptos"},"content":" public Duke(String filePath){","lastModifiedDate":"2023-10-04"},{"lineNumber":25,"author":{"gitId":"spinoandraptos"},"content":" dataStorage \u003d new Storage(filePath);","lastModifiedDate":"2023-10-04"},{"lineNumber":26,"author":{"gitId":"spinoandraptos"},"content":" tasks \u003d new TaskList();","lastModifiedDate":"2023-10-04"},{"lineNumber":27,"author":{"gitId":"spinoandraptos"},"content":" ui \u003d new Ui(dataStorage, tasks);","lastModifiedDate":"2023-10-04"},{"lineNumber":28,"author":{"gitId":"spinoandraptos"},"content":" parser \u003d new Parser();","lastModifiedDate":"2023-10-04"},{"lineNumber":29,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":30,"author":{"gitId":"spinoandraptos"},"content":" /**","lastModifiedDate":"2023-10-04"},{"lineNumber":31,"author":{"gitId":"spinoandraptos"},"content":" * Starts the chatbot by showing opening message.","lastModifiedDate":"2023-10-04"},{"lineNumber":32,"author":{"gitId":"spinoandraptos"},"content":" * Chatbot repeatedly handles user commands","lastModifiedDate":"2023-10-04"},{"lineNumber":33,"author":{"gitId":"spinoandraptos"},"content":" * until it is requested to terminate.","lastModifiedDate":"2023-10-04"},{"lineNumber":34,"author":{"gitId":"spinoandraptos"},"content":" * Chatbot closes by showing closing message.","lastModifiedDate":"2023-10-04"},{"lineNumber":35,"author":{"gitId":"spinoandraptos"},"content":" */","lastModifiedDate":"2023-10-04"},{"lineNumber":36,"author":{"gitId":"spinoandraptos"},"content":" public void run(){","lastModifiedDate":"2023-10-04"},{"lineNumber":37,"author":{"gitId":"spinoandraptos"},"content":" ui.displayOpeningMessage();","lastModifiedDate":"2023-10-04"},{"lineNumber":38,"author":{"gitId":"spinoandraptos"},"content":" boolean toExit \u003d false;","lastModifiedDate":"2023-10-04"},{"lineNumber":39,"author":{"gitId":"spinoandraptos"},"content":" while(!toExit){","lastModifiedDate":"2023-10-04"},{"lineNumber":40,"author":{"gitId":"spinoandraptos"},"content":" String fullCommand \u003d ui.readCommand();","lastModifiedDate":"2023-10-04"},{"lineNumber":41,"author":{"gitId":"spinoandraptos"},"content":" ui.showLine();","lastModifiedDate":"2023-10-04"},{"lineNumber":42,"author":{"gitId":"spinoandraptos"},"content":" Command command \u003d parser.parseCommand(fullCommand);","lastModifiedDate":"2023-10-04"},{"lineNumber":43,"author":{"gitId":"spinoandraptos"},"content":" toExit \u003d command.toExit();","lastModifiedDate":"2023-10-04"},{"lineNumber":44,"author":{"gitId":"spinoandraptos"},"content":" command.executeCommand(ui, dataStorage, tasks);","lastModifiedDate":"2023-10-04"},{"lineNumber":45,"author":{"gitId":"spinoandraptos"},"content":" if(!toExit){","lastModifiedDate":"2023-10-04"},{"lineNumber":46,"author":{"gitId":"spinoandraptos"},"content":" ui.showLine();","lastModifiedDate":"2023-10-04"},{"lineNumber":47,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":48,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":49,"author":{"gitId":"spinoandraptos"},"content":" ui.displayClosingMessage();","lastModifiedDate":"2023-10-04"},{"lineNumber":50,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":51,"author":{"gitId":"spinoandraptos"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":52,"author":{"gitId":"spinoandraptos"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-10-04"},{"lineNumber":53,"author":{"gitId":"spinoandraptos"},"content":" new Duke(\"tasklist.txt\").run();","lastModifiedDate":"2023-10-04"},{"lineNumber":54,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":55,"author":{"gitId":"spinoandraptos"},"content":"}","lastModifiedDate":"2023-10-04"}],"authorContributionMap":{"spinoandraptos":55}},{"path":"src/main/java/rene/command/Command.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"spinoandraptos"},"content":"package rene.command;","lastModifiedDate":"2023-10-04"},{"lineNumber":2,"author":{"gitId":"spinoandraptos"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":3,"author":{"gitId":"spinoandraptos"},"content":"import rene.storage.Storage;","lastModifiedDate":"2023-10-04"},{"lineNumber":4,"author":{"gitId":"spinoandraptos"},"content":"import rene.tasklist.TaskList;","lastModifiedDate":"2023-10-04"},{"lineNumber":5,"author":{"gitId":"spinoandraptos"},"content":"import rene.ui.Ui;","lastModifiedDate":"2023-10-04"},{"lineNumber":6,"author":{"gitId":"spinoandraptos"},"content":"/**","lastModifiedDate":"2023-10-04"},{"lineNumber":7,"author":{"gitId":"spinoandraptos"},"content":" * Represents a user command to execute an action.","lastModifiedDate":"2023-10-04"},{"lineNumber":8,"author":{"gitId":"spinoandraptos"},"content":" */","lastModifiedDate":"2023-10-04"},{"lineNumber":9,"author":{"gitId":"spinoandraptos"},"content":"public class Command {","lastModifiedDate":"2023-10-04"},{"lineNumber":10,"author":{"gitId":"spinoandraptos"},"content":" public enum CommandType {TODO, DEADLINE, EVENT, DELETE, LIST, MARK, UNMARK, FIND, EXIT};","lastModifiedDate":"2023-10-04"},{"lineNumber":11,"author":{"gitId":"spinoandraptos"},"content":" private CommandType commandType;","lastModifiedDate":"2023-10-04"},{"lineNumber":12,"author":{"gitId":"spinoandraptos"},"content":" /**","lastModifiedDate":"2023-10-04"},{"lineNumber":13,"author":{"gitId":"spinoandraptos"},"content":" * Creates a new blank command.","lastModifiedDate":"2023-10-04"},{"lineNumber":14,"author":{"gitId":"spinoandraptos"},"content":" */","lastModifiedDate":"2023-10-04"},{"lineNumber":15,"author":{"gitId":"spinoandraptos"},"content":" public Command(){}","lastModifiedDate":"2023-10-04"},{"lineNumber":16,"author":{"gitId":"spinoandraptos"},"content":" /**","lastModifiedDate":"2023-10-04"},{"lineNumber":17,"author":{"gitId":"spinoandraptos"},"content":" * Creates a new command of given type.","lastModifiedDate":"2023-10-04"},{"lineNumber":18,"author":{"gitId":"spinoandraptos"},"content":" *","lastModifiedDate":"2023-10-04"},{"lineNumber":19,"author":{"gitId":"spinoandraptos"},"content":" * @param commandType Type of command.","lastModifiedDate":"2023-10-04"},{"lineNumber":20,"author":{"gitId":"spinoandraptos"},"content":" */","lastModifiedDate":"2023-10-04"},{"lineNumber":21,"author":{"gitId":"spinoandraptos"},"content":" public Command(CommandType commandType){","lastModifiedDate":"2023-10-04"},{"lineNumber":22,"author":{"gitId":"spinoandraptos"},"content":" this.commandType \u003d commandType;","lastModifiedDate":"2023-10-04"},{"lineNumber":23,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":24,"author":{"gitId":"spinoandraptos"},"content":" /**","lastModifiedDate":"2023-10-04"},{"lineNumber":25,"author":{"gitId":"spinoandraptos"},"content":" * Performs an action according to command.","lastModifiedDate":"2023-10-04"},{"lineNumber":26,"author":{"gitId":"spinoandraptos"},"content":" *","lastModifiedDate":"2023-10-04"},{"lineNumber":27,"author":{"gitId":"spinoandraptos"},"content":" * @param ui User interface for interactions with user through CLI.","lastModifiedDate":"2023-10-04"},{"lineNumber":28,"author":{"gitId":"spinoandraptos"},"content":" * @param tasks Current task list in the program.","lastModifiedDate":"2023-10-04"},{"lineNumber":29,"author":{"gitId":"spinoandraptos"},"content":" * @param dataStorage Hard disk storage for storing task data.","lastModifiedDate":"2023-10-04"},{"lineNumber":30,"author":{"gitId":"spinoandraptos"},"content":" */","lastModifiedDate":"2023-10-04"},{"lineNumber":31,"author":{"gitId":"spinoandraptos"},"content":" public void executeCommand(Ui ui, Storage dataStorage, TaskList tasks){}","lastModifiedDate":"2023-10-04"},{"lineNumber":32,"author":{"gitId":"spinoandraptos"},"content":" /**","lastModifiedDate":"2023-10-04"},{"lineNumber":33,"author":{"gitId":"spinoandraptos"},"content":" * Checks if the latest command calls for program termination.","lastModifiedDate":"2023-10-04"},{"lineNumber":34,"author":{"gitId":"spinoandraptos"},"content":" */","lastModifiedDate":"2023-10-04"},{"lineNumber":35,"author":{"gitId":"spinoandraptos"},"content":" public boolean toExit(){","lastModifiedDate":"2023-10-04"},{"lineNumber":36,"author":{"gitId":"spinoandraptos"},"content":" return commandType \u003d\u003d CommandType.EXIT;","lastModifiedDate":"2023-10-04"},{"lineNumber":37,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":38,"author":{"gitId":"spinoandraptos"},"content":"}","lastModifiedDate":"2023-10-04"}],"authorContributionMap":{"spinoandraptos":38}},{"path":"src/main/java/rene/command/CommandDeadline.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"spinoandraptos"},"content":"package rene.command;","lastModifiedDate":"2023-10-04"},{"lineNumber":2,"author":{"gitId":"spinoandraptos"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":3,"author":{"gitId":"spinoandraptos"},"content":"import rene.storage.Storage;","lastModifiedDate":"2023-10-04"},{"lineNumber":4,"author":{"gitId":"spinoandraptos"},"content":"import rene.task.Task;","lastModifiedDate":"2023-10-04"},{"lineNumber":5,"author":{"gitId":"spinoandraptos"},"content":"import rene.tasklist.TaskList;","lastModifiedDate":"2023-10-04"},{"lineNumber":6,"author":{"gitId":"spinoandraptos"},"content":"import rene.ui.Ui;","lastModifiedDate":"2023-10-04"},{"lineNumber":7,"author":{"gitId":"spinoandraptos"},"content":"/**","lastModifiedDate":"2023-10-04"},{"lineNumber":8,"author":{"gitId":"spinoandraptos"},"content":" * Represents a command to add a deadline task.","lastModifiedDate":"2023-10-04"},{"lineNumber":9,"author":{"gitId":"spinoandraptos"},"content":" */","lastModifiedDate":"2023-10-04"},{"lineNumber":10,"author":{"gitId":"spinoandraptos"},"content":"public class CommandDeadline extends Command {","lastModifiedDate":"2023-10-04"},{"lineNumber":11,"author":{"gitId":"spinoandraptos"},"content":" private String userInput;","lastModifiedDate":"2023-10-04"},{"lineNumber":12,"author":{"gitId":"spinoandraptos"},"content":" /**","lastModifiedDate":"2023-10-04"},{"lineNumber":13,"author":{"gitId":"spinoandraptos"},"content":" * Creates a new deadline command to add a deadline task.","lastModifiedDate":"2023-10-04"},{"lineNumber":14,"author":{"gitId":"spinoandraptos"},"content":" *","lastModifiedDate":"2023-10-04"},{"lineNumber":15,"author":{"gitId":"spinoandraptos"},"content":" * @param userInput User input containing details of the deadline task.","lastModifiedDate":"2023-10-04"},{"lineNumber":16,"author":{"gitId":"spinoandraptos"},"content":" */","lastModifiedDate":"2023-10-04"},{"lineNumber":17,"author":{"gitId":"spinoandraptos"},"content":" public CommandDeadline(String userInput){","lastModifiedDate":"2023-10-04"},{"lineNumber":18,"author":{"gitId":"spinoandraptos"},"content":" super(CommandType.DEADLINE);","lastModifiedDate":"2023-10-04"},{"lineNumber":19,"author":{"gitId":"spinoandraptos"},"content":" this.userInput \u003d userInput;","lastModifiedDate":"2023-10-04"},{"lineNumber":20,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":21,"author":{"gitId":"spinoandraptos"},"content":" /**","lastModifiedDate":"2023-10-04"},{"lineNumber":22,"author":{"gitId":"spinoandraptos"},"content":" * Adds the deadline task and updates storage data.","lastModifiedDate":"2023-10-04"},{"lineNumber":23,"author":{"gitId":"spinoandraptos"},"content":" *","lastModifiedDate":"2023-10-04"},{"lineNumber":24,"author":{"gitId":"spinoandraptos"},"content":" * @param ui User interface for interactions with user through CLI.","lastModifiedDate":"2023-10-04"},{"lineNumber":25,"author":{"gitId":"spinoandraptos"},"content":" * @param tasks Current task list in the program.","lastModifiedDate":"2023-10-04"},{"lineNumber":26,"author":{"gitId":"spinoandraptos"},"content":" * @param dataStorage Hard disk storage for storing task data.","lastModifiedDate":"2023-10-04"},{"lineNumber":27,"author":{"gitId":"spinoandraptos"},"content":" */","lastModifiedDate":"2023-10-04"},{"lineNumber":28,"author":{"gitId":"spinoandraptos"},"content":" @Override","lastModifiedDate":"2023-10-04"},{"lineNumber":29,"author":{"gitId":"spinoandraptos"},"content":" public void executeCommand(Ui ui, Storage dataStorage, TaskList tasks){","lastModifiedDate":"2023-10-04"},{"lineNumber":30,"author":{"gitId":"spinoandraptos"},"content":" tasks.addToTaskList(userInput, Task.TaskType.DEADLINE, true);","lastModifiedDate":"2023-10-04"},{"lineNumber":31,"author":{"gitId":"spinoandraptos"},"content":" dataStorage.updateData(tasks);","lastModifiedDate":"2023-10-04"},{"lineNumber":32,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":33,"author":{"gitId":"spinoandraptos"},"content":"}","lastModifiedDate":"2023-10-04"}],"authorContributionMap":{"spinoandraptos":33}},{"path":"src/main/java/rene/command/CommandDelete.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"spinoandraptos"},"content":"package rene.command;","lastModifiedDate":"2023-10-04"},{"lineNumber":2,"author":{"gitId":"spinoandraptos"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":3,"author":{"gitId":"spinoandraptos"},"content":"import rene.storage.Storage;","lastModifiedDate":"2023-10-04"},{"lineNumber":4,"author":{"gitId":"spinoandraptos"},"content":"import rene.tasklist.TaskList;","lastModifiedDate":"2023-10-04"},{"lineNumber":5,"author":{"gitId":"spinoandraptos"},"content":"import rene.ui.Ui;","lastModifiedDate":"2023-10-04"},{"lineNumber":6,"author":{"gitId":"spinoandraptos"},"content":"/**","lastModifiedDate":"2023-10-04"},{"lineNumber":7,"author":{"gitId":"spinoandraptos"},"content":" * Represents a command to delete a task.","lastModifiedDate":"2023-10-04"},{"lineNumber":8,"author":{"gitId":"spinoandraptos"},"content":" */","lastModifiedDate":"2023-10-04"},{"lineNumber":9,"author":{"gitId":"spinoandraptos"},"content":"public class CommandDelete extends Command {","lastModifiedDate":"2023-10-04"},{"lineNumber":10,"author":{"gitId":"spinoandraptos"},"content":" private int taskIndex;","lastModifiedDate":"2023-10-04"},{"lineNumber":11,"author":{"gitId":"spinoandraptos"},"content":" /**","lastModifiedDate":"2023-10-04"},{"lineNumber":12,"author":{"gitId":"spinoandraptos"},"content":" * Creates a new delete command for a task of specified index.","lastModifiedDate":"2023-10-04"},{"lineNumber":13,"author":{"gitId":"spinoandraptos"},"content":" *","lastModifiedDate":"2023-10-04"},{"lineNumber":14,"author":{"gitId":"spinoandraptos"},"content":" * @param taskIndex Index of the task to be deleted.","lastModifiedDate":"2023-10-04"},{"lineNumber":15,"author":{"gitId":"spinoandraptos"},"content":" */","lastModifiedDate":"2023-10-04"},{"lineNumber":16,"author":{"gitId":"spinoandraptos"},"content":" public CommandDelete(int taskIndex){","lastModifiedDate":"2023-10-04"},{"lineNumber":17,"author":{"gitId":"spinoandraptos"},"content":" super(CommandType.DELETE);","lastModifiedDate":"2023-10-04"},{"lineNumber":18,"author":{"gitId":"spinoandraptos"},"content":" this.taskIndex \u003d taskIndex;","lastModifiedDate":"2023-10-04"},{"lineNumber":19,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":20,"author":{"gitId":"spinoandraptos"},"content":" /**","lastModifiedDate":"2023-10-04"},{"lineNumber":21,"author":{"gitId":"spinoandraptos"},"content":" * Checks if specified task exists.","lastModifiedDate":"2023-10-04"},{"lineNumber":22,"author":{"gitId":"spinoandraptos"},"content":" * Deletes the specified task and updates storage data.","lastModifiedDate":"2023-10-04"},{"lineNumber":23,"author":{"gitId":"spinoandraptos"},"content":" *","lastModifiedDate":"2023-10-04"},{"lineNumber":24,"author":{"gitId":"spinoandraptos"},"content":" * @param ui User interface for interactions with user through CLI.","lastModifiedDate":"2023-10-04"},{"lineNumber":25,"author":{"gitId":"spinoandraptos"},"content":" * @param tasks Current task list in the program.","lastModifiedDate":"2023-10-04"},{"lineNumber":26,"author":{"gitId":"spinoandraptos"},"content":" * @param dataStorage Hard disk storage for storing task data.","lastModifiedDate":"2023-10-04"},{"lineNumber":27,"author":{"gitId":"spinoandraptos"},"content":" */","lastModifiedDate":"2023-10-04"},{"lineNumber":28,"author":{"gitId":"spinoandraptos"},"content":" @Override","lastModifiedDate":"2023-10-04"},{"lineNumber":29,"author":{"gitId":"spinoandraptos"},"content":" public void executeCommand(Ui ui, Storage dataStorage, TaskList tasks){","lastModifiedDate":"2023-10-04"},{"lineNumber":30,"author":{"gitId":"spinoandraptos"},"content":" String taskName \u003d tasks.viewTaskByIndex(taskIndex);","lastModifiedDate":"2023-10-04"},{"lineNumber":31,"author":{"gitId":"spinoandraptos"},"content":" if(!taskName.equals(\"Task Not Found\")) {","lastModifiedDate":"2023-10-04"},{"lineNumber":32,"author":{"gitId":"spinoandraptos"},"content":" tasks.deleteTaskByIndex(taskIndex);","lastModifiedDate":"2023-10-04"},{"lineNumber":33,"author":{"gitId":"spinoandraptos"},"content":" dataStorage.updateData(tasks);","lastModifiedDate":"2023-10-04"},{"lineNumber":34,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":35,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":36,"author":{"gitId":"spinoandraptos"},"content":"}","lastModifiedDate":"2023-10-04"}],"authorContributionMap":{"spinoandraptos":36}},{"path":"src/main/java/rene/command/CommandEvent.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"spinoandraptos"},"content":"package rene.command;","lastModifiedDate":"2023-10-04"},{"lineNumber":2,"author":{"gitId":"spinoandraptos"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":3,"author":{"gitId":"spinoandraptos"},"content":"import rene.storage.Storage;","lastModifiedDate":"2023-10-04"},{"lineNumber":4,"author":{"gitId":"spinoandraptos"},"content":"import rene.task.Task;","lastModifiedDate":"2023-10-04"},{"lineNumber":5,"author":{"gitId":"spinoandraptos"},"content":"import rene.tasklist.TaskList;","lastModifiedDate":"2023-10-04"},{"lineNumber":6,"author":{"gitId":"spinoandraptos"},"content":"import rene.ui.Ui;","lastModifiedDate":"2023-10-04"},{"lineNumber":7,"author":{"gitId":"spinoandraptos"},"content":"/**","lastModifiedDate":"2023-10-04"},{"lineNumber":8,"author":{"gitId":"spinoandraptos"},"content":" * Represents a command to add an event task.","lastModifiedDate":"2023-10-04"},{"lineNumber":9,"author":{"gitId":"spinoandraptos"},"content":" */","lastModifiedDate":"2023-10-04"},{"lineNumber":10,"author":{"gitId":"spinoandraptos"},"content":"public class CommandEvent extends Command{","lastModifiedDate":"2023-10-04"},{"lineNumber":11,"author":{"gitId":"spinoandraptos"},"content":" private String userInput;","lastModifiedDate":"2023-10-04"},{"lineNumber":12,"author":{"gitId":"spinoandraptos"},"content":" /**","lastModifiedDate":"2023-10-04"},{"lineNumber":13,"author":{"gitId":"spinoandraptos"},"content":" * Creates a new event command to add an event task.","lastModifiedDate":"2023-10-04"},{"lineNumber":14,"author":{"gitId":"spinoandraptos"},"content":" *","lastModifiedDate":"2023-10-04"},{"lineNumber":15,"author":{"gitId":"spinoandraptos"},"content":" * @param userInput User input containing details of the event task.","lastModifiedDate":"2023-10-04"},{"lineNumber":16,"author":{"gitId":"spinoandraptos"},"content":" */","lastModifiedDate":"2023-10-04"},{"lineNumber":17,"author":{"gitId":"spinoandraptos"},"content":" public CommandEvent(String userInput){","lastModifiedDate":"2023-10-04"},{"lineNumber":18,"author":{"gitId":"spinoandraptos"},"content":" super(CommandType.EVENT);","lastModifiedDate":"2023-10-04"},{"lineNumber":19,"author":{"gitId":"spinoandraptos"},"content":" this.userInput \u003d userInput;","lastModifiedDate":"2023-10-04"},{"lineNumber":20,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":21,"author":{"gitId":"spinoandraptos"},"content":" /**","lastModifiedDate":"2023-10-04"},{"lineNumber":22,"author":{"gitId":"spinoandraptos"},"content":" * Adds the event task and updates storage data.","lastModifiedDate":"2023-10-04"},{"lineNumber":23,"author":{"gitId":"spinoandraptos"},"content":" *","lastModifiedDate":"2023-10-04"},{"lineNumber":24,"author":{"gitId":"spinoandraptos"},"content":" * @param ui User interface for interactions with user through CLI.","lastModifiedDate":"2023-10-04"},{"lineNumber":25,"author":{"gitId":"spinoandraptos"},"content":" * @param tasks Current task list in the program.","lastModifiedDate":"2023-10-04"},{"lineNumber":26,"author":{"gitId":"spinoandraptos"},"content":" * @param dataStorage Hard disk storage for storing task data.","lastModifiedDate":"2023-10-04"},{"lineNumber":27,"author":{"gitId":"spinoandraptos"},"content":" */","lastModifiedDate":"2023-10-04"},{"lineNumber":28,"author":{"gitId":"spinoandraptos"},"content":" @Override","lastModifiedDate":"2023-10-04"},{"lineNumber":29,"author":{"gitId":"spinoandraptos"},"content":" public void executeCommand(Ui ui, Storage dataStorage, TaskList tasks){","lastModifiedDate":"2023-10-04"},{"lineNumber":30,"author":{"gitId":"spinoandraptos"},"content":" tasks.addToTaskList(userInput, Task.TaskType.EVENT, true);","lastModifiedDate":"2023-10-04"},{"lineNumber":31,"author":{"gitId":"spinoandraptos"},"content":" dataStorage.updateData(tasks);","lastModifiedDate":"2023-10-04"},{"lineNumber":32,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":33,"author":{"gitId":"spinoandraptos"},"content":"}","lastModifiedDate":"2023-10-04"}],"authorContributionMap":{"spinoandraptos":33}},{"path":"src/main/java/rene/command/CommandExit.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"spinoandraptos"},"content":"package rene.command;","lastModifiedDate":"2023-10-04"},{"lineNumber":2,"author":{"gitId":"spinoandraptos"},"content":"/**","lastModifiedDate":"2023-10-04"},{"lineNumber":3,"author":{"gitId":"spinoandraptos"},"content":" * Represents a command to exit the program.","lastModifiedDate":"2023-10-04"},{"lineNumber":4,"author":{"gitId":"spinoandraptos"},"content":" */","lastModifiedDate":"2023-10-04"},{"lineNumber":5,"author":{"gitId":"spinoandraptos"},"content":"public class CommandExit extends Command {","lastModifiedDate":"2023-10-04"},{"lineNumber":6,"author":{"gitId":"spinoandraptos"},"content":" /**","lastModifiedDate":"2023-10-04"},{"lineNumber":7,"author":{"gitId":"spinoandraptos"},"content":" * Creates a new exit command to terminate program.","lastModifiedDate":"2023-10-04"},{"lineNumber":8,"author":{"gitId":"spinoandraptos"},"content":" */","lastModifiedDate":"2023-10-04"},{"lineNumber":9,"author":{"gitId":"spinoandraptos"},"content":" public CommandExit() {","lastModifiedDate":"2023-10-04"},{"lineNumber":10,"author":{"gitId":"spinoandraptos"},"content":" super(CommandType.EXIT);","lastModifiedDate":"2023-10-04"},{"lineNumber":11,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":12,"author":{"gitId":"spinoandraptos"},"content":"}","lastModifiedDate":"2023-10-04"}],"authorContributionMap":{"spinoandraptos":12}},{"path":"src/main/java/rene/command/CommandFind.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"spinoandraptos"},"content":"package rene.command;","lastModifiedDate":"2023-10-04"},{"lineNumber":2,"author":{"gitId":"spinoandraptos"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":3,"author":{"gitId":"spinoandraptos"},"content":"import rene.storage.Storage;","lastModifiedDate":"2023-10-04"},{"lineNumber":4,"author":{"gitId":"spinoandraptos"},"content":"import rene.tasklist.TaskList;","lastModifiedDate":"2023-10-04"},{"lineNumber":5,"author":{"gitId":"spinoandraptos"},"content":"import rene.ui.Ui;","lastModifiedDate":"2023-10-04"},{"lineNumber":6,"author":{"gitId":"spinoandraptos"},"content":"/**","lastModifiedDate":"2023-10-04"},{"lineNumber":7,"author":{"gitId":"spinoandraptos"},"content":" * Represents a command to search for a task.","lastModifiedDate":"2023-10-04"},{"lineNumber":8,"author":{"gitId":"spinoandraptos"},"content":" */","lastModifiedDate":"2023-10-04"},{"lineNumber":9,"author":{"gitId":"spinoandraptos"},"content":"public class CommandFind extends Command{","lastModifiedDate":"2023-10-04"},{"lineNumber":10,"author":{"gitId":"spinoandraptos"},"content":" private String searchDetails;","lastModifiedDate":"2023-10-04"},{"lineNumber":11,"author":{"gitId":"spinoandraptos"},"content":" /**","lastModifiedDate":"2023-10-04"},{"lineNumber":12,"author":{"gitId":"spinoandraptos"},"content":" * Creates a new find command to search for a task.","lastModifiedDate":"2023-10-04"},{"lineNumber":13,"author":{"gitId":"spinoandraptos"},"content":" *","lastModifiedDate":"2023-10-04"},{"lineNumber":14,"author":{"gitId":"spinoandraptos"},"content":" * @param searchDetails User input containing details of what to search.","lastModifiedDate":"2023-10-04"},{"lineNumber":15,"author":{"gitId":"spinoandraptos"},"content":" */","lastModifiedDate":"2023-10-04"},{"lineNumber":16,"author":{"gitId":"spinoandraptos"},"content":" public CommandFind(String searchDetails){","lastModifiedDate":"2023-10-04"},{"lineNumber":17,"author":{"gitId":"spinoandraptos"},"content":" super((CommandType.FIND));","lastModifiedDate":"2023-10-04"},{"lineNumber":18,"author":{"gitId":"spinoandraptos"},"content":" this.searchDetails \u003d searchDetails;","lastModifiedDate":"2023-10-04"},{"lineNumber":19,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":20,"author":{"gitId":"spinoandraptos"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":21,"author":{"gitId":"spinoandraptos"},"content":" /**","lastModifiedDate":"2023-10-04"},{"lineNumber":22,"author":{"gitId":"spinoandraptos"},"content":" * Checks if specified task exists.","lastModifiedDate":"2023-10-04"},{"lineNumber":23,"author":{"gitId":"spinoandraptos"},"content":" * Marks the specified task as not done and updates storage data.","lastModifiedDate":"2023-10-04"},{"lineNumber":24,"author":{"gitId":"spinoandraptos"},"content":" *","lastModifiedDate":"2023-10-04"},{"lineNumber":25,"author":{"gitId":"spinoandraptos"},"content":" * @param ui User interface for interactions with user through CLI.","lastModifiedDate":"2023-10-04"},{"lineNumber":26,"author":{"gitId":"spinoandraptos"},"content":" * @param tasks Current task list in the program.","lastModifiedDate":"2023-10-04"},{"lineNumber":27,"author":{"gitId":"spinoandraptos"},"content":" * @param dataStorage Hard disk storage for storing task data.","lastModifiedDate":"2023-10-04"},{"lineNumber":28,"author":{"gitId":"spinoandraptos"},"content":" */","lastModifiedDate":"2023-10-04"},{"lineNumber":29,"author":{"gitId":"spinoandraptos"},"content":" @Override","lastModifiedDate":"2023-10-04"},{"lineNumber":30,"author":{"gitId":"spinoandraptos"},"content":" public void executeCommand(Ui ui, Storage dataStorage, TaskList tasks) {","lastModifiedDate":"2023-10-04"},{"lineNumber":31,"author":{"gitId":"spinoandraptos"},"content":" tasks.searchList(searchDetails);","lastModifiedDate":"2023-10-04"},{"lineNumber":32,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":33,"author":{"gitId":"spinoandraptos"},"content":"}","lastModifiedDate":"2023-10-04"}],"authorContributionMap":{"spinoandraptos":33}},{"path":"src/main/java/rene/command/CommandList.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"spinoandraptos"},"content":"package rene.command;","lastModifiedDate":"2023-10-04"},{"lineNumber":2,"author":{"gitId":"spinoandraptos"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":3,"author":{"gitId":"spinoandraptos"},"content":"import rene.storage.Storage;","lastModifiedDate":"2023-10-04"},{"lineNumber":4,"author":{"gitId":"spinoandraptos"},"content":"import rene.tasklist.TaskList;","lastModifiedDate":"2023-10-04"},{"lineNumber":5,"author":{"gitId":"spinoandraptos"},"content":"import rene.ui.Ui;","lastModifiedDate":"2023-10-04"},{"lineNumber":6,"author":{"gitId":"spinoandraptos"},"content":"/**","lastModifiedDate":"2023-10-04"},{"lineNumber":7,"author":{"gitId":"spinoandraptos"},"content":" * Represents a command to list all tasks.","lastModifiedDate":"2023-10-04"},{"lineNumber":8,"author":{"gitId":"spinoandraptos"},"content":" */","lastModifiedDate":"2023-10-04"},{"lineNumber":9,"author":{"gitId":"spinoandraptos"},"content":"public class CommandList extends Command {","lastModifiedDate":"2023-10-04"},{"lineNumber":10,"author":{"gitId":"spinoandraptos"},"content":" /**","lastModifiedDate":"2023-10-04"},{"lineNumber":11,"author":{"gitId":"spinoandraptos"},"content":" * Creates a new list command to list all tasks.","lastModifiedDate":"2023-10-04"},{"lineNumber":12,"author":{"gitId":"spinoandraptos"},"content":" */","lastModifiedDate":"2023-10-04"},{"lineNumber":13,"author":{"gitId":"spinoandraptos"},"content":" public CommandList(){","lastModifiedDate":"2023-10-04"},{"lineNumber":14,"author":{"gitId":"spinoandraptos"},"content":" super(CommandType.LIST);","lastModifiedDate":"2023-10-04"},{"lineNumber":15,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":16,"author":{"gitId":"spinoandraptos"},"content":" /**","lastModifiedDate":"2023-10-04"},{"lineNumber":17,"author":{"gitId":"spinoandraptos"},"content":" * Prints all tasks in current task list.","lastModifiedDate":"2023-10-04"},{"lineNumber":18,"author":{"gitId":"spinoandraptos"},"content":" *","lastModifiedDate":"2023-10-04"},{"lineNumber":19,"author":{"gitId":"spinoandraptos"},"content":" * @param ui User interface for interactions with user through CLI.","lastModifiedDate":"2023-10-04"},{"lineNumber":20,"author":{"gitId":"spinoandraptos"},"content":" * @param tasks Current task list in the program.","lastModifiedDate":"2023-10-04"},{"lineNumber":21,"author":{"gitId":"spinoandraptos"},"content":" * @param dataStorage Hard disk storage for storing task data.","lastModifiedDate":"2023-10-04"},{"lineNumber":22,"author":{"gitId":"spinoandraptos"},"content":" */","lastModifiedDate":"2023-10-04"},{"lineNumber":23,"author":{"gitId":"spinoandraptos"},"content":" @Override","lastModifiedDate":"2023-10-04"},{"lineNumber":24,"author":{"gitId":"spinoandraptos"},"content":" public void executeCommand(Ui ui, Storage dataStorage, TaskList tasks){","lastModifiedDate":"2023-10-04"},{"lineNumber":25,"author":{"gitId":"spinoandraptos"},"content":" tasks.printTaskList();","lastModifiedDate":"2023-10-04"},{"lineNumber":26,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":27,"author":{"gitId":"spinoandraptos"},"content":"}","lastModifiedDate":"2023-10-04"}],"authorContributionMap":{"spinoandraptos":27}},{"path":"src/main/java/rene/command/CommandMark.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"spinoandraptos"},"content":"package rene.command;","lastModifiedDate":"2023-10-04"},{"lineNumber":2,"author":{"gitId":"spinoandraptos"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":3,"author":{"gitId":"spinoandraptos"},"content":"import rene.storage.Storage;","lastModifiedDate":"2023-10-04"},{"lineNumber":4,"author":{"gitId":"spinoandraptos"},"content":"import rene.tasklist.TaskList;","lastModifiedDate":"2023-10-04"},{"lineNumber":5,"author":{"gitId":"spinoandraptos"},"content":"import rene.ui.Ui;","lastModifiedDate":"2023-10-04"},{"lineNumber":6,"author":{"gitId":"spinoandraptos"},"content":"/**","lastModifiedDate":"2023-10-04"},{"lineNumber":7,"author":{"gitId":"spinoandraptos"},"content":" * Represents a command to mark a task as done.","lastModifiedDate":"2023-10-04"},{"lineNumber":8,"author":{"gitId":"spinoandraptos"},"content":" */","lastModifiedDate":"2023-10-04"},{"lineNumber":9,"author":{"gitId":"spinoandraptos"},"content":"public class CommandMark extends Command {","lastModifiedDate":"2023-10-04"},{"lineNumber":10,"author":{"gitId":"spinoandraptos"},"content":" private int taskIndex;","lastModifiedDate":"2023-10-04"},{"lineNumber":11,"author":{"gitId":"spinoandraptos"},"content":" /**","lastModifiedDate":"2023-10-04"},{"lineNumber":12,"author":{"gitId":"spinoandraptos"},"content":" * Creates a new mark command for a task of specified index.","lastModifiedDate":"2023-10-04"},{"lineNumber":13,"author":{"gitId":"spinoandraptos"},"content":" *","lastModifiedDate":"2023-10-04"},{"lineNumber":14,"author":{"gitId":"spinoandraptos"},"content":" * @param taskIndex Index of the task to be marked.","lastModifiedDate":"2023-10-04"},{"lineNumber":15,"author":{"gitId":"spinoandraptos"},"content":" */","lastModifiedDate":"2023-10-04"},{"lineNumber":16,"author":{"gitId":"spinoandraptos"},"content":" public CommandMark(int taskIndex){","lastModifiedDate":"2023-10-04"},{"lineNumber":17,"author":{"gitId":"spinoandraptos"},"content":" super(CommandType.MARK);","lastModifiedDate":"2023-10-04"},{"lineNumber":18,"author":{"gitId":"spinoandraptos"},"content":" this.taskIndex \u003d taskIndex;","lastModifiedDate":"2023-10-04"},{"lineNumber":19,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":20,"author":{"gitId":"spinoandraptos"},"content":" /**","lastModifiedDate":"2023-10-04"},{"lineNumber":21,"author":{"gitId":"spinoandraptos"},"content":" * Checks if specified task exists.","lastModifiedDate":"2023-10-04"},{"lineNumber":22,"author":{"gitId":"spinoandraptos"},"content":" * Marks the specified task as done and updates storage data.","lastModifiedDate":"2023-10-04"},{"lineNumber":23,"author":{"gitId":"spinoandraptos"},"content":" *","lastModifiedDate":"2023-10-04"},{"lineNumber":24,"author":{"gitId":"spinoandraptos"},"content":" * @param ui User interface for interactions with user through CLI.","lastModifiedDate":"2023-10-04"},{"lineNumber":25,"author":{"gitId":"spinoandraptos"},"content":" * @param tasks Current task list in the program.","lastModifiedDate":"2023-10-04"},{"lineNumber":26,"author":{"gitId":"spinoandraptos"},"content":" * @param dataStorage Hard disk storage for storing task data.","lastModifiedDate":"2023-10-04"},{"lineNumber":27,"author":{"gitId":"spinoandraptos"},"content":" */","lastModifiedDate":"2023-10-04"},{"lineNumber":28,"author":{"gitId":"spinoandraptos"},"content":" @Override","lastModifiedDate":"2023-10-04"},{"lineNumber":29,"author":{"gitId":"spinoandraptos"},"content":" public void executeCommand(Ui ui, Storage dataStorage, TaskList tasks){","lastModifiedDate":"2023-10-04"},{"lineNumber":30,"author":{"gitId":"spinoandraptos"},"content":" String taskName \u003d tasks.viewTaskByIndex(taskIndex);","lastModifiedDate":"2023-10-04"},{"lineNumber":31,"author":{"gitId":"spinoandraptos"},"content":" if(!taskName.equals(\"Task Not Found\")) {","lastModifiedDate":"2023-10-04"},{"lineNumber":32,"author":{"gitId":"spinoandraptos"},"content":" tasks.markTaskAsDone(taskIndex, true);","lastModifiedDate":"2023-10-04"},{"lineNumber":33,"author":{"gitId":"spinoandraptos"},"content":" dataStorage.updateData(tasks);","lastModifiedDate":"2023-10-04"},{"lineNumber":34,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":35,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":36,"author":{"gitId":"spinoandraptos"},"content":"}","lastModifiedDate":"2023-10-04"}],"authorContributionMap":{"spinoandraptos":36}},{"path":"src/main/java/rene/command/CommandTodo.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"spinoandraptos"},"content":"package rene.command;","lastModifiedDate":"2023-10-04"},{"lineNumber":2,"author":{"gitId":"spinoandraptos"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":3,"author":{"gitId":"spinoandraptos"},"content":"import rene.storage.Storage;","lastModifiedDate":"2023-10-04"},{"lineNumber":4,"author":{"gitId":"spinoandraptos"},"content":"import rene.task.Task;","lastModifiedDate":"2023-10-04"},{"lineNumber":5,"author":{"gitId":"spinoandraptos"},"content":"import rene.tasklist.TaskList;","lastModifiedDate":"2023-10-04"},{"lineNumber":6,"author":{"gitId":"spinoandraptos"},"content":"import rene.ui.Ui;","lastModifiedDate":"2023-10-04"},{"lineNumber":7,"author":{"gitId":"spinoandraptos"},"content":"/**","lastModifiedDate":"2023-10-04"},{"lineNumber":8,"author":{"gitId":"spinoandraptos"},"content":" * Represents a command to add a todo task.","lastModifiedDate":"2023-10-04"},{"lineNumber":9,"author":{"gitId":"spinoandraptos"},"content":" */","lastModifiedDate":"2023-10-04"},{"lineNumber":10,"author":{"gitId":"spinoandraptos"},"content":"public class CommandTodo extends Command {","lastModifiedDate":"2023-10-04"},{"lineNumber":11,"author":{"gitId":"spinoandraptos"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":12,"author":{"gitId":"spinoandraptos"},"content":" private String userInput;","lastModifiedDate":"2023-10-04"},{"lineNumber":13,"author":{"gitId":"spinoandraptos"},"content":" /**","lastModifiedDate":"2023-10-04"},{"lineNumber":14,"author":{"gitId":"spinoandraptos"},"content":" * Creates a new todo command to add a todo task.","lastModifiedDate":"2023-10-04"},{"lineNumber":15,"author":{"gitId":"spinoandraptos"},"content":" *","lastModifiedDate":"2023-10-04"},{"lineNumber":16,"author":{"gitId":"spinoandraptos"},"content":" * @param userInput User input containing details of the todo task.","lastModifiedDate":"2023-10-04"},{"lineNumber":17,"author":{"gitId":"spinoandraptos"},"content":" */","lastModifiedDate":"2023-10-04"},{"lineNumber":18,"author":{"gitId":"spinoandraptos"},"content":" public CommandTodo(String userInput){","lastModifiedDate":"2023-10-04"},{"lineNumber":19,"author":{"gitId":"spinoandraptos"},"content":" super(CommandType.TODO);","lastModifiedDate":"2023-10-04"},{"lineNumber":20,"author":{"gitId":"spinoandraptos"},"content":" this.userInput \u003d userInput;","lastModifiedDate":"2023-10-04"},{"lineNumber":21,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":22,"author":{"gitId":"spinoandraptos"},"content":" /**","lastModifiedDate":"2023-10-04"},{"lineNumber":23,"author":{"gitId":"spinoandraptos"},"content":" * Adds the todo task and updates storage data.","lastModifiedDate":"2023-10-04"},{"lineNumber":24,"author":{"gitId":"spinoandraptos"},"content":" *","lastModifiedDate":"2023-10-04"},{"lineNumber":25,"author":{"gitId":"spinoandraptos"},"content":" * @param ui User interface for interactions with user through CLI.","lastModifiedDate":"2023-10-04"},{"lineNumber":26,"author":{"gitId":"spinoandraptos"},"content":" * @param tasks Current task list in the program.","lastModifiedDate":"2023-10-04"},{"lineNumber":27,"author":{"gitId":"spinoandraptos"},"content":" * @param dataStorage Hard disk storage for storing task data.","lastModifiedDate":"2023-10-04"},{"lineNumber":28,"author":{"gitId":"spinoandraptos"},"content":" */","lastModifiedDate":"2023-10-04"},{"lineNumber":29,"author":{"gitId":"spinoandraptos"},"content":" @Override","lastModifiedDate":"2023-10-04"},{"lineNumber":30,"author":{"gitId":"spinoandraptos"},"content":" public void executeCommand(Ui ui, Storage dataStorage, TaskList tasks){","lastModifiedDate":"2023-10-04"},{"lineNumber":31,"author":{"gitId":"spinoandraptos"},"content":" tasks.addToTaskList(userInput, Task.TaskType.TODO, true);","lastModifiedDate":"2023-10-04"},{"lineNumber":32,"author":{"gitId":"spinoandraptos"},"content":" dataStorage.updateData(tasks);","lastModifiedDate":"2023-10-04"},{"lineNumber":33,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":34,"author":{"gitId":"spinoandraptos"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":35,"author":{"gitId":"spinoandraptos"},"content":"}","lastModifiedDate":"2023-10-04"}],"authorContributionMap":{"spinoandraptos":35}},{"path":"src/main/java/rene/command/CommandUnmark.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"spinoandraptos"},"content":"package rene.command;","lastModifiedDate":"2023-10-04"},{"lineNumber":2,"author":{"gitId":"spinoandraptos"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":3,"author":{"gitId":"spinoandraptos"},"content":"import rene.storage.Storage;","lastModifiedDate":"2023-10-04"},{"lineNumber":4,"author":{"gitId":"spinoandraptos"},"content":"import rene.tasklist.TaskList;","lastModifiedDate":"2023-10-04"},{"lineNumber":5,"author":{"gitId":"spinoandraptos"},"content":"import rene.ui.Ui;","lastModifiedDate":"2023-10-04"},{"lineNumber":6,"author":{"gitId":"spinoandraptos"},"content":"/**","lastModifiedDate":"2023-10-04"},{"lineNumber":7,"author":{"gitId":"spinoandraptos"},"content":" * Represents a command to mark a task as not done.","lastModifiedDate":"2023-10-04"},{"lineNumber":8,"author":{"gitId":"spinoandraptos"},"content":" */","lastModifiedDate":"2023-10-04"},{"lineNumber":9,"author":{"gitId":"spinoandraptos"},"content":"public class CommandUnmark extends Command {","lastModifiedDate":"2023-10-04"},{"lineNumber":10,"author":{"gitId":"spinoandraptos"},"content":" private int taskIndex;","lastModifiedDate":"2023-10-04"},{"lineNumber":11,"author":{"gitId":"spinoandraptos"},"content":" /**","lastModifiedDate":"2023-10-04"},{"lineNumber":12,"author":{"gitId":"spinoandraptos"},"content":" * Creates a new unmark command for a task of specified index.","lastModifiedDate":"2023-10-04"},{"lineNumber":13,"author":{"gitId":"spinoandraptos"},"content":" *","lastModifiedDate":"2023-10-04"},{"lineNumber":14,"author":{"gitId":"spinoandraptos"},"content":" * @param taskIndex Index of the task to be unmarked.","lastModifiedDate":"2023-10-04"},{"lineNumber":15,"author":{"gitId":"spinoandraptos"},"content":" */","lastModifiedDate":"2023-10-04"},{"lineNumber":16,"author":{"gitId":"spinoandraptos"},"content":" public CommandUnmark(int taskIndex){","lastModifiedDate":"2023-10-04"},{"lineNumber":17,"author":{"gitId":"spinoandraptos"},"content":" super(CommandType.UNMARK);","lastModifiedDate":"2023-10-04"},{"lineNumber":18,"author":{"gitId":"spinoandraptos"},"content":" this.taskIndex \u003d taskIndex;","lastModifiedDate":"2023-10-04"},{"lineNumber":19,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":20,"author":{"gitId":"spinoandraptos"},"content":" /**","lastModifiedDate":"2023-10-04"},{"lineNumber":21,"author":{"gitId":"spinoandraptos"},"content":" * Checks if specified task exists.","lastModifiedDate":"2023-10-04"},{"lineNumber":22,"author":{"gitId":"spinoandraptos"},"content":" * Marks the specified task as not done and updates storage data.","lastModifiedDate":"2023-10-04"},{"lineNumber":23,"author":{"gitId":"spinoandraptos"},"content":" *","lastModifiedDate":"2023-10-04"},{"lineNumber":24,"author":{"gitId":"spinoandraptos"},"content":" * @param ui User interface for interactions with user through CLI.","lastModifiedDate":"2023-10-04"},{"lineNumber":25,"author":{"gitId":"spinoandraptos"},"content":" * @param tasks Current task list in the program.","lastModifiedDate":"2023-10-04"},{"lineNumber":26,"author":{"gitId":"spinoandraptos"},"content":" * @param dataStorage Hard disk storage for storing task data.","lastModifiedDate":"2023-10-04"},{"lineNumber":27,"author":{"gitId":"spinoandraptos"},"content":" */","lastModifiedDate":"2023-10-04"},{"lineNumber":28,"author":{"gitId":"spinoandraptos"},"content":" @Override","lastModifiedDate":"2023-10-04"},{"lineNumber":29,"author":{"gitId":"spinoandraptos"},"content":" public void executeCommand(Ui ui, Storage dataStorage, TaskList tasks){","lastModifiedDate":"2023-10-04"},{"lineNumber":30,"author":{"gitId":"spinoandraptos"},"content":" String taskName \u003d tasks.viewTaskByIndex(taskIndex);","lastModifiedDate":"2023-10-04"},{"lineNumber":31,"author":{"gitId":"spinoandraptos"},"content":" if(!taskName.equals(\"Task Not Found\")) {","lastModifiedDate":"2023-10-04"},{"lineNumber":32,"author":{"gitId":"spinoandraptos"},"content":" tasks.markTaskAsNotDone(taskIndex);","lastModifiedDate":"2023-10-04"},{"lineNumber":33,"author":{"gitId":"spinoandraptos"},"content":" dataStorage.updateData(tasks);","lastModifiedDate":"2023-10-04"},{"lineNumber":34,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":35,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":36,"author":{"gitId":"spinoandraptos"},"content":"}","lastModifiedDate":"2023-10-04"}],"authorContributionMap":{"spinoandraptos":36}},{"path":"src/main/java/rene/exception/ReneExceptions.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"spinoandraptos"},"content":"package rene.exception;","lastModifiedDate":"2023-10-04"},{"lineNumber":2,"author":{"gitId":"spinoandraptos"},"content":"/**","lastModifiedDate":"2023-10-04"},{"lineNumber":3,"author":{"gitId":"spinoandraptos"},"content":" * Represents non-standard exceptions thrown by this program specifically.","lastModifiedDate":"2023-10-04"},{"lineNumber":4,"author":{"gitId":"spinoandraptos"},"content":" */","lastModifiedDate":"2023-10-04"},{"lineNumber":5,"author":{"gitId":"spinoandraptos"},"content":"public class ReneExceptions extends Exception{","lastModifiedDate":"2023-10-04"},{"lineNumber":6,"author":{"gitId":"spinoandraptos"},"content":" public ReneExceptions(String message) {","lastModifiedDate":"2023-10-04"},{"lineNumber":7,"author":{"gitId":"spinoandraptos"},"content":" super(message);","lastModifiedDate":"2023-10-04"},{"lineNumber":8,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":9,"author":{"gitId":"spinoandraptos"},"content":"}","lastModifiedDate":"2023-10-04"},{"lineNumber":10,"author":{"gitId":"spinoandraptos"},"content":"","lastModifiedDate":"2023-10-04"}],"authorContributionMap":{"spinoandraptos":10}},{"path":"src/main/java/rene/parser/Parser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"spinoandraptos"},"content":"package rene.parser;","lastModifiedDate":"2023-10-04"},{"lineNumber":2,"author":{"gitId":"spinoandraptos"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":3,"author":{"gitId":"spinoandraptos"},"content":"import rene.command.Command;","lastModifiedDate":"2023-10-04"},{"lineNumber":4,"author":{"gitId":"spinoandraptos"},"content":"import rene.command.CommandMark;","lastModifiedDate":"2023-10-04"},{"lineNumber":5,"author":{"gitId":"spinoandraptos"},"content":"import rene.command.CommandUnmark;","lastModifiedDate":"2023-10-04"},{"lineNumber":6,"author":{"gitId":"spinoandraptos"},"content":"import rene.command.CommandList;","lastModifiedDate":"2023-10-04"},{"lineNumber":7,"author":{"gitId":"spinoandraptos"},"content":"import rene.command.CommandExit;","lastModifiedDate":"2023-10-04"},{"lineNumber":8,"author":{"gitId":"spinoandraptos"},"content":"import rene.command.CommandDelete;","lastModifiedDate":"2023-10-04"},{"lineNumber":9,"author":{"gitId":"spinoandraptos"},"content":"import rene.command.CommandTodo;","lastModifiedDate":"2023-10-04"},{"lineNumber":10,"author":{"gitId":"spinoandraptos"},"content":"import rene.command.CommandDeadline;","lastModifiedDate":"2023-10-04"},{"lineNumber":11,"author":{"gitId":"spinoandraptos"},"content":"import rene.command.CommandEvent;","lastModifiedDate":"2023-10-04"},{"lineNumber":12,"author":{"gitId":"spinoandraptos"},"content":"import rene.command.CommandFind;","lastModifiedDate":"2023-10-04"},{"lineNumber":13,"author":{"gitId":"spinoandraptos"},"content":"import rene.exception.ReneExceptions;","lastModifiedDate":"2023-10-04"},{"lineNumber":14,"author":{"gitId":"spinoandraptos"},"content":"/**","lastModifiedDate":"2023-10-04"},{"lineNumber":15,"author":{"gitId":"spinoandraptos"},"content":" * Represents a parser that converts user inputs into command objects.","lastModifiedDate":"2023-10-04"},{"lineNumber":16,"author":{"gitId":"spinoandraptos"},"content":" */","lastModifiedDate":"2023-10-04"},{"lineNumber":17,"author":{"gitId":"spinoandraptos"},"content":"public class Parser {","lastModifiedDate":"2023-10-04"},{"lineNumber":18,"author":{"gitId":"spinoandraptos"},"content":" /**","lastModifiedDate":"2023-10-04"},{"lineNumber":19,"author":{"gitId":"spinoandraptos"},"content":" * Analyses and extracts relevant information from user input","lastModifiedDate":"2023-10-04"},{"lineNumber":20,"author":{"gitId":"spinoandraptos"},"content":" * to create a new Command object of the right type.","lastModifiedDate":"2023-10-04"},{"lineNumber":21,"author":{"gitId":"spinoandraptos"},"content":" *","lastModifiedDate":"2023-10-04"},{"lineNumber":22,"author":{"gitId":"spinoandraptos"},"content":" * @param userInput The full user CLI input.","lastModifiedDate":"2023-10-04"},{"lineNumber":23,"author":{"gitId":"spinoandraptos"},"content":" */","lastModifiedDate":"2023-10-04"},{"lineNumber":24,"author":{"gitId":"spinoandraptos"},"content":" public Command parseCommand(String userInput) {","lastModifiedDate":"2023-10-04"},{"lineNumber":25,"author":{"gitId":"spinoandraptos"},"content":" String commandTitle \u003d userInput.split(\" \")[0];","lastModifiedDate":"2023-10-04"},{"lineNumber":26,"author":{"gitId":"spinoandraptos"},"content":" String commandDetails;","lastModifiedDate":"2023-10-04"},{"lineNumber":27,"author":{"gitId":"spinoandraptos"},"content":" int taskIndex;","lastModifiedDate":"2023-10-04"},{"lineNumber":28,"author":{"gitId":"spinoandraptos"},"content":" try {","lastModifiedDate":"2023-10-04"},{"lineNumber":29,"author":{"gitId":"spinoandraptos"},"content":" switch (commandTitle) {","lastModifiedDate":"2023-10-04"},{"lineNumber":30,"author":{"gitId":"spinoandraptos"},"content":" case \"bye\":","lastModifiedDate":"2023-10-04"},{"lineNumber":31,"author":{"gitId":"spinoandraptos"},"content":" return new CommandExit();","lastModifiedDate":"2023-10-04"},{"lineNumber":32,"author":{"gitId":"spinoandraptos"},"content":" case \"list\":","lastModifiedDate":"2023-10-04"},{"lineNumber":33,"author":{"gitId":"spinoandraptos"},"content":" return new CommandList();","lastModifiedDate":"2023-10-04"},{"lineNumber":34,"author":{"gitId":"spinoandraptos"},"content":" case \"mark\":","lastModifiedDate":"2023-10-04"},{"lineNumber":35,"author":{"gitId":"spinoandraptos"},"content":" commandDetails \u003d userInput.split(\" \")[1];","lastModifiedDate":"2023-10-04"},{"lineNumber":36,"author":{"gitId":"spinoandraptos"},"content":" taskIndex \u003d Integer.parseInt(commandDetails.strip());","lastModifiedDate":"2023-10-04"},{"lineNumber":37,"author":{"gitId":"spinoandraptos"},"content":" return new CommandMark(taskIndex);","lastModifiedDate":"2023-10-04"},{"lineNumber":38,"author":{"gitId":"spinoandraptos"},"content":" case \"unmark\":","lastModifiedDate":"2023-10-04"},{"lineNumber":39,"author":{"gitId":"spinoandraptos"},"content":" commandDetails \u003d userInput.split(\" \")[1];","lastModifiedDate":"2023-10-04"},{"lineNumber":40,"author":{"gitId":"spinoandraptos"},"content":" taskIndex \u003d Integer.parseInt(commandDetails.strip());","lastModifiedDate":"2023-10-04"},{"lineNumber":41,"author":{"gitId":"spinoandraptos"},"content":" return new CommandUnmark(taskIndex);","lastModifiedDate":"2023-10-04"},{"lineNumber":42,"author":{"gitId":"spinoandraptos"},"content":" case \"delete\":","lastModifiedDate":"2023-10-04"},{"lineNumber":43,"author":{"gitId":"spinoandraptos"},"content":" commandDetails \u003d userInput.split(\" \")[1];","lastModifiedDate":"2023-10-04"},{"lineNumber":44,"author":{"gitId":"spinoandraptos"},"content":" taskIndex \u003d Integer.parseInt(commandDetails.strip());","lastModifiedDate":"2023-10-04"},{"lineNumber":45,"author":{"gitId":"spinoandraptos"},"content":" return new CommandDelete(taskIndex);","lastModifiedDate":"2023-10-04"},{"lineNumber":46,"author":{"gitId":"spinoandraptos"},"content":" case \"todo\":","lastModifiedDate":"2023-10-04"},{"lineNumber":47,"author":{"gitId":"spinoandraptos"},"content":" return new CommandTodo(userInput);","lastModifiedDate":"2023-10-04"},{"lineNumber":48,"author":{"gitId":"spinoandraptos"},"content":" case \"deadline\":","lastModifiedDate":"2023-10-04"},{"lineNumber":49,"author":{"gitId":"spinoandraptos"},"content":" return new CommandDeadline(userInput);","lastModifiedDate":"2023-10-04"},{"lineNumber":50,"author":{"gitId":"spinoandraptos"},"content":" case \"event\":","lastModifiedDate":"2023-10-04"},{"lineNumber":51,"author":{"gitId":"spinoandraptos"},"content":" return new CommandEvent(userInput);","lastModifiedDate":"2023-10-04"},{"lineNumber":52,"author":{"gitId":"spinoandraptos"},"content":" case \"find\":","lastModifiedDate":"2023-10-04"},{"lineNumber":53,"author":{"gitId":"spinoandraptos"},"content":" return new CommandFind(userInput);","lastModifiedDate":"2023-10-04"},{"lineNumber":54,"author":{"gitId":"spinoandraptos"},"content":" default:","lastModifiedDate":"2023-10-04"},{"lineNumber":55,"author":{"gitId":"spinoandraptos"},"content":" throw new ReneExceptions(\"Invalid Input\");","lastModifiedDate":"2023-10-04"},{"lineNumber":56,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":57,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":58,"author":{"gitId":"spinoandraptos"},"content":" catch(NumberFormatException | ArrayIndexOutOfBoundsException invalidIndex){","lastModifiedDate":"2023-10-04"},{"lineNumber":59,"author":{"gitId":"spinoandraptos"},"content":" System.out.println(\" Pwease enter valid integer index!\");","lastModifiedDate":"2023-10-04"},{"lineNumber":60,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":61,"author":{"gitId":"spinoandraptos"},"content":" catch (ReneExceptions exception){","lastModifiedDate":"2023-10-04"},{"lineNumber":62,"author":{"gitId":"spinoandraptos"},"content":" String exceptionMessage \u003d exception.getMessage();","lastModifiedDate":"2023-10-04"},{"lineNumber":63,"author":{"gitId":"spinoandraptos"},"content":" if (exceptionMessage.equals(\"Invalid Input\")) {","lastModifiedDate":"2023-10-04"},{"lineNumber":64,"author":{"gitId":"spinoandraptos"},"content":" System.out.println(\" Pwease enter a valid command :0\");","lastModifiedDate":"2023-10-04"},{"lineNumber":65,"author":{"gitId":"spinoandraptos"},"content":" System.out.println(\" Valid commands are: todo,\\n\" +","lastModifiedDate":"2023-10-04"},{"lineNumber":66,"author":{"gitId":"spinoandraptos"},"content":" \" deadline /by [time],\\n\" +","lastModifiedDate":"2023-10-04"},{"lineNumber":67,"author":{"gitId":"spinoandraptos"},"content":" \" event /from [start] /to [end],\\n\" +","lastModifiedDate":"2023-10-04"},{"lineNumber":68,"author":{"gitId":"spinoandraptos"},"content":" \" list,\\n\" +","lastModifiedDate":"2023-10-04"},{"lineNumber":69,"author":{"gitId":"spinoandraptos"},"content":" \" mark [task number],\\n\" +","lastModifiedDate":"2023-10-04"},{"lineNumber":70,"author":{"gitId":"spinoandraptos"},"content":" \" unmark [task number],\\n\" +","lastModifiedDate":"2023-10-04"},{"lineNumber":71,"author":{"gitId":"spinoandraptos"},"content":" \" delete [task number],\\n\" +","lastModifiedDate":"2023-10-04"},{"lineNumber":72,"author":{"gitId":"spinoandraptos"},"content":" \" find /description [description]\\n\" +","lastModifiedDate":"2023-10-04"},{"lineNumber":73,"author":{"gitId":"spinoandraptos"},"content":" \" find /time [time]\\n\" +","lastModifiedDate":"2023-10-04"},{"lineNumber":74,"author":{"gitId":"spinoandraptos"},"content":" \" bye\");","lastModifiedDate":"2023-10-04"},{"lineNumber":75,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":76,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":77,"author":{"gitId":"spinoandraptos"},"content":" return new Command();","lastModifiedDate":"2023-10-04"},{"lineNumber":78,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":79,"author":{"gitId":"spinoandraptos"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":80,"author":{"gitId":"spinoandraptos"},"content":"}","lastModifiedDate":"2023-10-04"}],"authorContributionMap":{"spinoandraptos":80}},{"path":"src/main/java/rene/storage/Storage.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"spinoandraptos"},"content":"package rene.storage;","lastModifiedDate":"2023-10-04"},{"lineNumber":2,"author":{"gitId":"spinoandraptos"},"content":"import rene.task.Task;","lastModifiedDate":"2023-10-04"},{"lineNumber":3,"author":{"gitId":"spinoandraptos"},"content":"import rene.tasklist.TaskList;","lastModifiedDate":"2023-10-04"},{"lineNumber":4,"author":{"gitId":"spinoandraptos"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":5,"author":{"gitId":"spinoandraptos"},"content":"import java.io.File;","lastModifiedDate":"2023-10-04"},{"lineNumber":6,"author":{"gitId":"spinoandraptos"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-10-04"},{"lineNumber":7,"author":{"gitId":"spinoandraptos"},"content":"import java.io.IOException;","lastModifiedDate":"2023-10-04"},{"lineNumber":8,"author":{"gitId":"spinoandraptos"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-10-04"},{"lineNumber":9,"author":{"gitId":"spinoandraptos"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-10-04"},{"lineNumber":10,"author":{"gitId":"spinoandraptos"},"content":"/**","lastModifiedDate":"2023-10-04"},{"lineNumber":11,"author":{"gitId":"spinoandraptos"},"content":" * Represents the hard disk storage where","lastModifiedDate":"2023-10-04"},{"lineNumber":12,"author":{"gitId":"spinoandraptos"},"content":" * task data is stored, read and updated.","lastModifiedDate":"2023-10-04"},{"lineNumber":13,"author":{"gitId":"spinoandraptos"},"content":" */","lastModifiedDate":"2023-10-04"},{"lineNumber":14,"author":{"gitId":"spinoandraptos"},"content":"public class Storage {","lastModifiedDate":"2023-10-04"},{"lineNumber":15,"author":{"gitId":"spinoandraptos"},"content":" private File dataFile;","lastModifiedDate":"2023-10-04"},{"lineNumber":16,"author":{"gitId":"spinoandraptos"},"content":" /**","lastModifiedDate":"2023-10-04"},{"lineNumber":17,"author":{"gitId":"spinoandraptos"},"content":" * Creates a new storage for storing task data.","lastModifiedDate":"2023-10-04"},{"lineNumber":18,"author":{"gitId":"spinoandraptos"},"content":" *","lastModifiedDate":"2023-10-04"},{"lineNumber":19,"author":{"gitId":"spinoandraptos"},"content":" * @param filePath The file location in hard disk where data is stored and read from.","lastModifiedDate":"2023-10-04"},{"lineNumber":20,"author":{"gitId":"spinoandraptos"},"content":" */","lastModifiedDate":"2023-10-04"},{"lineNumber":21,"author":{"gitId":"spinoandraptos"},"content":" public Storage(String filePath) {","lastModifiedDate":"2023-10-04"},{"lineNumber":22,"author":{"gitId":"spinoandraptos"},"content":" dataFile \u003d new File(filePath);","lastModifiedDate":"2023-10-04"},{"lineNumber":23,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":24,"author":{"gitId":"spinoandraptos"},"content":" /**","lastModifiedDate":"2023-10-04"},{"lineNumber":25,"author":{"gitId":"spinoandraptos"},"content":" * Write in new data to storage.","lastModifiedDate":"2023-10-04"},{"lineNumber":26,"author":{"gitId":"spinoandraptos"},"content":" *","lastModifiedDate":"2023-10-04"},{"lineNumber":27,"author":{"gitId":"spinoandraptos"},"content":" * @param filePath The file location in hard disk where data is written to.","lastModifiedDate":"2023-10-04"},{"lineNumber":28,"author":{"gitId":"spinoandraptos"},"content":" * @param textToAdd Data to be written.","lastModifiedDate":"2023-10-04"},{"lineNumber":29,"author":{"gitId":"spinoandraptos"},"content":" * @param toAppend If true, new data is added to the back of existing data instead of overwriting them.","lastModifiedDate":"2023-10-04"},{"lineNumber":30,"author":{"gitId":"spinoandraptos"},"content":" */","lastModifiedDate":"2023-10-04"},{"lineNumber":31,"author":{"gitId":"spinoandraptos"},"content":" private void writeToFile(String filePath, String textToAdd, boolean toAppend) throws IOException {","lastModifiedDate":"2023-10-04"},{"lineNumber":32,"author":{"gitId":"spinoandraptos"},"content":" FileWriter fileWriter \u003d new FileWriter(filePath, toAppend);","lastModifiedDate":"2023-10-04"},{"lineNumber":33,"author":{"gitId":"spinoandraptos"},"content":" fileWriter.write(textToAdd);","lastModifiedDate":"2023-10-04"},{"lineNumber":34,"author":{"gitId":"spinoandraptos"},"content":" fileWriter.close();","lastModifiedDate":"2023-10-04"},{"lineNumber":35,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":36,"author":{"gitId":"spinoandraptos"},"content":" /**","lastModifiedDate":"2023-10-04"},{"lineNumber":37,"author":{"gitId":"spinoandraptos"},"content":" * Build a new task list from data stored in hard disk.","lastModifiedDate":"2023-10-04"},{"lineNumber":38,"author":{"gitId":"spinoandraptos"},"content":" * Used at program start to build the current task list.","lastModifiedDate":"2023-10-04"},{"lineNumber":39,"author":{"gitId":"spinoandraptos"},"content":" *","lastModifiedDate":"2023-10-04"},{"lineNumber":40,"author":{"gitId":"spinoandraptos"},"content":" * @param tasks The task list to be built.","lastModifiedDate":"2023-10-04"},{"lineNumber":41,"author":{"gitId":"spinoandraptos"},"content":" */","lastModifiedDate":"2023-10-04"},{"lineNumber":42,"author":{"gitId":"spinoandraptos"},"content":" public void buildCurrentListFromFile(TaskList tasks){","lastModifiedDate":"2023-10-04"},{"lineNumber":43,"author":{"gitId":"spinoandraptos"},"content":" try {","lastModifiedDate":"2023-10-04"},{"lineNumber":44,"author":{"gitId":"spinoandraptos"},"content":" if (dataFile.createNewFile()) {","lastModifiedDate":"2023-10-04"},{"lineNumber":45,"author":{"gitId":"spinoandraptos"},"content":" System.out.println(\" Task-list created: \" + dataFile.getName());","lastModifiedDate":"2023-10-04"},{"lineNumber":46,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":47,"author":{"gitId":"spinoandraptos"},"content":" } catch(NullPointerException | IOException invalidFilePath){","lastModifiedDate":"2023-10-04"},{"lineNumber":48,"author":{"gitId":"spinoandraptos"},"content":" System.out.println(\" \" + invalidFilePath.getMessage());","lastModifiedDate":"2023-10-04"},{"lineNumber":49,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":50,"author":{"gitId":"spinoandraptos"},"content":" int taskIndex \u003d 0;","lastModifiedDate":"2023-10-04"},{"lineNumber":51,"author":{"gitId":"spinoandraptos"},"content":" try {","lastModifiedDate":"2023-10-04"},{"lineNumber":52,"author":{"gitId":"spinoandraptos"},"content":" Scanner fileScanner \u003d new Scanner(dataFile);","lastModifiedDate":"2023-10-04"},{"lineNumber":53,"author":{"gitId":"spinoandraptos"},"content":" if (fileScanner.hasNext()) {","lastModifiedDate":"2023-10-04"},{"lineNumber":54,"author":{"gitId":"spinoandraptos"},"content":" fileScanner.nextLine();","lastModifiedDate":"2023-10-04"},{"lineNumber":55,"author":{"gitId":"spinoandraptos"},"content":" while (fileScanner.hasNext()) {","lastModifiedDate":"2023-10-04"},{"lineNumber":56,"author":{"gitId":"spinoandraptos"},"content":" taskIndex++;","lastModifiedDate":"2023-10-04"},{"lineNumber":57,"author":{"gitId":"spinoandraptos"},"content":" String nextTask \u003d fileScanner.nextLine();","lastModifiedDate":"2023-10-04"},{"lineNumber":58,"author":{"gitId":"spinoandraptos"},"content":" String[] taskSubStrings \u003d nextTask.split(\"\\\\|\");","lastModifiedDate":"2023-10-04"},{"lineNumber":59,"author":{"gitId":"spinoandraptos"},"content":" String taskType \u003d taskSubStrings[0].strip();","lastModifiedDate":"2023-10-04"},{"lineNumber":60,"author":{"gitId":"spinoandraptos"},"content":" String taskDoneStatus \u003d taskSubStrings[1].strip();","lastModifiedDate":"2023-10-04"},{"lineNumber":61,"author":{"gitId":"spinoandraptos"},"content":" String taskDescription \u003d taskSubStrings[2].strip();","lastModifiedDate":"2023-10-04"},{"lineNumber":62,"author":{"gitId":"spinoandraptos"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":63,"author":{"gitId":"spinoandraptos"},"content":" switch (taskType) {","lastModifiedDate":"2023-10-04"},{"lineNumber":64,"author":{"gitId":"spinoandraptos"},"content":" case \"T\": tasks.addToTaskList(\"todo \" + taskDescription,","lastModifiedDate":"2023-10-04"},{"lineNumber":65,"author":{"gitId":"spinoandraptos"},"content":" Task.TaskType.TODO, false);","lastModifiedDate":"2023-10-04"},{"lineNumber":66,"author":{"gitId":"spinoandraptos"},"content":" if (taskDoneStatus.equals(\"done\")) {","lastModifiedDate":"2023-10-04"},{"lineNumber":67,"author":{"gitId":"spinoandraptos"},"content":" tasks.markTaskAsDone(taskIndex, false);","lastModifiedDate":"2023-10-04"},{"lineNumber":68,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":69,"author":{"gitId":"spinoandraptos"},"content":" break;","lastModifiedDate":"2023-10-04"},{"lineNumber":70,"author":{"gitId":"spinoandraptos"},"content":" case \"D\":","lastModifiedDate":"2023-10-04"},{"lineNumber":71,"author":{"gitId":"spinoandraptos"},"content":" String dueTime \u003d taskSubStrings[3].replace(\"(by:\", \"\")","lastModifiedDate":"2023-10-04"},{"lineNumber":72,"author":{"gitId":"spinoandraptos"},"content":" .replace(\")\", \"\").strip();","lastModifiedDate":"2023-10-04"},{"lineNumber":73,"author":{"gitId":"spinoandraptos"},"content":" tasks.addToTaskList(\"deadline \" + taskDescription + \" /by \" + dueTime,","lastModifiedDate":"2023-10-04"},{"lineNumber":74,"author":{"gitId":"spinoandraptos"},"content":" Task.TaskType.DEADLINE, false);","lastModifiedDate":"2023-10-04"},{"lineNumber":75,"author":{"gitId":"spinoandraptos"},"content":" if (taskDoneStatus.equals(\"done\")) {","lastModifiedDate":"2023-10-04"},{"lineNumber":76,"author":{"gitId":"spinoandraptos"},"content":" tasks.markTaskAsDone(taskIndex, false);","lastModifiedDate":"2023-10-04"},{"lineNumber":77,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":78,"author":{"gitId":"spinoandraptos"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":79,"author":{"gitId":"spinoandraptos"},"content":" break;","lastModifiedDate":"2023-10-04"},{"lineNumber":80,"author":{"gitId":"spinoandraptos"},"content":" case \"E\":","lastModifiedDate":"2023-10-04"},{"lineNumber":81,"author":{"gitId":"spinoandraptos"},"content":" String[] taskTimings \u003d taskSubStrings[3].strip().split(\"\\\\(from:\")[1]","lastModifiedDate":"2023-10-04"},{"lineNumber":82,"author":{"gitId":"spinoandraptos"},"content":" .split(\"to:\");","lastModifiedDate":"2023-10-04"},{"lineNumber":83,"author":{"gitId":"spinoandraptos"},"content":" String startTime \u003d taskTimings[0];","lastModifiedDate":"2023-10-04"},{"lineNumber":84,"author":{"gitId":"spinoandraptos"},"content":" String endTime \u003d taskTimings[1].split(\"\\\\)\")[0];","lastModifiedDate":"2023-10-04"},{"lineNumber":85,"author":{"gitId":"spinoandraptos"},"content":" tasks.addToTaskList(\"event \" + taskDescription + \" /from \" + startTime","lastModifiedDate":"2023-10-04"},{"lineNumber":86,"author":{"gitId":"spinoandraptos"},"content":" + \" /to \" + endTime, Task.TaskType.EVENT, false);","lastModifiedDate":"2023-10-04"},{"lineNumber":87,"author":{"gitId":"spinoandraptos"},"content":" if (taskDoneStatus.equals(\"done\")) {","lastModifiedDate":"2023-10-04"},{"lineNumber":88,"author":{"gitId":"spinoandraptos"},"content":" tasks.markTaskAsDone(taskIndex, false);","lastModifiedDate":"2023-10-04"},{"lineNumber":89,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":90,"author":{"gitId":"spinoandraptos"},"content":" break;","lastModifiedDate":"2023-10-04"},{"lineNumber":91,"author":{"gitId":"spinoandraptos"},"content":" default:","lastModifiedDate":"2023-10-04"},{"lineNumber":92,"author":{"gitId":"spinoandraptos"},"content":" System.out.println(nextTask);","lastModifiedDate":"2023-10-04"},{"lineNumber":93,"author":{"gitId":"spinoandraptos"},"content":" break;","lastModifiedDate":"2023-10-04"},{"lineNumber":94,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":95,"author":{"gitId":"spinoandraptos"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":96,"author":{"gitId":"spinoandraptos"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":97,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":98,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":99,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":100,"author":{"gitId":"spinoandraptos"},"content":" catch(NullPointerException | IOException invalidFilePath){","lastModifiedDate":"2023-10-04"},{"lineNumber":101,"author":{"gitId":"spinoandraptos"},"content":" System.out.println(\" \" + invalidFilePath.getMessage());","lastModifiedDate":"2023-10-04"},{"lineNumber":102,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":103,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":104,"author":{"gitId":"spinoandraptos"},"content":" /**","lastModifiedDate":"2023-10-04"},{"lineNumber":105,"author":{"gitId":"spinoandraptos"},"content":" * Build a new task list from data stored in hard disk.","lastModifiedDate":"2023-10-04"},{"lineNumber":106,"author":{"gitId":"spinoandraptos"},"content":" * Prints out the tasks in the list in CLI.","lastModifiedDate":"2023-10-04"},{"lineNumber":107,"author":{"gitId":"spinoandraptos"},"content":" *","lastModifiedDate":"2023-10-04"},{"lineNumber":108,"author":{"gitId":"spinoandraptos"},"content":" * @param tasks The task list that has been built.","lastModifiedDate":"2023-10-04"},{"lineNumber":109,"author":{"gitId":"spinoandraptos"},"content":" */","lastModifiedDate":"2023-10-04"},{"lineNumber":110,"author":{"gitId":"spinoandraptos"},"content":" public void loadData(TaskList tasks) {","lastModifiedDate":"2023-10-04"},{"lineNumber":111,"author":{"gitId":"spinoandraptos"},"content":" buildCurrentListFromFile(tasks);","lastModifiedDate":"2023-10-04"},{"lineNumber":112,"author":{"gitId":"spinoandraptos"},"content":" if (tasks.getTaskListSize() \u003e 0) {","lastModifiedDate":"2023-10-04"},{"lineNumber":113,"author":{"gitId":"spinoandraptos"},"content":" System.out.println(\" You currently have the following tasks uWu\");","lastModifiedDate":"2023-10-04"},{"lineNumber":114,"author":{"gitId":"spinoandraptos"},"content":" tasks.printTaskList();","lastModifiedDate":"2023-10-04"},{"lineNumber":115,"author":{"gitId":"spinoandraptos"},"content":" } else {","lastModifiedDate":"2023-10-04"},{"lineNumber":116,"author":{"gitId":"spinoandraptos"},"content":" System.out.println(\" You currently have no saved tasks uWu\");","lastModifiedDate":"2023-10-04"},{"lineNumber":117,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":118,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":119,"author":{"gitId":"spinoandraptos"},"content":" /**","lastModifiedDate":"2023-10-04"},{"lineNumber":120,"author":{"gitId":"spinoandraptos"},"content":" * Overwrites all existing data in storage with","lastModifiedDate":"2023-10-04"},{"lineNumber":121,"author":{"gitId":"spinoandraptos"},"content":" * the current tasks in the task list.","lastModifiedDate":"2023-10-04"},{"lineNumber":122,"author":{"gitId":"spinoandraptos"},"content":" * Used after every task change and on program termination.","lastModifiedDate":"2023-10-04"},{"lineNumber":123,"author":{"gitId":"spinoandraptos"},"content":" *","lastModifiedDate":"2023-10-04"},{"lineNumber":124,"author":{"gitId":"spinoandraptos"},"content":" * @param tasks The task list to overwrite current data with.","lastModifiedDate":"2023-10-04"},{"lineNumber":125,"author":{"gitId":"spinoandraptos"},"content":" */","lastModifiedDate":"2023-10-04"},{"lineNumber":126,"author":{"gitId":"spinoandraptos"},"content":" public void updateData(TaskList tasks){","lastModifiedDate":"2023-10-04"},{"lineNumber":127,"author":{"gitId":"spinoandraptos"},"content":" try{","lastModifiedDate":"2023-10-04"},{"lineNumber":128,"author":{"gitId":"spinoandraptos"},"content":" //flush all current records","lastModifiedDate":"2023-10-04"},{"lineNumber":129,"author":{"gitId":"spinoandraptos"},"content":" writeToFile(dataFile.getPath(), \"Latest Tasks\" + System.lineSeparator(), false);","lastModifiedDate":"2023-10-04"},{"lineNumber":130,"author":{"gitId":"spinoandraptos"},"content":" ArrayList\u003cTask\u003e allTasks \u003d tasks.getAllTasks();","lastModifiedDate":"2023-10-04"},{"lineNumber":131,"author":{"gitId":"spinoandraptos"},"content":" for (Task task: allTasks) {","lastModifiedDate":"2023-10-04"},{"lineNumber":132,"author":{"gitId":"spinoandraptos"},"content":" switch (task.getTaskType()) {","lastModifiedDate":"2023-10-04"},{"lineNumber":133,"author":{"gitId":"spinoandraptos"},"content":" case TODO:","lastModifiedDate":"2023-10-04"},{"lineNumber":134,"author":{"gitId":"spinoandraptos"},"content":" if (task.taskIsDone()) {","lastModifiedDate":"2023-10-04"},{"lineNumber":135,"author":{"gitId":"spinoandraptos"},"content":" writeToFile(dataFile.getPath(), \"T | done | \" + task.getTaskDescription()","lastModifiedDate":"2023-10-04"},{"lineNumber":136,"author":{"gitId":"spinoandraptos"},"content":" + System.lineSeparator(), true);","lastModifiedDate":"2023-10-04"},{"lineNumber":137,"author":{"gitId":"spinoandraptos"},"content":" } else {","lastModifiedDate":"2023-10-04"},{"lineNumber":138,"author":{"gitId":"spinoandraptos"},"content":" writeToFile(dataFile.getPath(), \"T | undone | \" + task.getTaskDescription()","lastModifiedDate":"2023-10-04"},{"lineNumber":139,"author":{"gitId":"spinoandraptos"},"content":" + System.lineSeparator(), true);","lastModifiedDate":"2023-10-04"},{"lineNumber":140,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":141,"author":{"gitId":"spinoandraptos"},"content":" break;","lastModifiedDate":"2023-10-04"},{"lineNumber":142,"author":{"gitId":"spinoandraptos"},"content":" case DEADLINE:","lastModifiedDate":"2023-10-04"},{"lineNumber":143,"author":{"gitId":"spinoandraptos"},"content":" if (task.taskIsDone()) {","lastModifiedDate":"2023-10-04"},{"lineNumber":144,"author":{"gitId":"spinoandraptos"},"content":" writeToFile(dataFile.getPath(), \"D | done | \" + task.getTaskDescription()","lastModifiedDate":"2023-10-04"},{"lineNumber":145,"author":{"gitId":"spinoandraptos"},"content":" + \" | \" + task.getTaskTiming(true)","lastModifiedDate":"2023-10-04"},{"lineNumber":146,"author":{"gitId":"spinoandraptos"},"content":" + System.lineSeparator(), true);","lastModifiedDate":"2023-10-04"},{"lineNumber":147,"author":{"gitId":"spinoandraptos"},"content":" } else {","lastModifiedDate":"2023-10-04"},{"lineNumber":148,"author":{"gitId":"spinoandraptos"},"content":" writeToFile(dataFile.getPath(), \"D | undone | \" + task.getTaskDescription()","lastModifiedDate":"2023-10-04"},{"lineNumber":149,"author":{"gitId":"spinoandraptos"},"content":" + \" | \" + task.getTaskTiming(true)","lastModifiedDate":"2023-10-04"},{"lineNumber":150,"author":{"gitId":"spinoandraptos"},"content":" + System.lineSeparator(), true);","lastModifiedDate":"2023-10-04"},{"lineNumber":151,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":152,"author":{"gitId":"spinoandraptos"},"content":" break;","lastModifiedDate":"2023-10-04"},{"lineNumber":153,"author":{"gitId":"spinoandraptos"},"content":" case EVENT:","lastModifiedDate":"2023-10-04"},{"lineNumber":154,"author":{"gitId":"spinoandraptos"},"content":" if (task.taskIsDone()) {","lastModifiedDate":"2023-10-04"},{"lineNumber":155,"author":{"gitId":"spinoandraptos"},"content":" writeToFile(dataFile.getPath(), \"E | done | \" + task.getTaskDescription()","lastModifiedDate":"2023-10-04"},{"lineNumber":156,"author":{"gitId":"spinoandraptos"},"content":" + \" | \" + task.getTaskTiming(true)","lastModifiedDate":"2023-10-04"},{"lineNumber":157,"author":{"gitId":"spinoandraptos"},"content":" + System.lineSeparator(), true);","lastModifiedDate":"2023-10-04"},{"lineNumber":158,"author":{"gitId":"spinoandraptos"},"content":" } else {","lastModifiedDate":"2023-10-04"},{"lineNumber":159,"author":{"gitId":"spinoandraptos"},"content":" writeToFile(dataFile.getPath(), \"E | undone | \" + task.getTaskDescription()","lastModifiedDate":"2023-10-04"},{"lineNumber":160,"author":{"gitId":"spinoandraptos"},"content":" + \" | \" + task.getTaskTiming(true)","lastModifiedDate":"2023-10-04"},{"lineNumber":161,"author":{"gitId":"spinoandraptos"},"content":" + System.lineSeparator(), true);","lastModifiedDate":"2023-10-04"},{"lineNumber":162,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":163,"author":{"gitId":"spinoandraptos"},"content":" break;","lastModifiedDate":"2023-10-04"},{"lineNumber":164,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":165,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":166,"author":{"gitId":"spinoandraptos"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":167,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":168,"author":{"gitId":"spinoandraptos"},"content":" catch(NullPointerException | IOException invalidFilePath){","lastModifiedDate":"2023-10-04"},{"lineNumber":169,"author":{"gitId":"spinoandraptos"},"content":" System.out.println(\" \" + invalidFilePath.getMessage());","lastModifiedDate":"2023-10-04"},{"lineNumber":170,"author":{"gitId":"spinoandraptos"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2023-10-04"},{"lineNumber":171,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":172,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":173,"author":{"gitId":"spinoandraptos"},"content":"}","lastModifiedDate":"2023-10-04"}],"authorContributionMap":{"spinoandraptos":173}},{"path":"src/main/java/rene/task/Deadline.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"spinoandraptos"},"content":"package rene.task;","lastModifiedDate":"2023-10-04"},{"lineNumber":2,"author":{"gitId":"spinoandraptos"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":3,"author":{"gitId":"spinoandraptos"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-10-04"},{"lineNumber":4,"author":{"gitId":"spinoandraptos"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-10-04"},{"lineNumber":5,"author":{"gitId":"spinoandraptos"},"content":"/**","lastModifiedDate":"2023-10-04"},{"lineNumber":6,"author":{"gitId":"spinoandraptos"},"content":" * Represents deadline tasks in the current task list","lastModifiedDate":"2023-10-04"},{"lineNumber":7,"author":{"gitId":"spinoandraptos"},"content":" */","lastModifiedDate":"2023-10-04"},{"lineNumber":8,"author":{"gitId":"spinoandraptos"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-10-04"},{"lineNumber":9,"author":{"gitId":"spinoandraptos"},"content":" private LocalDateTime dueTime;","lastModifiedDate":"2023-10-04"},{"lineNumber":10,"author":{"gitId":"spinoandraptos"},"content":" /**","lastModifiedDate":"2023-10-04"},{"lineNumber":11,"author":{"gitId":"spinoandraptos"},"content":" * Creates a new task of type deadline.","lastModifiedDate":"2023-10-04"},{"lineNumber":12,"author":{"gitId":"spinoandraptos"},"content":" *","lastModifiedDate":"2023-10-04"},{"lineNumber":13,"author":{"gitId":"spinoandraptos"},"content":" * @param description Task description.","lastModifiedDate":"2023-10-04"},{"lineNumber":14,"author":{"gitId":"spinoandraptos"},"content":" * @param dueTime The deadline of the task.","lastModifiedDate":"2023-10-04"},{"lineNumber":15,"author":{"gitId":"spinoandraptos"},"content":" */","lastModifiedDate":"2023-10-04"},{"lineNumber":16,"author":{"gitId":"spinoandraptos"},"content":" public Deadline(String description, LocalDateTime dueTime){","lastModifiedDate":"2023-10-04"},{"lineNumber":17,"author":{"gitId":"spinoandraptos"},"content":" super(description, TaskType.DEADLINE);","lastModifiedDate":"2023-10-04"},{"lineNumber":18,"author":{"gitId":"spinoandraptos"},"content":" this.dueTime \u003d dueTime;","lastModifiedDate":"2023-10-04"},{"lineNumber":19,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":20,"author":{"gitId":"spinoandraptos"},"content":" /**","lastModifiedDate":"2023-10-04"},{"lineNumber":21,"author":{"gitId":"spinoandraptos"},"content":" * Returns the due time of the deadline","lastModifiedDate":"2023-10-04"},{"lineNumber":22,"author":{"gitId":"spinoandraptos"},"content":" * in a specially formatted style.","lastModifiedDate":"2023-10-04"},{"lineNumber":23,"author":{"gitId":"spinoandraptos"},"content":" *","lastModifiedDate":"2023-10-04"},{"lineNumber":24,"author":{"gitId":"spinoandraptos"},"content":" * @param useDefaultTiming If true, uses the default","lastModifiedDate":"2023-10-04"},{"lineNumber":25,"author":{"gitId":"spinoandraptos"},"content":" * date time format (dd-MM-yyyy HH:mm)","lastModifiedDate":"2023-10-04"},{"lineNumber":26,"author":{"gitId":"spinoandraptos"},"content":" * used to store date time data in the","lastModifiedDate":"2023-10-04"},{"lineNumber":27,"author":{"gitId":"spinoandraptos"},"content":" * hard disk. Else, uses the date time format","lastModifiedDate":"2023-10-04"},{"lineNumber":28,"author":{"gitId":"spinoandraptos"},"content":" * (E, MMM dd, yyyy hh a).","lastModifiedDate":"2023-10-04"},{"lineNumber":29,"author":{"gitId":"spinoandraptos"},"content":" */","lastModifiedDate":"2023-10-04"},{"lineNumber":30,"author":{"gitId":"spinoandraptos"},"content":" @Override","lastModifiedDate":"2023-10-04"},{"lineNumber":31,"author":{"gitId":"spinoandraptos"},"content":" public String getTaskTiming(boolean useDefaultTiming) {","lastModifiedDate":"2023-10-04"},{"lineNumber":32,"author":{"gitId":"spinoandraptos"},"content":" String deadlineTiming;","lastModifiedDate":"2023-10-04"},{"lineNumber":33,"author":{"gitId":"spinoandraptos"},"content":" if(useDefaultTiming){","lastModifiedDate":"2023-10-04"},{"lineNumber":34,"author":{"gitId":"spinoandraptos"},"content":" deadlineTiming \u003d dueTime.format(DateTimeFormatter.ofPattern(\"dd-MM-yyyy HH:mm\"));","lastModifiedDate":"2023-10-04"},{"lineNumber":35,"author":{"gitId":"spinoandraptos"},"content":" } else {","lastModifiedDate":"2023-10-04"},{"lineNumber":36,"author":{"gitId":"spinoandraptos"},"content":" deadlineTiming \u003d dueTime.format(DateTimeFormatter.ofPattern(\"E, MMM dd yyyy HH:mm\"));","lastModifiedDate":"2023-10-04"},{"lineNumber":37,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":38,"author":{"gitId":"spinoandraptos"},"content":" return \"(by: \" + deadlineTiming + \")\";","lastModifiedDate":"2023-10-04"},{"lineNumber":39,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":40,"author":{"gitId":"spinoandraptos"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":41,"author":{"gitId":"spinoandraptos"},"content":"}","lastModifiedDate":"2023-10-04"}],"authorContributionMap":{"spinoandraptos":41}},{"path":"src/main/java/rene/task/Event.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"spinoandraptos"},"content":"package rene.task;","lastModifiedDate":"2023-10-04"},{"lineNumber":2,"author":{"gitId":"spinoandraptos"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":3,"author":{"gitId":"spinoandraptos"},"content":"import java.time.LocalDateTime ;","lastModifiedDate":"2023-10-04"},{"lineNumber":4,"author":{"gitId":"spinoandraptos"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-10-04"},{"lineNumber":5,"author":{"gitId":"spinoandraptos"},"content":"/**","lastModifiedDate":"2023-10-04"},{"lineNumber":6,"author":{"gitId":"spinoandraptos"},"content":" * Represents event tasks in the current task list","lastModifiedDate":"2023-10-04"},{"lineNumber":7,"author":{"gitId":"spinoandraptos"},"content":" */","lastModifiedDate":"2023-10-04"},{"lineNumber":8,"author":{"gitId":"spinoandraptos"},"content":"public class Event extends Task{","lastModifiedDate":"2023-10-04"},{"lineNumber":9,"author":{"gitId":"spinoandraptos"},"content":" private LocalDateTime startTime;","lastModifiedDate":"2023-10-04"},{"lineNumber":10,"author":{"gitId":"spinoandraptos"},"content":" private LocalDateTime endTime;","lastModifiedDate":"2023-10-04"},{"lineNumber":11,"author":{"gitId":"spinoandraptos"},"content":" /**","lastModifiedDate":"2023-10-04"},{"lineNumber":12,"author":{"gitId":"spinoandraptos"},"content":" * Creates a new task of type event.","lastModifiedDate":"2023-10-04"},{"lineNumber":13,"author":{"gitId":"spinoandraptos"},"content":" *","lastModifiedDate":"2023-10-04"},{"lineNumber":14,"author":{"gitId":"spinoandraptos"},"content":" * @param description Task description.","lastModifiedDate":"2023-10-04"},{"lineNumber":15,"author":{"gitId":"spinoandraptos"},"content":" * @param startTime The starting time of event.","lastModifiedDate":"2023-10-04"},{"lineNumber":16,"author":{"gitId":"spinoandraptos"},"content":" * @param endTime The ending time of event.","lastModifiedDate":"2023-10-04"},{"lineNumber":17,"author":{"gitId":"spinoandraptos"},"content":" */","lastModifiedDate":"2023-10-04"},{"lineNumber":18,"author":{"gitId":"spinoandraptos"},"content":" public Event(String description, LocalDateTime startTime, LocalDateTime endTime){","lastModifiedDate":"2023-10-04"},{"lineNumber":19,"author":{"gitId":"spinoandraptos"},"content":" super(description, TaskType.EVENT);","lastModifiedDate":"2023-10-04"},{"lineNumber":20,"author":{"gitId":"spinoandraptos"},"content":" this.startTime \u003d startTime;","lastModifiedDate":"2023-10-04"},{"lineNumber":21,"author":{"gitId":"spinoandraptos"},"content":" this.endTime \u003d endTime;","lastModifiedDate":"2023-10-04"},{"lineNumber":22,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":23,"author":{"gitId":"spinoandraptos"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":24,"author":{"gitId":"spinoandraptos"},"content":" /**","lastModifiedDate":"2023-10-04"},{"lineNumber":25,"author":{"gitId":"spinoandraptos"},"content":" * Returns the start and end time of the event","lastModifiedDate":"2023-10-04"},{"lineNumber":26,"author":{"gitId":"spinoandraptos"},"content":" * in a specially formatted style.","lastModifiedDate":"2023-10-04"},{"lineNumber":27,"author":{"gitId":"spinoandraptos"},"content":" *","lastModifiedDate":"2023-10-04"},{"lineNumber":28,"author":{"gitId":"spinoandraptos"},"content":" * @param useDefaultTiming If true, uses the default","lastModifiedDate":"2023-10-04"},{"lineNumber":29,"author":{"gitId":"spinoandraptos"},"content":" * date time format (dd-MM-yyyy HH:mm)","lastModifiedDate":"2023-10-04"},{"lineNumber":30,"author":{"gitId":"spinoandraptos"},"content":" * used to store date time data in the","lastModifiedDate":"2023-10-04"},{"lineNumber":31,"author":{"gitId":"spinoandraptos"},"content":" * hard disk. Else, uses the date time format","lastModifiedDate":"2023-10-04"},{"lineNumber":32,"author":{"gitId":"spinoandraptos"},"content":" * (E, MMM dd, yyyy hh a).","lastModifiedDate":"2023-10-04"},{"lineNumber":33,"author":{"gitId":"spinoandraptos"},"content":" */","lastModifiedDate":"2023-10-04"},{"lineNumber":34,"author":{"gitId":"spinoandraptos"},"content":" @Override","lastModifiedDate":"2023-10-04"},{"lineNumber":35,"author":{"gitId":"spinoandraptos"},"content":" public String getTaskTiming(boolean useDefaultTiming) {","lastModifiedDate":"2023-10-04"},{"lineNumber":36,"author":{"gitId":"spinoandraptos"},"content":" String startTiming;","lastModifiedDate":"2023-10-04"},{"lineNumber":37,"author":{"gitId":"spinoandraptos"},"content":" String endTiming;","lastModifiedDate":"2023-10-04"},{"lineNumber":38,"author":{"gitId":"spinoandraptos"},"content":" if(useDefaultTiming){","lastModifiedDate":"2023-10-04"},{"lineNumber":39,"author":{"gitId":"spinoandraptos"},"content":" startTiming \u003d startTime.format(DateTimeFormatter.ofPattern(\"dd-MM-yyyy HH:mm\"));","lastModifiedDate":"2023-10-04"},{"lineNumber":40,"author":{"gitId":"spinoandraptos"},"content":" endTiming \u003d endTime.format(DateTimeFormatter.ofPattern(\"dd-MM-yyyy HH:mm\"));","lastModifiedDate":"2023-10-04"},{"lineNumber":41,"author":{"gitId":"spinoandraptos"},"content":" } else {","lastModifiedDate":"2023-10-04"},{"lineNumber":42,"author":{"gitId":"spinoandraptos"},"content":" startTiming \u003d startTime.format(DateTimeFormatter.ofPattern(\"E, MMM dd, yyyy hh a\"));","lastModifiedDate":"2023-10-04"},{"lineNumber":43,"author":{"gitId":"spinoandraptos"},"content":" endTiming \u003d endTime.format(DateTimeFormatter.ofPattern(\"E, MMM dd, yyyy hh a\"));","lastModifiedDate":"2023-10-04"},{"lineNumber":44,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":45,"author":{"gitId":"spinoandraptos"},"content":" return \"(from: \" + startTiming + \" to: \" + endTiming + \")\";","lastModifiedDate":"2023-10-04"},{"lineNumber":46,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":47,"author":{"gitId":"spinoandraptos"},"content":"}","lastModifiedDate":"2023-10-04"}],"authorContributionMap":{"spinoandraptos":47}},{"path":"src/main/java/rene/task/Task.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"spinoandraptos"},"content":"package rene.task;","lastModifiedDate":"2023-10-04"},{"lineNumber":2,"author":{"gitId":"spinoandraptos"},"content":"/**","lastModifiedDate":"2023-10-04"},{"lineNumber":3,"author":{"gitId":"spinoandraptos"},"content":" * Represents all tasks in the task list in general.","lastModifiedDate":"2023-10-04"},{"lineNumber":4,"author":{"gitId":"spinoandraptos"},"content":" */","lastModifiedDate":"2023-10-04"},{"lineNumber":5,"author":{"gitId":"spinoandraptos"},"content":"public class Task {","lastModifiedDate":"2023-10-04"},{"lineNumber":6,"author":{"gitId":"spinoandraptos"},"content":" public enum TaskType {TODO, EVENT, DEADLINE, DEFAULT};","lastModifiedDate":"2023-10-04"},{"lineNumber":7,"author":{"gitId":"spinoandraptos"},"content":" private TaskType taskType;","lastModifiedDate":"2023-10-04"},{"lineNumber":8,"author":{"gitId":"spinoandraptos"},"content":" private String description;","lastModifiedDate":"2023-10-04"},{"lineNumber":9,"author":{"gitId":"spinoandraptos"},"content":" private boolean done;","lastModifiedDate":"2023-10-04"},{"lineNumber":10,"author":{"gitId":"spinoandraptos"},"content":" /**","lastModifiedDate":"2023-10-04"},{"lineNumber":11,"author":{"gitId":"spinoandraptos"},"content":" * Mark a task as done.","lastModifiedDate":"2023-10-04"},{"lineNumber":12,"author":{"gitId":"spinoandraptos"},"content":" */","lastModifiedDate":"2023-10-04"},{"lineNumber":13,"author":{"gitId":"spinoandraptos"},"content":" public void markAsDone(){","lastModifiedDate":"2023-10-04"},{"lineNumber":14,"author":{"gitId":"spinoandraptos"},"content":" done \u003d true;","lastModifiedDate":"2023-10-04"},{"lineNumber":15,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":16,"author":{"gitId":"spinoandraptos"},"content":" /**","lastModifiedDate":"2023-10-04"},{"lineNumber":17,"author":{"gitId":"spinoandraptos"},"content":" * Mark a task as not done.","lastModifiedDate":"2023-10-04"},{"lineNumber":18,"author":{"gitId":"spinoandraptos"},"content":" */","lastModifiedDate":"2023-10-04"},{"lineNumber":19,"author":{"gitId":"spinoandraptos"},"content":" public void markAsNotDone(){","lastModifiedDate":"2023-10-04"},{"lineNumber":20,"author":{"gitId":"spinoandraptos"},"content":" done \u003d false;","lastModifiedDate":"2023-10-04"},{"lineNumber":21,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":22,"author":{"gitId":"spinoandraptos"},"content":" /**","lastModifiedDate":"2023-10-04"},{"lineNumber":23,"author":{"gitId":"spinoandraptos"},"content":" * Creates a new task with a blank description,","lastModifiedDate":"2023-10-04"},{"lineNumber":24,"author":{"gitId":"spinoandraptos"},"content":" * not done status and default task type.","lastModifiedDate":"2023-10-04"},{"lineNumber":25,"author":{"gitId":"spinoandraptos"},"content":" */","lastModifiedDate":"2023-10-04"},{"lineNumber":26,"author":{"gitId":"spinoandraptos"},"content":" public Task(){","lastModifiedDate":"2023-10-04"},{"lineNumber":27,"author":{"gitId":"spinoandraptos"},"content":" description \u003d \"\";","lastModifiedDate":"2023-10-04"},{"lineNumber":28,"author":{"gitId":"spinoandraptos"},"content":" done \u003d false;","lastModifiedDate":"2023-10-04"},{"lineNumber":29,"author":{"gitId":"spinoandraptos"},"content":" taskType \u003d TaskType.DEFAULT;","lastModifiedDate":"2023-10-04"},{"lineNumber":30,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":31,"author":{"gitId":"spinoandraptos"},"content":" /**","lastModifiedDate":"2023-10-04"},{"lineNumber":32,"author":{"gitId":"spinoandraptos"},"content":" * Creates a new task with a given description,","lastModifiedDate":"2023-10-04"},{"lineNumber":33,"author":{"gitId":"spinoandraptos"},"content":" * not done status and default task type.","lastModifiedDate":"2023-10-04"},{"lineNumber":34,"author":{"gitId":"spinoandraptos"},"content":" *","lastModifiedDate":"2023-10-04"},{"lineNumber":35,"author":{"gitId":"spinoandraptos"},"content":" * @param description Description given to the task.","lastModifiedDate":"2023-10-04"},{"lineNumber":36,"author":{"gitId":"spinoandraptos"},"content":" */","lastModifiedDate":"2023-10-04"},{"lineNumber":37,"author":{"gitId":"spinoandraptos"},"content":" public Task(String description){","lastModifiedDate":"2023-10-04"},{"lineNumber":38,"author":{"gitId":"spinoandraptos"},"content":" this.description \u003d description;","lastModifiedDate":"2023-10-04"},{"lineNumber":39,"author":{"gitId":"spinoandraptos"},"content":" done \u003d false;","lastModifiedDate":"2023-10-04"},{"lineNumber":40,"author":{"gitId":"spinoandraptos"},"content":" taskType \u003d TaskType.DEFAULT;","lastModifiedDate":"2023-10-04"},{"lineNumber":41,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":42,"author":{"gitId":"spinoandraptos"},"content":" /**","lastModifiedDate":"2023-10-04"},{"lineNumber":43,"author":{"gitId":"spinoandraptos"},"content":" * Creates a new task with a given description,","lastModifiedDate":"2023-10-04"},{"lineNumber":44,"author":{"gitId":"spinoandraptos"},"content":" * not done status and given task type.","lastModifiedDate":"2023-10-04"},{"lineNumber":45,"author":{"gitId":"spinoandraptos"},"content":" *","lastModifiedDate":"2023-10-04"},{"lineNumber":46,"author":{"gitId":"spinoandraptos"},"content":" * @param description Description given to the task.","lastModifiedDate":"2023-10-04"},{"lineNumber":47,"author":{"gitId":"spinoandraptos"},"content":" * @param taskType Type given to the task.","lastModifiedDate":"2023-10-04"},{"lineNumber":48,"author":{"gitId":"spinoandraptos"},"content":" */","lastModifiedDate":"2023-10-04"},{"lineNumber":49,"author":{"gitId":"spinoandraptos"},"content":" public Task(String description, TaskType taskType){","lastModifiedDate":"2023-10-04"},{"lineNumber":50,"author":{"gitId":"spinoandraptos"},"content":" this.description \u003d description;","lastModifiedDate":"2023-10-04"},{"lineNumber":51,"author":{"gitId":"spinoandraptos"},"content":" done \u003d false;","lastModifiedDate":"2023-10-04"},{"lineNumber":52,"author":{"gitId":"spinoandraptos"},"content":" this.taskType \u003d taskType;","lastModifiedDate":"2023-10-04"},{"lineNumber":53,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":54,"author":{"gitId":"spinoandraptos"},"content":" /**","lastModifiedDate":"2023-10-04"},{"lineNumber":55,"author":{"gitId":"spinoandraptos"},"content":" * Checks if a task has been done.","lastModifiedDate":"2023-10-04"},{"lineNumber":56,"author":{"gitId":"spinoandraptos"},"content":" */","lastModifiedDate":"2023-10-04"},{"lineNumber":57,"author":{"gitId":"spinoandraptos"},"content":" public boolean taskIsDone(){","lastModifiedDate":"2023-10-04"},{"lineNumber":58,"author":{"gitId":"spinoandraptos"},"content":" return done;","lastModifiedDate":"2023-10-04"},{"lineNumber":59,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":60,"author":{"gitId":"spinoandraptos"},"content":" /**","lastModifiedDate":"2023-10-04"},{"lineNumber":61,"author":{"gitId":"spinoandraptos"},"content":" * Returns task description.","lastModifiedDate":"2023-10-04"},{"lineNumber":62,"author":{"gitId":"spinoandraptos"},"content":" */","lastModifiedDate":"2023-10-04"},{"lineNumber":63,"author":{"gitId":"spinoandraptos"},"content":" public String getTaskDescription(){","lastModifiedDate":"2023-10-04"},{"lineNumber":64,"author":{"gitId":"spinoandraptos"},"content":" return description;","lastModifiedDate":"2023-10-04"},{"lineNumber":65,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":66,"author":{"gitId":"spinoandraptos"},"content":" /**","lastModifiedDate":"2023-10-04"},{"lineNumber":67,"author":{"gitId":"spinoandraptos"},"content":" * Returns task timing details.","lastModifiedDate":"2023-10-04"},{"lineNumber":68,"author":{"gitId":"spinoandraptos"},"content":" */","lastModifiedDate":"2023-10-04"},{"lineNumber":69,"author":{"gitId":"spinoandraptos"},"content":" public String getTaskTiming(boolean useDefaultTiming){","lastModifiedDate":"2023-10-04"},{"lineNumber":70,"author":{"gitId":"spinoandraptos"},"content":" return \"\";","lastModifiedDate":"2023-10-04"},{"lineNumber":71,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":72,"author":{"gitId":"spinoandraptos"},"content":" /**","lastModifiedDate":"2023-10-04"},{"lineNumber":73,"author":{"gitId":"spinoandraptos"},"content":" * Returns task type.","lastModifiedDate":"2023-10-04"},{"lineNumber":74,"author":{"gitId":"spinoandraptos"},"content":" */","lastModifiedDate":"2023-10-04"},{"lineNumber":75,"author":{"gitId":"spinoandraptos"},"content":" public TaskType getTaskType(){","lastModifiedDate":"2023-10-04"},{"lineNumber":76,"author":{"gitId":"spinoandraptos"},"content":" return taskType;","lastModifiedDate":"2023-10-04"},{"lineNumber":77,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":78,"author":{"gitId":"spinoandraptos"},"content":"}","lastModifiedDate":"2023-10-04"}],"authorContributionMap":{"spinoandraptos":78}},{"path":"src/main/java/rene/task/ToDo.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"spinoandraptos"},"content":"package rene.task;","lastModifiedDate":"2023-10-04"},{"lineNumber":2,"author":{"gitId":"spinoandraptos"},"content":"/**","lastModifiedDate":"2023-10-04"},{"lineNumber":3,"author":{"gitId":"spinoandraptos"},"content":" * Represents todo tasks in the current task list","lastModifiedDate":"2023-10-04"},{"lineNumber":4,"author":{"gitId":"spinoandraptos"},"content":" */","lastModifiedDate":"2023-10-04"},{"lineNumber":5,"author":{"gitId":"spinoandraptos"},"content":"public class ToDo extends Task {","lastModifiedDate":"2023-10-04"},{"lineNumber":6,"author":{"gitId":"spinoandraptos"},"content":" /**","lastModifiedDate":"2023-10-04"},{"lineNumber":7,"author":{"gitId":"spinoandraptos"},"content":" * Creates a new task of type todo.","lastModifiedDate":"2023-10-04"},{"lineNumber":8,"author":{"gitId":"spinoandraptos"},"content":" *","lastModifiedDate":"2023-10-04"},{"lineNumber":9,"author":{"gitId":"spinoandraptos"},"content":" * @param description Task description.","lastModifiedDate":"2023-10-04"},{"lineNumber":10,"author":{"gitId":"spinoandraptos"},"content":" */","lastModifiedDate":"2023-10-04"},{"lineNumber":11,"author":{"gitId":"spinoandraptos"},"content":" public ToDo(String description){","lastModifiedDate":"2023-10-04"},{"lineNumber":12,"author":{"gitId":"spinoandraptos"},"content":" super(description, TaskType.TODO);","lastModifiedDate":"2023-10-04"},{"lineNumber":13,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":14,"author":{"gitId":"spinoandraptos"},"content":"}","lastModifiedDate":"2023-10-04"}],"authorContributionMap":{"spinoandraptos":14}},{"path":"src/main/java/rene/tasklist/TaskList.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"spinoandraptos"},"content":"package rene.tasklist;","lastModifiedDate":"2023-10-04"},{"lineNumber":2,"author":{"gitId":"spinoandraptos"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":3,"author":{"gitId":"spinoandraptos"},"content":"import rene.task.Task;","lastModifiedDate":"2023-10-04"},{"lineNumber":4,"author":{"gitId":"spinoandraptos"},"content":"import rene.task.ToDo;","lastModifiedDate":"2023-10-04"},{"lineNumber":5,"author":{"gitId":"spinoandraptos"},"content":"import rene.task.Deadline;","lastModifiedDate":"2023-10-04"},{"lineNumber":6,"author":{"gitId":"spinoandraptos"},"content":"import rene.task.Event;","lastModifiedDate":"2023-10-04"},{"lineNumber":7,"author":{"gitId":"spinoandraptos"},"content":"import rene.exception.ReneExceptions;","lastModifiedDate":"2023-10-04"},{"lineNumber":8,"author":{"gitId":"spinoandraptos"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":9,"author":{"gitId":"spinoandraptos"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-10-04"},{"lineNumber":10,"author":{"gitId":"spinoandraptos"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-10-04"},{"lineNumber":11,"author":{"gitId":"spinoandraptos"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-10-04"},{"lineNumber":12,"author":{"gitId":"spinoandraptos"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-10-04"},{"lineNumber":13,"author":{"gitId":"spinoandraptos"},"content":"/**","lastModifiedDate":"2023-10-04"},{"lineNumber":14,"author":{"gitId":"spinoandraptos"},"content":" * Represents the list of tasks currently registered in the chatbot.","lastModifiedDate":"2023-10-04"},{"lineNumber":15,"author":{"gitId":"spinoandraptos"},"content":" * This list is created on program start and disposed on program termination.","lastModifiedDate":"2023-10-04"},{"lineNumber":16,"author":{"gitId":"spinoandraptos"},"content":" */","lastModifiedDate":"2023-10-04"},{"lineNumber":17,"author":{"gitId":"spinoandraptos"},"content":"public class TaskList {","lastModifiedDate":"2023-10-04"},{"lineNumber":18,"author":{"gitId":"spinoandraptos"},"content":" private ArrayList\u003cTask\u003e allTasks; //array of inputs","lastModifiedDate":"2023-10-04"},{"lineNumber":19,"author":{"gitId":"spinoandraptos"},"content":" DateTimeFormatter inputDateTimeFormatter \u003d DateTimeFormatter.ofPattern( \"dd-MM-yyyy HH:mm\" );","lastModifiedDate":"2023-10-04"},{"lineNumber":20,"author":{"gitId":"spinoandraptos"},"content":" /**","lastModifiedDate":"2023-10-04"},{"lineNumber":21,"author":{"gitId":"spinoandraptos"},"content":" * Adds a user-requested task to the current task list.","lastModifiedDate":"2023-10-04"},{"lineNumber":22,"author":{"gitId":"spinoandraptos"},"content":" * Depending on the type of task to add to the list,","lastModifiedDate":"2023-10-04"},{"lineNumber":23,"author":{"gitId":"spinoandraptos"},"content":" * the program extracts the relevant information from","lastModifiedDate":"2023-10-04"},{"lineNumber":24,"author":{"gitId":"spinoandraptos"},"content":" * the user input and builds a Task object to be added.","lastModifiedDate":"2023-10-04"},{"lineNumber":25,"author":{"gitId":"spinoandraptos"},"content":" *","lastModifiedDate":"2023-10-04"},{"lineNumber":26,"author":{"gitId":"spinoandraptos"},"content":" * @param input The full user input from CLI.","lastModifiedDate":"2023-10-04"},{"lineNumber":27,"author":{"gitId":"spinoandraptos"},"content":" * @param taskType The type of task to be added (TODO, DEADLINE, EVENT).","lastModifiedDate":"2023-10-04"},{"lineNumber":28,"author":{"gitId":"spinoandraptos"},"content":" * @param showMessage If true, program will print response message on CLI after task is added.","lastModifiedDate":"2023-10-04"},{"lineNumber":29,"author":{"gitId":"spinoandraptos"},"content":" */","lastModifiedDate":"2023-10-04"},{"lineNumber":30,"author":{"gitId":"spinoandraptos"},"content":" public void addToTaskList(String input, Task.TaskType taskType, boolean showMessage){","lastModifiedDate":"2023-10-04"},{"lineNumber":31,"author":{"gitId":"spinoandraptos"},"content":" switch (taskType) {","lastModifiedDate":"2023-10-04"},{"lineNumber":32,"author":{"gitId":"spinoandraptos"},"content":" case TODO:","lastModifiedDate":"2023-10-04"},{"lineNumber":33,"author":{"gitId":"spinoandraptos"},"content":" try {","lastModifiedDate":"2023-10-04"},{"lineNumber":34,"author":{"gitId":"spinoandraptos"},"content":" String toDoDescription \u003d input.split(\"todo\")[1].strip();","lastModifiedDate":"2023-10-04"},{"lineNumber":35,"author":{"gitId":"spinoandraptos"},"content":" if (toDoDescription.equals(\"\")) {","lastModifiedDate":"2023-10-04"},{"lineNumber":36,"author":{"gitId":"spinoandraptos"},"content":" throw new ReneExceptions(\"Incomplete Command\");","lastModifiedDate":"2023-10-04"},{"lineNumber":37,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":38,"author":{"gitId":"spinoandraptos"},"content":" allTasks.add(new ToDo(toDoDescription));","lastModifiedDate":"2023-10-04"},{"lineNumber":39,"author":{"gitId":"spinoandraptos"},"content":" if (showMessage) {","lastModifiedDate":"2023-10-04"},{"lineNumber":40,"author":{"gitId":"spinoandraptos"},"content":" System.out.println(\" I have added the following task OwO:\");","lastModifiedDate":"2023-10-04"},{"lineNumber":41,"author":{"gitId":"spinoandraptos"},"content":" System.out.printf(\" [T][] %s\\n\", viewTaskByIndex(getTaskListSize()));","lastModifiedDate":"2023-10-04"},{"lineNumber":42,"author":{"gitId":"spinoandraptos"},"content":" System.out.println(\" Now you have \" + getTaskListSize() + \" tasks in the list! UWU\");","lastModifiedDate":"2023-10-04"},{"lineNumber":43,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":44,"author":{"gitId":"spinoandraptos"},"content":" break;","lastModifiedDate":"2023-10-04"},{"lineNumber":45,"author":{"gitId":"spinoandraptos"},"content":" } catch (ArrayIndexOutOfBoundsException | ReneExceptions incompleteCommand) {","lastModifiedDate":"2023-10-04"},{"lineNumber":46,"author":{"gitId":"spinoandraptos"},"content":" System.out.println(\" Ohnus! You did not use give todo a name!\");","lastModifiedDate":"2023-10-04"},{"lineNumber":47,"author":{"gitId":"spinoandraptos"},"content":" System.out.println(\" Pwease format your input as todo [task name]!\");","lastModifiedDate":"2023-10-04"},{"lineNumber":48,"author":{"gitId":"spinoandraptos"},"content":" return;","lastModifiedDate":"2023-10-04"},{"lineNumber":49,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":50,"author":{"gitId":"spinoandraptos"},"content":" case DEADLINE:","lastModifiedDate":"2023-10-04"},{"lineNumber":51,"author":{"gitId":"spinoandraptos"},"content":" String deadlineTiming;","lastModifiedDate":"2023-10-04"},{"lineNumber":52,"author":{"gitId":"spinoandraptos"},"content":" String deadlineDescription;","lastModifiedDate":"2023-10-04"},{"lineNumber":53,"author":{"gitId":"spinoandraptos"},"content":" String[] deadlineDetails;","lastModifiedDate":"2023-10-04"},{"lineNumber":54,"author":{"gitId":"spinoandraptos"},"content":" try {","lastModifiedDate":"2023-10-04"},{"lineNumber":55,"author":{"gitId":"spinoandraptos"},"content":" deadlineDetails \u003d input.split(\"deadline\")[1].strip().split(\"/\");","lastModifiedDate":"2023-10-04"},{"lineNumber":56,"author":{"gitId":"spinoandraptos"},"content":" } catch (ArrayIndexOutOfBoundsException incompleteCommand) {","lastModifiedDate":"2023-10-04"},{"lineNumber":57,"author":{"gitId":"spinoandraptos"},"content":" System.out.println(\" Ohnus! You did not use give deadline a name!\");","lastModifiedDate":"2023-10-04"},{"lineNumber":58,"author":{"gitId":"spinoandraptos"},"content":" System.out.println(\" Pwease format your input as deadline [task name] /by [time]!\");","lastModifiedDate":"2023-10-04"},{"lineNumber":59,"author":{"gitId":"spinoandraptos"},"content":" return;","lastModifiedDate":"2023-10-04"},{"lineNumber":60,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":61,"author":{"gitId":"spinoandraptos"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":62,"author":{"gitId":"spinoandraptos"},"content":" try {","lastModifiedDate":"2023-10-04"},{"lineNumber":63,"author":{"gitId":"spinoandraptos"},"content":" deadlineDescription \u003d deadlineDetails[0].strip();","lastModifiedDate":"2023-10-04"},{"lineNumber":64,"author":{"gitId":"spinoandraptos"},"content":" if (deadlineDescription.equals(\"\")) {","lastModifiedDate":"2023-10-04"},{"lineNumber":65,"author":{"gitId":"spinoandraptos"},"content":" throw new ReneExceptions(\"Incomplete Deadline Description\");","lastModifiedDate":"2023-10-04"},{"lineNumber":66,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":67,"author":{"gitId":"spinoandraptos"},"content":" deadlineTiming \u003d deadlineDetails[1].strip().split(\"by\")[1].strip();","lastModifiedDate":"2023-10-04"},{"lineNumber":68,"author":{"gitId":"spinoandraptos"},"content":" if (deadlineTiming.equals(\"\")) {","lastModifiedDate":"2023-10-04"},{"lineNumber":69,"author":{"gitId":"spinoandraptos"},"content":" throw new ReneExceptions(\"Incomplete Due Time\");","lastModifiedDate":"2023-10-04"},{"lineNumber":70,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":71,"author":{"gitId":"spinoandraptos"},"content":" LocalDateTime deadlineDateTime \u003d LocalDateTime.parse(deadlineTiming, inputDateTimeFormatter);","lastModifiedDate":"2023-10-04"},{"lineNumber":72,"author":{"gitId":"spinoandraptos"},"content":" allTasks.add(new Deadline(deadlineDescription, deadlineDateTime));","lastModifiedDate":"2023-10-04"},{"lineNumber":73,"author":{"gitId":"spinoandraptos"},"content":" if (showMessage) {","lastModifiedDate":"2023-10-04"},{"lineNumber":74,"author":{"gitId":"spinoandraptos"},"content":" System.out.println(\" I have added the following task OwO:\");","lastModifiedDate":"2023-10-04"},{"lineNumber":75,"author":{"gitId":"spinoandraptos"},"content":" System.out.printf(\" [D][] %s\\n\", viewTaskByIndex(getTaskListSize()));","lastModifiedDate":"2023-10-04"},{"lineNumber":76,"author":{"gitId":"spinoandraptos"},"content":" System.out.println(\" Now you have \" + getTaskListSize() + \" tasks in the list! UWU\");","lastModifiedDate":"2023-10-04"},{"lineNumber":77,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":78,"author":{"gitId":"spinoandraptos"},"content":" break;","lastModifiedDate":"2023-10-04"},{"lineNumber":79,"author":{"gitId":"spinoandraptos"},"content":" } catch (IndexOutOfBoundsException incompleteCommand) {","lastModifiedDate":"2023-10-04"},{"lineNumber":80,"author":{"gitId":"spinoandraptos"},"content":" System.out.println(\" Ohnus! You did not use \u0027/by\u0027 to signal due time!\");","lastModifiedDate":"2023-10-04"},{"lineNumber":81,"author":{"gitId":"spinoandraptos"},"content":" System.out.println(\" Pwease format your input as deadline [task name] /by [time]!\");","lastModifiedDate":"2023-10-04"},{"lineNumber":82,"author":{"gitId":"spinoandraptos"},"content":" return;","lastModifiedDate":"2023-10-04"},{"lineNumber":83,"author":{"gitId":"spinoandraptos"},"content":" } catch (DateTimeParseException incorrectTimeFormat){","lastModifiedDate":"2023-10-04"},{"lineNumber":84,"author":{"gitId":"spinoandraptos"},"content":" System.out.println(\" Ohnus! You did not use give a correct date time for due time!\");","lastModifiedDate":"2023-10-04"},{"lineNumber":85,"author":{"gitId":"spinoandraptos"},"content":" System.out.println(\" Pwease format your deadline as dd-MM-yyyy HH:mm!\");","lastModifiedDate":"2023-10-04"},{"lineNumber":86,"author":{"gitId":"spinoandraptos"},"content":" return;","lastModifiedDate":"2023-10-04"},{"lineNumber":87,"author":{"gitId":"spinoandraptos"},"content":" } catch (ReneExceptions incompleteCommand) {","lastModifiedDate":"2023-10-04"},{"lineNumber":88,"author":{"gitId":"spinoandraptos"},"content":" String exceptionMessage \u003d incompleteCommand.getMessage();","lastModifiedDate":"2023-10-04"},{"lineNumber":89,"author":{"gitId":"spinoandraptos"},"content":" switch (exceptionMessage) {","lastModifiedDate":"2023-10-04"},{"lineNumber":90,"author":{"gitId":"spinoandraptos"},"content":" case \"Incomplete Deadline Description\":","lastModifiedDate":"2023-10-04"},{"lineNumber":91,"author":{"gitId":"spinoandraptos"},"content":" System.out.println(\" Ohnus! You did not use give deadline a name!\");","lastModifiedDate":"2023-10-04"},{"lineNumber":92,"author":{"gitId":"spinoandraptos"},"content":" System.out.println(\" Pwease format your input as deadline [task name] /by [time]!\");","lastModifiedDate":"2023-10-04"},{"lineNumber":93,"author":{"gitId":"spinoandraptos"},"content":" return;","lastModifiedDate":"2023-10-04"},{"lineNumber":94,"author":{"gitId":"spinoandraptos"},"content":" case \"Incomplete Due Time\":","lastModifiedDate":"2023-10-04"},{"lineNumber":95,"author":{"gitId":"spinoandraptos"},"content":" System.out.println(\" Ohnus! You did not use give deadline a due time!\");","lastModifiedDate":"2023-10-04"},{"lineNumber":96,"author":{"gitId":"spinoandraptos"},"content":" System.out.println(\" Pwease format your input as deadline [task name] /by [time]!\");","lastModifiedDate":"2023-10-04"},{"lineNumber":97,"author":{"gitId":"spinoandraptos"},"content":" return;","lastModifiedDate":"2023-10-04"},{"lineNumber":98,"author":{"gitId":"spinoandraptos"},"content":" default:","lastModifiedDate":"2023-10-04"},{"lineNumber":99,"author":{"gitId":"spinoandraptos"},"content":" return;","lastModifiedDate":"2023-10-04"},{"lineNumber":100,"author":{"gitId":"spinoandraptos"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":101,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":102,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":103,"author":{"gitId":"spinoandraptos"},"content":" case EVENT:","lastModifiedDate":"2023-10-04"},{"lineNumber":104,"author":{"gitId":"spinoandraptos"},"content":" String eventStartTiming \u003d null;","lastModifiedDate":"2023-10-04"},{"lineNumber":105,"author":{"gitId":"spinoandraptos"},"content":" String eventEndTiming \u003d null;","lastModifiedDate":"2023-10-04"},{"lineNumber":106,"author":{"gitId":"spinoandraptos"},"content":" String[] eventDetails;","lastModifiedDate":"2023-10-04"},{"lineNumber":107,"author":{"gitId":"spinoandraptos"},"content":" String eventDescription \u003d null;","lastModifiedDate":"2023-10-04"},{"lineNumber":108,"author":{"gitId":"spinoandraptos"},"content":" LocalDateTime eventStartDateTime;","lastModifiedDate":"2023-10-04"},{"lineNumber":109,"author":{"gitId":"spinoandraptos"},"content":" LocalDateTime eventEndDateTime;","lastModifiedDate":"2023-10-04"},{"lineNumber":110,"author":{"gitId":"spinoandraptos"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":111,"author":{"gitId":"spinoandraptos"},"content":" try {","lastModifiedDate":"2023-10-04"},{"lineNumber":112,"author":{"gitId":"spinoandraptos"},"content":" eventDetails \u003d input.split(\"event\")[1].strip().split(\"/\");","lastModifiedDate":"2023-10-04"},{"lineNumber":113,"author":{"gitId":"spinoandraptos"},"content":" } catch (ArrayIndexOutOfBoundsException incompleteCommand) {","lastModifiedDate":"2023-10-04"},{"lineNumber":114,"author":{"gitId":"spinoandraptos"},"content":" System.out.println(\" Ohnus! You did not use give event a name!\");","lastModifiedDate":"2023-10-04"},{"lineNumber":115,"author":{"gitId":"spinoandraptos"},"content":" System.out.println(\" Pwease format your input as event [task name] /from [start time] \" +","lastModifiedDate":"2023-10-04"},{"lineNumber":116,"author":{"gitId":"spinoandraptos"},"content":" \"/to [end time]!\");","lastModifiedDate":"2023-10-04"},{"lineNumber":117,"author":{"gitId":"spinoandraptos"},"content":" return;","lastModifiedDate":"2023-10-04"},{"lineNumber":118,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":119,"author":{"gitId":"spinoandraptos"},"content":" try {","lastModifiedDate":"2023-10-04"},{"lineNumber":120,"author":{"gitId":"spinoandraptos"},"content":" eventDescription \u003d eventDetails[0].strip();","lastModifiedDate":"2023-10-04"},{"lineNumber":121,"author":{"gitId":"spinoandraptos"},"content":" if (eventDescription.equals(\"\")) {","lastModifiedDate":"2023-10-04"},{"lineNumber":122,"author":{"gitId":"spinoandraptos"},"content":" throw new ReneExceptions(\"Incomplete Event Description\");","lastModifiedDate":"2023-10-04"},{"lineNumber":123,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":124,"author":{"gitId":"spinoandraptos"},"content":" eventStartTiming \u003d eventDetails[1].strip().split(\"from\")[1].strip();","lastModifiedDate":"2023-10-04"},{"lineNumber":125,"author":{"gitId":"spinoandraptos"},"content":" if (eventStartTiming.equals(\"\")) {","lastModifiedDate":"2023-10-04"},{"lineNumber":126,"author":{"gitId":"spinoandraptos"},"content":" throw new ReneExceptions(\"Incomplete Start Time\");","lastModifiedDate":"2023-10-04"},{"lineNumber":127,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":128,"author":{"gitId":"spinoandraptos"},"content":" eventStartDateTime \u003d LocalDateTime.parse(eventStartTiming, inputDateTimeFormatter);","lastModifiedDate":"2023-10-04"},{"lineNumber":129,"author":{"gitId":"spinoandraptos"},"content":" } catch (IndexOutOfBoundsException incompleteCommand) {","lastModifiedDate":"2023-10-04"},{"lineNumber":130,"author":{"gitId":"spinoandraptos"},"content":" System.out.println(\" Ohnus! You did not use \u0027/from\u0027 to signal start time!\");","lastModifiedDate":"2023-10-04"},{"lineNumber":131,"author":{"gitId":"spinoandraptos"},"content":" System.out.println(\" Pwease format your input as event [task name] /from [start time] \" +","lastModifiedDate":"2023-10-04"},{"lineNumber":132,"author":{"gitId":"spinoandraptos"},"content":" \"/to [end time]!\");","lastModifiedDate":"2023-10-04"},{"lineNumber":133,"author":{"gitId":"spinoandraptos"},"content":" return;","lastModifiedDate":"2023-10-04"},{"lineNumber":134,"author":{"gitId":"spinoandraptos"},"content":" } catch (DateTimeParseException incorrectTimeFormat){","lastModifiedDate":"2023-10-04"},{"lineNumber":135,"author":{"gitId":"spinoandraptos"},"content":" System.out.println(\" Ohnus! You did not use give a correct date time for start time!\");","lastModifiedDate":"2023-10-04"},{"lineNumber":136,"author":{"gitId":"spinoandraptos"},"content":" System.out.println(\" Pwease format your deadline as dd-MM-yyyy HH:mm !\");","lastModifiedDate":"2023-10-04"},{"lineNumber":137,"author":{"gitId":"spinoandraptos"},"content":" return;","lastModifiedDate":"2023-10-04"},{"lineNumber":138,"author":{"gitId":"spinoandraptos"},"content":" } catch (ReneExceptions incompleteCommand) {","lastModifiedDate":"2023-10-04"},{"lineNumber":139,"author":{"gitId":"spinoandraptos"},"content":" String exceptionMessage \u003d incompleteCommand.getMessage();","lastModifiedDate":"2023-10-04"},{"lineNumber":140,"author":{"gitId":"spinoandraptos"},"content":" switch (exceptionMessage) {","lastModifiedDate":"2023-10-04"},{"lineNumber":141,"author":{"gitId":"spinoandraptos"},"content":" case \"Incomplete Event Description\":","lastModifiedDate":"2023-10-04"},{"lineNumber":142,"author":{"gitId":"spinoandraptos"},"content":" System.out.println(\" Ohnus! You did not use give event a name!\");","lastModifiedDate":"2023-10-04"},{"lineNumber":143,"author":{"gitId":"spinoandraptos"},"content":" System.out.println(\" Pwease format your input as event [task name] \" +","lastModifiedDate":"2023-10-04"},{"lineNumber":144,"author":{"gitId":"spinoandraptos"},"content":" \"/from [start time] /to [end time]!\");","lastModifiedDate":"2023-10-04"},{"lineNumber":145,"author":{"gitId":"spinoandraptos"},"content":" return;","lastModifiedDate":"2023-10-04"},{"lineNumber":146,"author":{"gitId":"spinoandraptos"},"content":" case \"Incomplete Start Time\":","lastModifiedDate":"2023-10-04"},{"lineNumber":147,"author":{"gitId":"spinoandraptos"},"content":" System.out.println(\" Ohnus! You did not use give event a start time!\");","lastModifiedDate":"2023-10-04"},{"lineNumber":148,"author":{"gitId":"spinoandraptos"},"content":" System.out.println(\" Pwease format your input as event [task name] \" +","lastModifiedDate":"2023-10-04"},{"lineNumber":149,"author":{"gitId":"spinoandraptos"},"content":" \"/from [start time] /to [end time]!\");","lastModifiedDate":"2023-10-04"},{"lineNumber":150,"author":{"gitId":"spinoandraptos"},"content":" return;","lastModifiedDate":"2023-10-04"},{"lineNumber":151,"author":{"gitId":"spinoandraptos"},"content":" default:","lastModifiedDate":"2023-10-04"},{"lineNumber":152,"author":{"gitId":"spinoandraptos"},"content":" return;","lastModifiedDate":"2023-10-04"},{"lineNumber":153,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":154,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":155,"author":{"gitId":"spinoandraptos"},"content":" try {","lastModifiedDate":"2023-10-04"},{"lineNumber":156,"author":{"gitId":"spinoandraptos"},"content":" eventEndTiming \u003d eventDetails[2].strip().split(\"to\")[1].strip();","lastModifiedDate":"2023-10-04"},{"lineNumber":157,"author":{"gitId":"spinoandraptos"},"content":" if (eventEndTiming.equals(\"\")) {","lastModifiedDate":"2023-10-04"},{"lineNumber":158,"author":{"gitId":"spinoandraptos"},"content":" throw new ReneExceptions(\"Incomplete Start Time\");","lastModifiedDate":"2023-10-04"},{"lineNumber":159,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":160,"author":{"gitId":"spinoandraptos"},"content":" eventEndDateTime \u003d LocalDateTime .parse(eventEndTiming, inputDateTimeFormatter);","lastModifiedDate":"2023-10-04"},{"lineNumber":161,"author":{"gitId":"spinoandraptos"},"content":" if(eventEndDateTime.isBefore(eventStartDateTime)){","lastModifiedDate":"2023-10-04"},{"lineNumber":162,"author":{"gitId":"spinoandraptos"},"content":" throw new ReneExceptions(\"Invalid end time\");","lastModifiedDate":"2023-10-04"},{"lineNumber":163,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":164,"author":{"gitId":"spinoandraptos"},"content":" allTasks.add(new Event(eventDescription, eventStartDateTime, eventEndDateTime));","lastModifiedDate":"2023-10-04"},{"lineNumber":165,"author":{"gitId":"spinoandraptos"},"content":" if (showMessage) {","lastModifiedDate":"2023-10-04"},{"lineNumber":166,"author":{"gitId":"spinoandraptos"},"content":" System.out.println(\" I have added the following task OwO:\");","lastModifiedDate":"2023-10-04"},{"lineNumber":167,"author":{"gitId":"spinoandraptos"},"content":" System.out.printf(\" [E][] %s\\n\", viewTaskByIndex(getTaskListSize()));","lastModifiedDate":"2023-10-04"},{"lineNumber":168,"author":{"gitId":"spinoandraptos"},"content":" System.out.println(\" Now you have \" + getTaskListSize() + \" tasks in the list! UWU\");","lastModifiedDate":"2023-10-04"},{"lineNumber":169,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":170,"author":{"gitId":"spinoandraptos"},"content":" } catch (IndexOutOfBoundsException incompleteCommand) {","lastModifiedDate":"2023-10-04"},{"lineNumber":171,"author":{"gitId":"spinoandraptos"},"content":" System.out.println(\" Ohnus! You did not use \u0027/to\u0027 to signal end time!\");","lastModifiedDate":"2023-10-04"},{"lineNumber":172,"author":{"gitId":"spinoandraptos"},"content":" System.out.println(\" Pwease format your input as event [task name] \" +","lastModifiedDate":"2023-10-04"},{"lineNumber":173,"author":{"gitId":"spinoandraptos"},"content":" \"/from [start time] /to [end time]!\");","lastModifiedDate":"2023-10-04"},{"lineNumber":174,"author":{"gitId":"spinoandraptos"},"content":" return;","lastModifiedDate":"2023-10-04"},{"lineNumber":175,"author":{"gitId":"spinoandraptos"},"content":" } catch (DateTimeParseException incorrectTimeFormat){","lastModifiedDate":"2023-10-04"},{"lineNumber":176,"author":{"gitId":"spinoandraptos"},"content":" System.out.println(\" Ohnus! You did not use give a correct date time for end time!\");","lastModifiedDate":"2023-10-04"},{"lineNumber":177,"author":{"gitId":"spinoandraptos"},"content":" System.out.println(\" Pwease format your deadline as dd-MM-yyyy HH:mm!\");","lastModifiedDate":"2023-10-04"},{"lineNumber":178,"author":{"gitId":"spinoandraptos"},"content":" return;","lastModifiedDate":"2023-10-04"},{"lineNumber":179,"author":{"gitId":"spinoandraptos"},"content":" } catch (ReneExceptions incorrectCommand) {","lastModifiedDate":"2023-10-04"},{"lineNumber":180,"author":{"gitId":"spinoandraptos"},"content":" String exceptionMessage \u003d incorrectCommand.getMessage();","lastModifiedDate":"2023-10-04"},{"lineNumber":181,"author":{"gitId":"spinoandraptos"},"content":" switch (exceptionMessage) {","lastModifiedDate":"2023-10-04"},{"lineNumber":182,"author":{"gitId":"spinoandraptos"},"content":" case \"Invalid end time\":","lastModifiedDate":"2023-10-04"},{"lineNumber":183,"author":{"gitId":"spinoandraptos"},"content":" System.out.println(\" Your end time cannot be earlier than start time! :\u003c\");","lastModifiedDate":"2023-10-04"},{"lineNumber":184,"author":{"gitId":"spinoandraptos"},"content":" return;","lastModifiedDate":"2023-10-04"},{"lineNumber":185,"author":{"gitId":"spinoandraptos"},"content":" case \"Incomplete Start Time\":","lastModifiedDate":"2023-10-04"},{"lineNumber":186,"author":{"gitId":"spinoandraptos"},"content":" System.out.println(\" Ohnus! You did not use give event a start time!\");","lastModifiedDate":"2023-10-04"},{"lineNumber":187,"author":{"gitId":"spinoandraptos"},"content":" System.out.println(\" Pwease format your input as event [task name] \" +","lastModifiedDate":"2023-10-04"},{"lineNumber":188,"author":{"gitId":"spinoandraptos"},"content":" \"/from [start time] /to [end time]!\");","lastModifiedDate":"2023-10-04"},{"lineNumber":189,"author":{"gitId":"spinoandraptos"},"content":" return;","lastModifiedDate":"2023-10-04"},{"lineNumber":190,"author":{"gitId":"spinoandraptos"},"content":" default:","lastModifiedDate":"2023-10-04"},{"lineNumber":191,"author":{"gitId":"spinoandraptos"},"content":" return;","lastModifiedDate":"2023-10-04"},{"lineNumber":192,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":193,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":194,"author":{"gitId":"spinoandraptos"},"content":" break;","lastModifiedDate":"2023-10-04"},{"lineNumber":195,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":196,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":197,"author":{"gitId":"spinoandraptos"},"content":" /**","lastModifiedDate":"2023-10-04"},{"lineNumber":198,"author":{"gitId":"spinoandraptos"},"content":" * Prints the details of a task in CLI.","lastModifiedDate":"2023-10-04"},{"lineNumber":199,"author":{"gitId":"spinoandraptos"},"content":" *","lastModifiedDate":"2023-10-04"},{"lineNumber":200,"author":{"gitId":"spinoandraptos"},"content":" * @param task The task which details are to be printed.","lastModifiedDate":"2023-10-04"},{"lineNumber":201,"author":{"gitId":"spinoandraptos"},"content":" * @param asList If true, prints out the index of the task in the task list","lastModifiedDate":"2023-10-04"},{"lineNumber":202,"author":{"gitId":"spinoandraptos"},"content":" * in addition to the details of the task.","lastModifiedDate":"2023-10-04"},{"lineNumber":203,"author":{"gitId":"spinoandraptos"},"content":" */","lastModifiedDate":"2023-10-04"},{"lineNumber":204,"author":{"gitId":"spinoandraptos"},"content":" public void printTask(Task task, boolean asList){","lastModifiedDate":"2023-10-04"},{"lineNumber":205,"author":{"gitId":"spinoandraptos"},"content":" int taskIndex \u003d allTasks.indexOf(task);","lastModifiedDate":"2023-10-04"},{"lineNumber":206,"author":{"gitId":"spinoandraptos"},"content":" switch(task.getTaskType()) {","lastModifiedDate":"2023-10-04"},{"lineNumber":207,"author":{"gitId":"spinoandraptos"},"content":" case TODO:","lastModifiedDate":"2023-10-04"},{"lineNumber":208,"author":{"gitId":"spinoandraptos"},"content":" if (task.taskIsDone()) {","lastModifiedDate":"2023-10-04"},{"lineNumber":209,"author":{"gitId":"spinoandraptos"},"content":" if(asList){","lastModifiedDate":"2023-10-04"},{"lineNumber":210,"author":{"gitId":"spinoandraptos"},"content":" System.out.printf(\" %d: [T][X] %s\\n\", taskIndex+1, task.getTaskDescription());","lastModifiedDate":"2023-10-04"},{"lineNumber":211,"author":{"gitId":"spinoandraptos"},"content":" } else{","lastModifiedDate":"2023-10-04"},{"lineNumber":212,"author":{"gitId":"spinoandraptos"},"content":" System.out.printf(\" [T][X] %s\\n\", task.getTaskDescription());","lastModifiedDate":"2023-10-04"},{"lineNumber":213,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":214,"author":{"gitId":"spinoandraptos"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":215,"author":{"gitId":"spinoandraptos"},"content":" } else {","lastModifiedDate":"2023-10-04"},{"lineNumber":216,"author":{"gitId":"spinoandraptos"},"content":" if(asList){","lastModifiedDate":"2023-10-04"},{"lineNumber":217,"author":{"gitId":"spinoandraptos"},"content":" System.out.printf(\" %d: [T][] %s\\n\", taskIndex+1, task.getTaskDescription());","lastModifiedDate":"2023-10-04"},{"lineNumber":218,"author":{"gitId":"spinoandraptos"},"content":" } else{","lastModifiedDate":"2023-10-04"},{"lineNumber":219,"author":{"gitId":"spinoandraptos"},"content":" System.out.printf(\" [T][] %s\\n\", task.getTaskDescription());","lastModifiedDate":"2023-10-04"},{"lineNumber":220,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":221,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":222,"author":{"gitId":"spinoandraptos"},"content":" break;","lastModifiedDate":"2023-10-04"},{"lineNumber":223,"author":{"gitId":"spinoandraptos"},"content":" case DEADLINE:","lastModifiedDate":"2023-10-04"},{"lineNumber":224,"author":{"gitId":"spinoandraptos"},"content":" if (task.taskIsDone()) {","lastModifiedDate":"2023-10-04"},{"lineNumber":225,"author":{"gitId":"spinoandraptos"},"content":" if (asList) {","lastModifiedDate":"2023-10-04"},{"lineNumber":226,"author":{"gitId":"spinoandraptos"},"content":" System.out.printf(\" %d: [D][X] %s %s\\n\",","lastModifiedDate":"2023-10-04"},{"lineNumber":227,"author":{"gitId":"spinoandraptos"},"content":" taskIndex + 1, task.getTaskDescription(), task.getTaskTiming(false));","lastModifiedDate":"2023-10-04"},{"lineNumber":228,"author":{"gitId":"spinoandraptos"},"content":" } else {","lastModifiedDate":"2023-10-04"},{"lineNumber":229,"author":{"gitId":"spinoandraptos"},"content":" System.out.printf(\" [D][X] %s %s\\n\",","lastModifiedDate":"2023-10-04"},{"lineNumber":230,"author":{"gitId":"spinoandraptos"},"content":" task.getTaskDescription(), task.getTaskTiming(false));","lastModifiedDate":"2023-10-04"},{"lineNumber":231,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":232,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":233,"author":{"gitId":"spinoandraptos"},"content":" else {","lastModifiedDate":"2023-10-04"},{"lineNumber":234,"author":{"gitId":"spinoandraptos"},"content":" if (asList) {","lastModifiedDate":"2023-10-04"},{"lineNumber":235,"author":{"gitId":"spinoandraptos"},"content":" System.out.printf(\" %d: [D][] %s %s\\n\",","lastModifiedDate":"2023-10-04"},{"lineNumber":236,"author":{"gitId":"spinoandraptos"},"content":" taskIndex + 1, task.getTaskDescription(), task.getTaskTiming(false));","lastModifiedDate":"2023-10-04"},{"lineNumber":237,"author":{"gitId":"spinoandraptos"},"content":" } else {","lastModifiedDate":"2023-10-04"},{"lineNumber":238,"author":{"gitId":"spinoandraptos"},"content":" System.out.printf(\" [D][] %s %s\\n\",","lastModifiedDate":"2023-10-04"},{"lineNumber":239,"author":{"gitId":"spinoandraptos"},"content":" task.getTaskDescription(), task.getTaskTiming(false));","lastModifiedDate":"2023-10-04"},{"lineNumber":240,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":241,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":242,"author":{"gitId":"spinoandraptos"},"content":" break;","lastModifiedDate":"2023-10-04"},{"lineNumber":243,"author":{"gitId":"spinoandraptos"},"content":" case EVENT:","lastModifiedDate":"2023-10-04"},{"lineNumber":244,"author":{"gitId":"spinoandraptos"},"content":" if (task.taskIsDone()) {","lastModifiedDate":"2023-10-04"},{"lineNumber":245,"author":{"gitId":"spinoandraptos"},"content":" if (asList) {","lastModifiedDate":"2023-10-04"},{"lineNumber":246,"author":{"gitId":"spinoandraptos"},"content":" System.out.printf(\" %d: [E][X] %s %s\\n\",","lastModifiedDate":"2023-10-04"},{"lineNumber":247,"author":{"gitId":"spinoandraptos"},"content":" taskIndex+1, task.getTaskDescription(), task.getTaskTiming(false));","lastModifiedDate":"2023-10-04"},{"lineNumber":248,"author":{"gitId":"spinoandraptos"},"content":" } else {","lastModifiedDate":"2023-10-04"},{"lineNumber":249,"author":{"gitId":"spinoandraptos"},"content":" System.out.printf(\" [E][X] %s %s\\n\",","lastModifiedDate":"2023-10-04"},{"lineNumber":250,"author":{"gitId":"spinoandraptos"},"content":" task.getTaskDescription(), task.getTaskTiming(false));","lastModifiedDate":"2023-10-04"},{"lineNumber":251,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":252,"author":{"gitId":"spinoandraptos"},"content":" } else {","lastModifiedDate":"2023-10-04"},{"lineNumber":253,"author":{"gitId":"spinoandraptos"},"content":" if (asList) {","lastModifiedDate":"2023-10-04"},{"lineNumber":254,"author":{"gitId":"spinoandraptos"},"content":" System.out.printf(\" %d: [E][] %s %s\\n\",","lastModifiedDate":"2023-10-04"},{"lineNumber":255,"author":{"gitId":"spinoandraptos"},"content":" taskIndex+1, task.getTaskDescription(), task.getTaskTiming(false));","lastModifiedDate":"2023-10-04"},{"lineNumber":256,"author":{"gitId":"spinoandraptos"},"content":" } else {","lastModifiedDate":"2023-10-04"},{"lineNumber":257,"author":{"gitId":"spinoandraptos"},"content":" System.out.printf(\" [E][] %s %s\\n\",","lastModifiedDate":"2023-10-04"},{"lineNumber":258,"author":{"gitId":"spinoandraptos"},"content":" task.getTaskDescription(), task.getTaskTiming(false));","lastModifiedDate":"2023-10-04"},{"lineNumber":259,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":260,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":261,"author":{"gitId":"spinoandraptos"},"content":" break;","lastModifiedDate":"2023-10-04"},{"lineNumber":262,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":263,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":264,"author":{"gitId":"spinoandraptos"},"content":" /**","lastModifiedDate":"2023-10-04"},{"lineNumber":265,"author":{"gitId":"spinoandraptos"},"content":" * Prints all the tasks in the current task list as an indexed list.","lastModifiedDate":"2023-10-04"},{"lineNumber":266,"author":{"gitId":"spinoandraptos"},"content":" */","lastModifiedDate":"2023-10-04"},{"lineNumber":267,"author":{"gitId":"spinoandraptos"},"content":" public void printTaskList(){","lastModifiedDate":"2023-10-04"},{"lineNumber":268,"author":{"gitId":"spinoandraptos"},"content":" if(allTasks.isEmpty()){","lastModifiedDate":"2023-10-04"},{"lineNumber":269,"author":{"gitId":"spinoandraptos"},"content":" System.out.println(\" No tasks found! Time to add some OWO\");","lastModifiedDate":"2023-10-04"},{"lineNumber":270,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":271,"author":{"gitId":"spinoandraptos"},"content":" else {","lastModifiedDate":"2023-10-04"},{"lineNumber":272,"author":{"gitId":"spinoandraptos"},"content":" for (Task task : allTasks) {","lastModifiedDate":"2023-10-04"},{"lineNumber":273,"author":{"gitId":"spinoandraptos"},"content":" printTask(task, true);","lastModifiedDate":"2023-10-04"},{"lineNumber":274,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":275,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":276,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":277,"author":{"gitId":"spinoandraptos"},"content":" /**","lastModifiedDate":"2023-10-04"},{"lineNumber":278,"author":{"gitId":"spinoandraptos"},"content":" * Mark a task in the current task list as done.","lastModifiedDate":"2023-10-04"},{"lineNumber":279,"author":{"gitId":"spinoandraptos"},"content":" *","lastModifiedDate":"2023-10-04"},{"lineNumber":280,"author":{"gitId":"spinoandraptos"},"content":" * @param index The list index of the task to be marked as done.","lastModifiedDate":"2023-10-04"},{"lineNumber":281,"author":{"gitId":"spinoandraptos"},"content":" * @param showMessage If true, program will print response message on CLI","lastModifiedDate":"2023-10-04"},{"lineNumber":282,"author":{"gitId":"spinoandraptos"},"content":" * after task is marked as done.","lastModifiedDate":"2023-10-04"},{"lineNumber":283,"author":{"gitId":"spinoandraptos"},"content":" */","lastModifiedDate":"2023-10-04"},{"lineNumber":284,"author":{"gitId":"spinoandraptos"},"content":" public void markTaskAsDone(int index, boolean showMessage){","lastModifiedDate":"2023-10-04"},{"lineNumber":285,"author":{"gitId":"spinoandraptos"},"content":" try{","lastModifiedDate":"2023-10-04"},{"lineNumber":286,"author":{"gitId":"spinoandraptos"},"content":" allTasks.get(index-1).markAsDone();","lastModifiedDate":"2023-10-04"},{"lineNumber":287,"author":{"gitId":"spinoandraptos"},"content":" if(showMessage) {","lastModifiedDate":"2023-10-04"},{"lineNumber":288,"author":{"gitId":"spinoandraptos"},"content":" Task task \u003d allTasks.get(index - 1);","lastModifiedDate":"2023-10-04"},{"lineNumber":289,"author":{"gitId":"spinoandraptos"},"content":" System.out.println(\" Roger that! I have marked the following task as done \u003ew\u003c !\");","lastModifiedDate":"2023-10-04"},{"lineNumber":290,"author":{"gitId":"spinoandraptos"},"content":" printTask(task, false);","lastModifiedDate":"2023-10-04"},{"lineNumber":291,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":292,"author":{"gitId":"spinoandraptos"},"content":" } catch (IndexOutOfBoundsException invalidIndex){","lastModifiedDate":"2023-10-04"},{"lineNumber":293,"author":{"gitId":"spinoandraptos"},"content":" System.out.println(\" Ohnuuu! Please enter valid task number *sobs*\");","lastModifiedDate":"2023-10-04"},{"lineNumber":294,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":295,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":296,"author":{"gitId":"spinoandraptos"},"content":" /**","lastModifiedDate":"2023-10-04"},{"lineNumber":297,"author":{"gitId":"spinoandraptos"},"content":" * Mark a task in the current task list as not done.","lastModifiedDate":"2023-10-04"},{"lineNumber":298,"author":{"gitId":"spinoandraptos"},"content":" */","lastModifiedDate":"2023-10-04"},{"lineNumber":299,"author":{"gitId":"spinoandraptos"},"content":" public void markTaskAsNotDone(int index){","lastModifiedDate":"2023-10-04"},{"lineNumber":300,"author":{"gitId":"spinoandraptos"},"content":" try{","lastModifiedDate":"2023-10-04"},{"lineNumber":301,"author":{"gitId":"spinoandraptos"},"content":" allTasks.get(index-1).markAsNotDone();","lastModifiedDate":"2023-10-04"},{"lineNumber":302,"author":{"gitId":"spinoandraptos"},"content":" Task task \u003d allTasks.get(index-1);","lastModifiedDate":"2023-10-04"},{"lineNumber":303,"author":{"gitId":"spinoandraptos"},"content":" System.out.println(\" Roger that! I have unmarked the following task as done \u003ew\u003c !\");","lastModifiedDate":"2023-10-04"},{"lineNumber":304,"author":{"gitId":"spinoandraptos"},"content":" printTask(task, false);","lastModifiedDate":"2023-10-04"},{"lineNumber":305,"author":{"gitId":"spinoandraptos"},"content":" } catch (IndexOutOfBoundsException invalidIndex){","lastModifiedDate":"2023-10-04"},{"lineNumber":306,"author":{"gitId":"spinoandraptos"},"content":" System.out.println(\" Ohnuuu! Please enter valid task number *sobs*\");","lastModifiedDate":"2023-10-04"},{"lineNumber":307,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":308,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":309,"author":{"gitId":"spinoandraptos"},"content":" /**","lastModifiedDate":"2023-10-04"},{"lineNumber":310,"author":{"gitId":"spinoandraptos"},"content":" * Delete a task from the current task list.","lastModifiedDate":"2023-10-04"},{"lineNumber":311,"author":{"gitId":"spinoandraptos"},"content":" *","lastModifiedDate":"2023-10-04"},{"lineNumber":312,"author":{"gitId":"spinoandraptos"},"content":" * @param index The list index of the task to be deleted.","lastModifiedDate":"2023-10-04"},{"lineNumber":313,"author":{"gitId":"spinoandraptos"},"content":" */","lastModifiedDate":"2023-10-04"},{"lineNumber":314,"author":{"gitId":"spinoandraptos"},"content":" public void deleteTaskByIndex(int index){","lastModifiedDate":"2023-10-04"},{"lineNumber":315,"author":{"gitId":"spinoandraptos"},"content":" try{","lastModifiedDate":"2023-10-04"},{"lineNumber":316,"author":{"gitId":"spinoandraptos"},"content":" Task task \u003d allTasks.get(index-1);","lastModifiedDate":"2023-10-04"},{"lineNumber":317,"author":{"gitId":"spinoandraptos"},"content":" allTasks.remove(index - 1);","lastModifiedDate":"2023-10-04"},{"lineNumber":318,"author":{"gitId":"spinoandraptos"},"content":" System.out.println(\" Roger that! I have deleted the following task \u003ew\u003c !\");","lastModifiedDate":"2023-10-04"},{"lineNumber":319,"author":{"gitId":"spinoandraptos"},"content":" printTask(task, false);","lastModifiedDate":"2023-10-04"},{"lineNumber":320,"author":{"gitId":"spinoandraptos"},"content":" System.out.println(\" Now you have \" + getTaskListSize() + \" tasks in the list! UWU\");","lastModifiedDate":"2023-10-04"},{"lineNumber":321,"author":{"gitId":"spinoandraptos"},"content":" } catch (IndexOutOfBoundsException invalidIndex){","lastModifiedDate":"2023-10-04"},{"lineNumber":322,"author":{"gitId":"spinoandraptos"},"content":" System.out.println(\" Ohnuuu! Please enter valid task number *sobs*\");","lastModifiedDate":"2023-10-04"},{"lineNumber":323,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":324,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":325,"author":{"gitId":"spinoandraptos"},"content":" /**","lastModifiedDate":"2023-10-04"},{"lineNumber":326,"author":{"gitId":"spinoandraptos"},"content":" * Returns the description and all other details of a task in one String object.","lastModifiedDate":"2023-10-04"},{"lineNumber":327,"author":{"gitId":"spinoandraptos"},"content":" * Used to display task details in CLI.","lastModifiedDate":"2023-10-04"},{"lineNumber":328,"author":{"gitId":"spinoandraptos"},"content":" *","lastModifiedDate":"2023-10-04"},{"lineNumber":329,"author":{"gitId":"spinoandraptos"},"content":" * @param index The list index of the task to be viewed.","lastModifiedDate":"2023-10-04"},{"lineNumber":330,"author":{"gitId":"spinoandraptos"},"content":" */","lastModifiedDate":"2023-10-04"},{"lineNumber":331,"author":{"gitId":"spinoandraptos"},"content":" public String viewTaskByIndex(int index){","lastModifiedDate":"2023-10-04"},{"lineNumber":332,"author":{"gitId":"spinoandraptos"},"content":" try{","lastModifiedDate":"2023-10-04"},{"lineNumber":333,"author":{"gitId":"spinoandraptos"},"content":" switch(allTasks.get(index-1).getTaskType()) {","lastModifiedDate":"2023-10-04"},{"lineNumber":334,"author":{"gitId":"spinoandraptos"},"content":" case TODO:","lastModifiedDate":"2023-10-04"},{"lineNumber":335,"author":{"gitId":"spinoandraptos"},"content":" return allTasks.get(index-1).getTaskDescription();","lastModifiedDate":"2023-10-04"},{"lineNumber":336,"author":{"gitId":"spinoandraptos"},"content":" case DEADLINE:","lastModifiedDate":"2023-10-04"},{"lineNumber":337,"author":{"gitId":"spinoandraptos"},"content":" case EVENT:","lastModifiedDate":"2023-10-04"},{"lineNumber":338,"author":{"gitId":"spinoandraptos"},"content":" return allTasks.get(index-1).getTaskDescription() + \" \" +","lastModifiedDate":"2023-10-04"},{"lineNumber":339,"author":{"gitId":"spinoandraptos"},"content":" allTasks.get(index-1).getTaskTiming(false);","lastModifiedDate":"2023-10-04"},{"lineNumber":340,"author":{"gitId":"spinoandraptos"},"content":" default:","lastModifiedDate":"2023-10-04"},{"lineNumber":341,"author":{"gitId":"spinoandraptos"},"content":" return \"Task Not Found\";","lastModifiedDate":"2023-10-04"},{"lineNumber":342,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":343,"author":{"gitId":"spinoandraptos"},"content":" } catch(NullPointerException | IndexOutOfBoundsException invalidIndex){","lastModifiedDate":"2023-10-04"},{"lineNumber":344,"author":{"gitId":"spinoandraptos"},"content":" System.out.println(\" Ohnuuu! Please enter valid task number *sobs*\");","lastModifiedDate":"2023-10-04"},{"lineNumber":345,"author":{"gitId":"spinoandraptos"},"content":" return \"Task Not Found\";","lastModifiedDate":"2023-10-04"},{"lineNumber":346,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":347,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":348,"author":{"gitId":"spinoandraptos"},"content":" /**","lastModifiedDate":"2023-10-04"},{"lineNumber":349,"author":{"gitId":"spinoandraptos"},"content":" * Search for tasks in the current task list using their description.","lastModifiedDate":"2023-10-04"},{"lineNumber":350,"author":{"gitId":"spinoandraptos"},"content":" *","lastModifiedDate":"2023-10-04"},{"lineNumber":351,"author":{"gitId":"spinoandraptos"},"content":" * @param keyword Description keyword(s) used to search for matches.","lastModifiedDate":"2023-10-04"},{"lineNumber":352,"author":{"gitId":"spinoandraptos"},"content":" */","lastModifiedDate":"2023-10-04"},{"lineNumber":353,"author":{"gitId":"spinoandraptos"},"content":" public void searchListByDescription(String keyword){","lastModifiedDate":"2023-10-04"},{"lineNumber":354,"author":{"gitId":"spinoandraptos"},"content":" ArrayList\u003cTask\u003e matchedTasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-10-04"},{"lineNumber":355,"author":{"gitId":"spinoandraptos"},"content":" if(allTasks.isEmpty()){","lastModifiedDate":"2023-10-04"},{"lineNumber":356,"author":{"gitId":"spinoandraptos"},"content":" System.out.println(\" Task list is empty! Time to add some OWO\");","lastModifiedDate":"2023-10-04"},{"lineNumber":357,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":358,"author":{"gitId":"spinoandraptos"},"content":" else {","lastModifiedDate":"2023-10-04"},{"lineNumber":359,"author":{"gitId":"spinoandraptos"},"content":" System.out.println(\" Here are tasks that matched your search:\");","lastModifiedDate":"2023-10-04"},{"lineNumber":360,"author":{"gitId":"spinoandraptos"},"content":" for (Task task : allTasks) {","lastModifiedDate":"2023-10-04"},{"lineNumber":361,"author":{"gitId":"spinoandraptos"},"content":" if(task.getTaskDescription().contains(keyword)){","lastModifiedDate":"2023-10-04"},{"lineNumber":362,"author":{"gitId":"spinoandraptos"},"content":" matchedTasks.add(task);","lastModifiedDate":"2023-10-04"},{"lineNumber":363,"author":{"gitId":"spinoandraptos"},"content":" printTask(task, true);","lastModifiedDate":"2023-10-04"},{"lineNumber":364,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":365,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":366,"author":{"gitId":"spinoandraptos"},"content":" if(matchedTasks.isEmpty()){","lastModifiedDate":"2023-10-04"},{"lineNumber":367,"author":{"gitId":"spinoandraptos"},"content":" System.out.println(\" No results found :\u003c Check your keyword is correct?\");","lastModifiedDate":"2023-10-04"},{"lineNumber":368,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":369,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":370,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":371,"author":{"gitId":"spinoandraptos"},"content":" /**","lastModifiedDate":"2023-10-04"},{"lineNumber":372,"author":{"gitId":"spinoandraptos"},"content":" * Search for tasks in the current task list using their date and time.","lastModifiedDate":"2023-10-04"},{"lineNumber":373,"author":{"gitId":"spinoandraptos"},"content":" *","lastModifiedDate":"2023-10-04"},{"lineNumber":374,"author":{"gitId":"spinoandraptos"},"content":" * @param dateTime Date and time used to search for matches.","lastModifiedDate":"2023-10-04"},{"lineNumber":375,"author":{"gitId":"spinoandraptos"},"content":" */","lastModifiedDate":"2023-10-04"},{"lineNumber":376,"author":{"gitId":"spinoandraptos"},"content":" public void searchListByTime(String dateTime){","lastModifiedDate":"2023-10-04"},{"lineNumber":377,"author":{"gitId":"spinoandraptos"},"content":" ArrayList\u003cTask\u003e matchedTasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-10-04"},{"lineNumber":378,"author":{"gitId":"spinoandraptos"},"content":" if(allTasks.isEmpty()){","lastModifiedDate":"2023-10-04"},{"lineNumber":379,"author":{"gitId":"spinoandraptos"},"content":" System.out.println(\" Task list is empty! Time to add some OWO\");","lastModifiedDate":"2023-10-04"},{"lineNumber":380,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":381,"author":{"gitId":"spinoandraptos"},"content":" else {","lastModifiedDate":"2023-10-04"},{"lineNumber":382,"author":{"gitId":"spinoandraptos"},"content":" System.out.println(\" Here are tasks that matched your search:\");","lastModifiedDate":"2023-10-04"},{"lineNumber":383,"author":{"gitId":"spinoandraptos"},"content":" for (Task task : allTasks) {","lastModifiedDate":"2023-10-04"},{"lineNumber":384,"author":{"gitId":"spinoandraptos"},"content":" if(task.getTaskTiming(true).contains(dateTime)){","lastModifiedDate":"2023-10-04"},{"lineNumber":385,"author":{"gitId":"spinoandraptos"},"content":" matchedTasks.add(task);","lastModifiedDate":"2023-10-04"},{"lineNumber":386,"author":{"gitId":"spinoandraptos"},"content":" printTask(task, true);","lastModifiedDate":"2023-10-04"},{"lineNumber":387,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":388,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":389,"author":{"gitId":"spinoandraptos"},"content":" if(matchedTasks.isEmpty()){","lastModifiedDate":"2023-10-04"},{"lineNumber":390,"author":{"gitId":"spinoandraptos"},"content":" System.out.println(\" No results found :\u003c Check your time format is in dd-MM-yyyy HH:mm?\");","lastModifiedDate":"2023-10-04"},{"lineNumber":391,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":392,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":393,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":394,"author":{"gitId":"spinoandraptos"},"content":" /**","lastModifiedDate":"2023-10-04"},{"lineNumber":395,"author":{"gitId":"spinoandraptos"},"content":" * Search for a task in the current task list.","lastModifiedDate":"2023-10-04"},{"lineNumber":396,"author":{"gitId":"spinoandraptos"},"content":" * Depending on user command, this method will search by","lastModifiedDate":"2023-10-04"},{"lineNumber":397,"author":{"gitId":"spinoandraptos"},"content":" * either description matches or time matches.","lastModifiedDate":"2023-10-04"},{"lineNumber":398,"author":{"gitId":"spinoandraptos"},"content":" *","lastModifiedDate":"2023-10-04"},{"lineNumber":399,"author":{"gitId":"spinoandraptos"},"content":" * @param input Full user command input.","lastModifiedDate":"2023-10-04"},{"lineNumber":400,"author":{"gitId":"spinoandraptos"},"content":" */","lastModifiedDate":"2023-10-04"},{"lineNumber":401,"author":{"gitId":"spinoandraptos"},"content":" public void searchList(String input){","lastModifiedDate":"2023-10-04"},{"lineNumber":402,"author":{"gitId":"spinoandraptos"},"content":" String[] searchDetails;","lastModifiedDate":"2023-10-04"},{"lineNumber":403,"author":{"gitId":"spinoandraptos"},"content":" String[] searchInfo;","lastModifiedDate":"2023-10-04"},{"lineNumber":404,"author":{"gitId":"spinoandraptos"},"content":" try {","lastModifiedDate":"2023-10-04"},{"lineNumber":405,"author":{"gitId":"spinoandraptos"},"content":" searchDetails \u003d input.split(\"find\")[1].strip().split(\"/\");","lastModifiedDate":"2023-10-04"},{"lineNumber":406,"author":{"gitId":"spinoandraptos"},"content":" searchInfo \u003d searchDetails[1].strip().split(\" \");","lastModifiedDate":"2023-10-04"},{"lineNumber":407,"author":{"gitId":"spinoandraptos"},"content":" } catch (ArrayIndexOutOfBoundsException incompleteCommand) {","lastModifiedDate":"2023-10-04"},{"lineNumber":408,"author":{"gitId":"spinoandraptos"},"content":" System.out.println(\" Ohnus! You did not indicate if you are searching by description or time :\u003c\");","lastModifiedDate":"2023-10-04"},{"lineNumber":409,"author":{"gitId":"spinoandraptos"},"content":" System.out.println(\" Pwease format your input as find /description [description] \" +","lastModifiedDate":"2023-10-04"},{"lineNumber":410,"author":{"gitId":"spinoandraptos"},"content":" \"or find /time [time]!\");","lastModifiedDate":"2023-10-04"},{"lineNumber":411,"author":{"gitId":"spinoandraptos"},"content":" return;","lastModifiedDate":"2023-10-04"},{"lineNumber":412,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":413,"author":{"gitId":"spinoandraptos"},"content":" try{","lastModifiedDate":"2023-10-04"},{"lineNumber":414,"author":{"gitId":"spinoandraptos"},"content":" String searchCriteria \u003d searchInfo[0].strip();","lastModifiedDate":"2023-10-04"},{"lineNumber":415,"author":{"gitId":"spinoandraptos"},"content":" String searchKeyword \u003d searchInfo[1].strip();","lastModifiedDate":"2023-10-04"},{"lineNumber":416,"author":{"gitId":"spinoandraptos"},"content":" switch (searchCriteria){","lastModifiedDate":"2023-10-04"},{"lineNumber":417,"author":{"gitId":"spinoandraptos"},"content":" case \"description\":","lastModifiedDate":"2023-10-04"},{"lineNumber":418,"author":{"gitId":"spinoandraptos"},"content":" searchListByDescription(searchKeyword);","lastModifiedDate":"2023-10-04"},{"lineNumber":419,"author":{"gitId":"spinoandraptos"},"content":" break;","lastModifiedDate":"2023-10-04"},{"lineNumber":420,"author":{"gitId":"spinoandraptos"},"content":" case \"time\":","lastModifiedDate":"2023-10-04"},{"lineNumber":421,"author":{"gitId":"spinoandraptos"},"content":" searchListByTime(searchKeyword);","lastModifiedDate":"2023-10-04"},{"lineNumber":422,"author":{"gitId":"spinoandraptos"},"content":" break;","lastModifiedDate":"2023-10-04"},{"lineNumber":423,"author":{"gitId":"spinoandraptos"},"content":" default:","lastModifiedDate":"2023-10-04"},{"lineNumber":424,"author":{"gitId":"spinoandraptos"},"content":" break;","lastModifiedDate":"2023-10-04"},{"lineNumber":425,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":426,"author":{"gitId":"spinoandraptos"},"content":" } catch (ArrayIndexOutOfBoundsException incompleteCommand) {","lastModifiedDate":"2023-10-04"},{"lineNumber":427,"author":{"gitId":"spinoandraptos"},"content":" System.out.println(\" Ohnus! You did not indicate the keywords you are searching by :\u003c\");","lastModifiedDate":"2023-10-04"},{"lineNumber":428,"author":{"gitId":"spinoandraptos"},"content":" System.out.println(\" Pwease format your input as find /description [description] \" +","lastModifiedDate":"2023-10-04"},{"lineNumber":429,"author":{"gitId":"spinoandraptos"},"content":" \"or find /time [time]!\");","lastModifiedDate":"2023-10-04"},{"lineNumber":430,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":431,"author":{"gitId":"spinoandraptos"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":432,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":433,"author":{"gitId":"spinoandraptos"},"content":" /**","lastModifiedDate":"2023-10-04"},{"lineNumber":434,"author":{"gitId":"spinoandraptos"},"content":" * Returns the size of current task list.","lastModifiedDate":"2023-10-04"},{"lineNumber":435,"author":{"gitId":"spinoandraptos"},"content":" */","lastModifiedDate":"2023-10-04"},{"lineNumber":436,"author":{"gitId":"spinoandraptos"},"content":" public int getTaskListSize(){","lastModifiedDate":"2023-10-04"},{"lineNumber":437,"author":{"gitId":"spinoandraptos"},"content":" return allTasks.size();","lastModifiedDate":"2023-10-04"},{"lineNumber":438,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":439,"author":{"gitId":"spinoandraptos"},"content":" /**","lastModifiedDate":"2023-10-04"},{"lineNumber":440,"author":{"gitId":"spinoandraptos"},"content":" * Returns a list of all tasks in the current task list.","lastModifiedDate":"2023-10-04"},{"lineNumber":441,"author":{"gitId":"spinoandraptos"},"content":" */","lastModifiedDate":"2023-10-04"},{"lineNumber":442,"author":{"gitId":"spinoandraptos"},"content":" public ArrayList\u003cTask\u003e getAllTasks(){","lastModifiedDate":"2023-10-04"},{"lineNumber":443,"author":{"gitId":"spinoandraptos"},"content":" return allTasks;","lastModifiedDate":"2023-10-04"},{"lineNumber":444,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":445,"author":{"gitId":"spinoandraptos"},"content":" /**","lastModifiedDate":"2023-10-04"},{"lineNumber":446,"author":{"gitId":"spinoandraptos"},"content":" * Creates a new empty task list.","lastModifiedDate":"2023-10-04"},{"lineNumber":447,"author":{"gitId":"spinoandraptos"},"content":" */","lastModifiedDate":"2023-10-04"},{"lineNumber":448,"author":{"gitId":"spinoandraptos"},"content":" public TaskList(){","lastModifiedDate":"2023-10-04"},{"lineNumber":449,"author":{"gitId":"spinoandraptos"},"content":" allTasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-10-04"},{"lineNumber":450,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":451,"author":{"gitId":"spinoandraptos"},"content":"}","lastModifiedDate":"2023-10-04"}],"authorContributionMap":{"spinoandraptos":451}},{"path":"src/main/java/rene/ui/Ui.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"spinoandraptos"},"content":"package rene.ui;","lastModifiedDate":"2023-10-04"},{"lineNumber":2,"author":{"gitId":"spinoandraptos"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":3,"author":{"gitId":"spinoandraptos"},"content":"import rene.storage.Storage;","lastModifiedDate":"2023-10-04"},{"lineNumber":4,"author":{"gitId":"spinoandraptos"},"content":"import rene.tasklist.TaskList;","lastModifiedDate":"2023-10-04"},{"lineNumber":5,"author":{"gitId":"spinoandraptos"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":6,"author":{"gitId":"spinoandraptos"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-10-04"},{"lineNumber":7,"author":{"gitId":"spinoandraptos"},"content":"/**","lastModifiedDate":"2023-10-04"},{"lineNumber":8,"author":{"gitId":"spinoandraptos"},"content":" * Represents the user interface for CLI displays.","lastModifiedDate":"2023-10-04"},{"lineNumber":9,"author":{"gitId":"spinoandraptos"},"content":" * Supports CLI interactions with users.","lastModifiedDate":"2023-10-04"},{"lineNumber":10,"author":{"gitId":"spinoandraptos"},"content":" */","lastModifiedDate":"2023-10-04"},{"lineNumber":11,"author":{"gitId":"spinoandraptos"},"content":"public class Ui {","lastModifiedDate":"2023-10-04"},{"lineNumber":12,"author":{"gitId":"spinoandraptos"},"content":" private final Scanner input \u003d new Scanner(System.in); // Create a Scanner object","lastModifiedDate":"2023-10-04"},{"lineNumber":13,"author":{"gitId":"spinoandraptos"},"content":" private Storage dataStorage;","lastModifiedDate":"2023-10-04"},{"lineNumber":14,"author":{"gitId":"spinoandraptos"},"content":" private TaskList tasks;","lastModifiedDate":"2023-10-04"},{"lineNumber":15,"author":{"gitId":"spinoandraptos"},"content":" /**","lastModifiedDate":"2023-10-04"},{"lineNumber":16,"author":{"gitId":"spinoandraptos"},"content":" * Print out separating line in CLI to mark","lastModifiedDate":"2023-10-04"},{"lineNumber":17,"author":{"gitId":"spinoandraptos"},"content":" * start and end of chatbot replies.","lastModifiedDate":"2023-10-04"},{"lineNumber":18,"author":{"gitId":"spinoandraptos"},"content":" */","lastModifiedDate":"2023-10-04"},{"lineNumber":19,"author":{"gitId":"spinoandraptos"},"content":" public void showLine(){","lastModifiedDate":"2023-10-04"},{"lineNumber":20,"author":{"gitId":"spinoandraptos"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2023-10-04"},{"lineNumber":21,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":22,"author":{"gitId":"spinoandraptos"},"content":" /**","lastModifiedDate":"2023-10-04"},{"lineNumber":23,"author":{"gitId":"spinoandraptos"},"content":" * Displays opening message to welcome users","lastModifiedDate":"2023-10-04"},{"lineNumber":24,"author":{"gitId":"spinoandraptos"},"content":" * on the launch of chatbot.","lastModifiedDate":"2023-10-04"},{"lineNumber":25,"author":{"gitId":"spinoandraptos"},"content":" */","lastModifiedDate":"2023-10-04"},{"lineNumber":26,"author":{"gitId":"spinoandraptos"},"content":" public void displayOpeningMessage(){","lastModifiedDate":"2023-10-04"},{"lineNumber":27,"author":{"gitId":"spinoandraptos"},"content":" String logo \u003d \" _____ \\n\"","lastModifiedDate":"2023-10-04"},{"lineNumber":28,"author":{"gitId":"spinoandraptos"},"content":" + \" | __ \\\\ ____ __ _ ____ \\n\"","lastModifiedDate":"2023-10-04"},{"lineNumber":29,"author":{"gitId":"spinoandraptos"},"content":" + \" | |__ | / _ \\\\| \\\\| |/ _ \\\\\\n\"","lastModifiedDate":"2023-10-04"},{"lineNumber":30,"author":{"gitId":"spinoandraptos"},"content":" + \" | | \\\\ \\\\| ___/| \\\\ | | ___/\\n\"","lastModifiedDate":"2023-10-04"},{"lineNumber":31,"author":{"gitId":"spinoandraptos"},"content":" + \" |_| \\\\_\\\\\\\\____| |_|\\\\__|\\\\____|\\n\";","lastModifiedDate":"2023-10-04"},{"lineNumber":32,"author":{"gitId":"spinoandraptos"},"content":" System.out.println(\" Hello from\\n\" + logo);","lastModifiedDate":"2023-10-04"},{"lineNumber":33,"author":{"gitId":"spinoandraptos"},"content":" showLine();","lastModifiedDate":"2023-10-04"},{"lineNumber":34,"author":{"gitId":"spinoandraptos"},"content":" System.out.println(\" I am Rene Kokoro!\");","lastModifiedDate":"2023-10-04"},{"lineNumber":35,"author":{"gitId":"spinoandraptos"},"content":" System.out.println(\" Let me record your tasks!! *blushes*\");","lastModifiedDate":"2023-10-04"},{"lineNumber":36,"author":{"gitId":"spinoandraptos"},"content":" System.out.println();","lastModifiedDate":"2023-10-04"},{"lineNumber":37,"author":{"gitId":"spinoandraptos"},"content":" dataStorage.loadData(tasks);","lastModifiedDate":"2023-10-04"},{"lineNumber":38,"author":{"gitId":"spinoandraptos"},"content":" showLine();","lastModifiedDate":"2023-10-04"},{"lineNumber":39,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":40,"author":{"gitId":"spinoandraptos"},"content":" /**","lastModifiedDate":"2023-10-04"},{"lineNumber":41,"author":{"gitId":"spinoandraptos"},"content":" * Retrieves the CLI input from the user","lastModifiedDate":"2023-10-04"},{"lineNumber":42,"author":{"gitId":"spinoandraptos"},"content":" * and documents it as a String object.","lastModifiedDate":"2023-10-04"},{"lineNumber":43,"author":{"gitId":"spinoandraptos"},"content":" */","lastModifiedDate":"2023-10-04"},{"lineNumber":44,"author":{"gitId":"spinoandraptos"},"content":" public String readCommand() {","lastModifiedDate":"2023-10-04"},{"lineNumber":45,"author":{"gitId":"spinoandraptos"},"content":" return input.nextLine();","lastModifiedDate":"2023-10-04"},{"lineNumber":46,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":47,"author":{"gitId":"spinoandraptos"},"content":" /**","lastModifiedDate":"2023-10-04"},{"lineNumber":48,"author":{"gitId":"spinoandraptos"},"content":" * Displays closing message on exiting the chatbot.","lastModifiedDate":"2023-10-04"},{"lineNumber":49,"author":{"gitId":"spinoandraptos"},"content":" */","lastModifiedDate":"2023-10-04"},{"lineNumber":50,"author":{"gitId":"spinoandraptos"},"content":" public void displayClosingMessage(){","lastModifiedDate":"2023-10-04"},{"lineNumber":51,"author":{"gitId":"spinoandraptos"},"content":" dataStorage.updateData(tasks);","lastModifiedDate":"2023-10-04"},{"lineNumber":52,"author":{"gitId":"spinoandraptos"},"content":" System.out.println(\" Aww you are leaving? *sniffs*\");","lastModifiedDate":"2023-10-04"},{"lineNumber":53,"author":{"gitId":"spinoandraptos"},"content":" System.out.println(\" Well... hope to see you again soon!\");","lastModifiedDate":"2023-10-04"},{"lineNumber":54,"author":{"gitId":"spinoandraptos"},"content":" showLine();","lastModifiedDate":"2023-10-04"},{"lineNumber":55,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":56,"author":{"gitId":"spinoandraptos"},"content":" /**","lastModifiedDate":"2023-10-04"},{"lineNumber":57,"author":{"gitId":"spinoandraptos"},"content":" * Sets up the bridging between the UI and tasks data.","lastModifiedDate":"2023-10-04"},{"lineNumber":58,"author":{"gitId":"spinoandraptos"},"content":" *","lastModifiedDate":"2023-10-04"},{"lineNumber":59,"author":{"gitId":"spinoandraptos"},"content":" * @param tasks A record of all tasks documented that is built on program start and disposed on program exit.","lastModifiedDate":"2023-10-04"},{"lineNumber":60,"author":{"gitId":"spinoandraptos"},"content":" * @param dataStorage The hard disk record of all tasks documented that persists even on program exit.","lastModifiedDate":"2023-10-04"},{"lineNumber":61,"author":{"gitId":"spinoandraptos"},"content":" */","lastModifiedDate":"2023-10-04"},{"lineNumber":62,"author":{"gitId":"spinoandraptos"},"content":" public Ui(Storage dataStorage, TaskList tasks){","lastModifiedDate":"2023-10-04"},{"lineNumber":63,"author":{"gitId":"spinoandraptos"},"content":" this.dataStorage \u003d dataStorage;","lastModifiedDate":"2023-10-04"},{"lineNumber":64,"author":{"gitId":"spinoandraptos"},"content":" this.tasks \u003d tasks;","lastModifiedDate":"2023-10-04"},{"lineNumber":65,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":66,"author":{"gitId":"spinoandraptos"},"content":"}","lastModifiedDate":"2023-10-04"},{"lineNumber":67,"author":{"gitId":"spinoandraptos"},"content":"","lastModifiedDate":"2023-10-04"}],"authorContributionMap":{"spinoandraptos":67}}] +[{"path":"README.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"yeo-menghan"},"content":"# QuizHub project template","lastModifiedDate":"2023-10-04"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"This is a project template for a greenfield Java project. It\u0027s named after the Java mascot _Duke_. Given below are instructions on how to use it.","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"## Setting up in Intellij","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"Prerequisites: JDK 11 (use the exact version), update Intellij to the most recent version.","lastModifiedDate":"2020-05-24"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":"1. **Ensure Intellij JDK 11 is defined as an SDK**, as described [here](https://www.jetbrains.com/help/idea/sdk.html#set-up-jdk) -- this step is not needed if you have used JDK 11 in a previous Intellij project.","lastModifiedDate":"2020-05-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":"1. **Import the project _as a Gradle project_**, as described [here](https://se-education.org/guides/tutorials/intellijImportGradleProject.html).","lastModifiedDate":"2020-05-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":"1. **Verify the set up**: After the importing is complete, locate the `src/main/java/seedu/duke/Duke.java` file, right-click it, and choose `Run Duke.main()`. If the setup is correct, you should see something like the below:","lastModifiedDate":"2020-05-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":" \u003e Task :compileJava","lastModifiedDate":"2020-05-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":" \u003e Task :processResources NO-SOURCE","lastModifiedDate":"2020-05-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003e Task :classes","lastModifiedDate":"2020-05-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":" ","lastModifiedDate":"2020-05-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003e Task :Duke.main()","lastModifiedDate":"2020-05-24"},{"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-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":" What is your name?","lastModifiedDate":"2020-05-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" Type some word and press enter to let the execution proceed to the end.","lastModifiedDate":"2020-05-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":"## Build automation using Gradle","lastModifiedDate":"2020-05-24"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-24"},{"lineNumber":31,"author":{"gitId":"-"},"content":"* This project uses Gradle for build automation and dependency management. It includes a basic build script as well (i.e. the `build.gradle` file).","lastModifiedDate":"2020-05-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":"* If you are new to Gradle, refer to the [Gradle Tutorial at se-education.org/guides](https://se-education.org/guides/tutorials/gradle.html).","lastModifiedDate":"2020-05-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":"## Testing","lastModifiedDate":"2020-05-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":"### I/O redirection tests","lastModifiedDate":"2020-05-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":"* To run _I/O redirection_ tests (aka _Text UI tests_), navigate to the `text-ui-test` and run the `runtest(.bat/.sh)` script.","lastModifiedDate":"2020-05-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":"### JUnit tests","lastModifiedDate":"2020-05-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":"* A skeleton JUnit test (`src/test/java/seedu/duke/DukeTest.java`) is provided with this project template. ","lastModifiedDate":"2020-05-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":"* If you are new to JUnit, refer to the [JUnit Tutorial at se-education.org/guides](https://se-education.org/guides/tutorials/junit.html).","lastModifiedDate":"2020-05-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-24"},{"lineNumber":45,"author":{"gitId":"-"},"content":"## Checkstyle","lastModifiedDate":"2020-05-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":"* A sample CheckStyle rule configuration is provided in this project.","lastModifiedDate":"2020-05-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":"* If you are new to Checkstyle, refer to the [Checkstyle Tutorial at se-education.org/guides](https://se-education.org/guides/tutorials/checkstyle.html).","lastModifiedDate":"2020-05-24"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-24"},{"lineNumber":50,"author":{"gitId":"-"},"content":"## CI using GitHub Actions","lastModifiedDate":"2020-05-24"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-24"},{"lineNumber":52,"author":{"gitId":"-"},"content":"The project uses [GitHub actions](https://github.com/features/actions) for CI. When you push a commit to this repo or PR against it, GitHub actions will run automatically to build and verify the code as updated by the commit/PR.","lastModifiedDate":"2020-05-24"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-24"},{"lineNumber":54,"author":{"gitId":"-"},"content":"## Documentation","lastModifiedDate":"2020-05-24"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-24"},{"lineNumber":56,"author":{"gitId":"-"},"content":"`/docs` folder contains a skeleton version of the project documentation.","lastModifiedDate":"2020-05-24"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-24"},{"lineNumber":58,"author":{"gitId":"-"},"content":"Steps for publishing documentation to the public: ","lastModifiedDate":"2020-05-24"},{"lineNumber":59,"author":{"gitId":"-"},"content":"1. If you are using this project template for an individual project, go your fork on GitHub.\u003cbr\u003e","lastModifiedDate":"2020-05-24"},{"lineNumber":60,"author":{"gitId":"-"},"content":" If you are using this project template for a team project, go to the team fork on GitHub.","lastModifiedDate":"2020-05-24"},{"lineNumber":61,"author":{"gitId":"-"},"content":"1. Click on the `settings` tab.","lastModifiedDate":"2020-05-24"},{"lineNumber":62,"author":{"gitId":"-"},"content":"1. Scroll down to the `GitHub Pages` section.","lastModifiedDate":"2020-05-24"},{"lineNumber":63,"author":{"gitId":"-"},"content":"1. Set the `source` as `master branch /docs folder`.","lastModifiedDate":"2020-05-24"},{"lineNumber":64,"author":{"gitId":"-"},"content":"1. Optionally, use the `choose a theme` button to choose a theme for your documentation.","lastModifiedDate":"2020-05-24"}],"authorContributionMap":{"yeo-menghan":1,"-":63}},{"path":"docs/AboutUs.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"# About us","lastModifiedDate":"2020-05-24"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"Display | Name | Github Profile | Portfolio ","lastModifiedDate":"2020-05-24"},{"lineNumber":4,"author":{"gitId":"lisizhuang-0121"},"content":"--------|:--------------:|:--------------------------------------------:|:---------:","lastModifiedDate":"2023-10-04"},{"lineNumber":5,"author":{"gitId":"James-Hong-Jey"},"content":"![](https://www.comp.nus.edu.sg/~stevenha/images/sh7.jpg) | James Hong Jey | [Github](https://github.com/James-Hong-Jey) | [Portfolio](docs/team/jameshong.md)","lastModifiedDate":"2023-10-04"},{"lineNumber":6,"author":{"gitId":"StevenGX12"},"content":"![](https://via.placeholder.com/100.png?text\u003dPhoto) | Guan Xiao | [Github](https://github.com/StevenGX12) | [Portfolio](docs/team/guanxiao.md)","lastModifiedDate":"2023-10-04"},{"lineNumber":7,"author":{"gitId":"spinoandraptos"},"content":"![](https://avatars.githubusercontent.com/u/111041948?s\u003d400\u0026u\u003d6619a8328eba45edbc88fe01cf54efeb1f986d11\u0026v\u003d4) | Man Juncheng | [Github](https://github.com/spinoandraptos) | [Portfolio](docs/team/juncheng.md)","lastModifiedDate":"2023-10-04"},{"lineNumber":8,"author":{"gitId":"lisizhuang-0121"},"content":"![](https://i.redd.it/6do158vk2ue61.png) | Li Sizhuang | [Github](https://github.com/lisizhuang-0121) | [Portfolio](docs/team/johndoe.md)","lastModifiedDate":"2023-10-04"},{"lineNumber":9,"author":{"gitId":"yeo-menghan"},"content":"![](https://via.placeholder.com/100.png?text\u003dPhoto) | Yeo Meng Han | [Github](https://github.com/yeo-menghan) | [Portfolio](https://linkedin.com/in/yeo-meng-han/)","lastModifiedDate":"2023-10-04"}],"authorContributionMap":{"spinoandraptos":1,"StevenGX12":1,"James-Hong-Jey":1,"yeo-menghan":1,"lisizhuang-0121":2,"-":3}},{"path":"src/main/java/Duke.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"spinoandraptos"},"content":"import rene.command.Command;","lastModifiedDate":"2023-10-04"},{"lineNumber":2,"author":{"gitId":"spinoandraptos"},"content":"import rene.parser.Parser;","lastModifiedDate":"2023-10-04"},{"lineNumber":3,"author":{"gitId":"spinoandraptos"},"content":"import rene.tasklist.TaskList;","lastModifiedDate":"2023-10-04"},{"lineNumber":4,"author":{"gitId":"spinoandraptos"},"content":"import rene.ui.Ui;","lastModifiedDate":"2023-10-04"},{"lineNumber":5,"author":{"gitId":"spinoandraptos"},"content":"import rene.storage.Storage;","lastModifiedDate":"2023-10-04"},{"lineNumber":6,"author":{"gitId":"spinoandraptos"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":7,"author":{"gitId":"spinoandraptos"},"content":"/**","lastModifiedDate":"2023-10-04"},{"lineNumber":8,"author":{"gitId":"spinoandraptos"},"content":" * The main program running for the Duke chatbot.","lastModifiedDate":"2023-10-04"},{"lineNumber":9,"author":{"gitId":"spinoandraptos"},"content":" * The program bridges the user interface (Ui),","lastModifiedDate":"2023-10-04"},{"lineNumber":10,"author":{"gitId":"spinoandraptos"},"content":" * hard disk data (dataStorage) and supports","lastModifiedDate":"2023-10-04"},{"lineNumber":11,"author":{"gitId":"spinoandraptos"},"content":" * dynamic data manipulation.","lastModifiedDate":"2023-10-04"},{"lineNumber":12,"author":{"gitId":"spinoandraptos"},"content":" */","lastModifiedDate":"2023-10-04"},{"lineNumber":13,"author":{"gitId":"spinoandraptos"},"content":"public class Duke {","lastModifiedDate":"2023-10-04"},{"lineNumber":14,"author":{"gitId":"spinoandraptos"},"content":" private Ui ui;","lastModifiedDate":"2023-10-04"},{"lineNumber":15,"author":{"gitId":"spinoandraptos"},"content":" private Storage dataStorage;","lastModifiedDate":"2023-10-04"},{"lineNumber":16,"author":{"gitId":"spinoandraptos"},"content":" private TaskList tasks;","lastModifiedDate":"2023-10-04"},{"lineNumber":17,"author":{"gitId":"spinoandraptos"},"content":" private Parser parser;","lastModifiedDate":"2023-10-04"},{"lineNumber":18,"author":{"gitId":"spinoandraptos"},"content":" /**","lastModifiedDate":"2023-10-04"},{"lineNumber":19,"author":{"gitId":"spinoandraptos"},"content":" * Initiates the program with the necessary components.","lastModifiedDate":"2023-10-04"},{"lineNumber":20,"author":{"gitId":"spinoandraptos"},"content":" *","lastModifiedDate":"2023-10-04"},{"lineNumber":21,"author":{"gitId":"spinoandraptos"},"content":" * @param filePath File location where data is","lastModifiedDate":"2023-10-04"},{"lineNumber":22,"author":{"gitId":"spinoandraptos"},"content":" * written to and read from by the program.","lastModifiedDate":"2023-10-04"},{"lineNumber":23,"author":{"gitId":"spinoandraptos"},"content":" */","lastModifiedDate":"2023-10-04"},{"lineNumber":24,"author":{"gitId":"spinoandraptos"},"content":" public Duke(String filePath){","lastModifiedDate":"2023-10-04"},{"lineNumber":25,"author":{"gitId":"spinoandraptos"},"content":" dataStorage \u003d new Storage(filePath);","lastModifiedDate":"2023-10-04"},{"lineNumber":26,"author":{"gitId":"spinoandraptos"},"content":" tasks \u003d new TaskList();","lastModifiedDate":"2023-10-04"},{"lineNumber":27,"author":{"gitId":"spinoandraptos"},"content":" ui \u003d new Ui(dataStorage, tasks);","lastModifiedDate":"2023-10-04"},{"lineNumber":28,"author":{"gitId":"spinoandraptos"},"content":" parser \u003d new Parser();","lastModifiedDate":"2023-10-04"},{"lineNumber":29,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":30,"author":{"gitId":"spinoandraptos"},"content":" /**","lastModifiedDate":"2023-10-04"},{"lineNumber":31,"author":{"gitId":"spinoandraptos"},"content":" * Starts the chatbot by showing opening message.","lastModifiedDate":"2023-10-04"},{"lineNumber":32,"author":{"gitId":"spinoandraptos"},"content":" * Chatbot repeatedly handles user commands","lastModifiedDate":"2023-10-04"},{"lineNumber":33,"author":{"gitId":"spinoandraptos"},"content":" * until it is requested to terminate.","lastModifiedDate":"2023-10-04"},{"lineNumber":34,"author":{"gitId":"spinoandraptos"},"content":" * Chatbot closes by showing closing message.","lastModifiedDate":"2023-10-04"},{"lineNumber":35,"author":{"gitId":"spinoandraptos"},"content":" */","lastModifiedDate":"2023-10-04"},{"lineNumber":36,"author":{"gitId":"spinoandraptos"},"content":" public void run(){","lastModifiedDate":"2023-10-04"},{"lineNumber":37,"author":{"gitId":"spinoandraptos"},"content":" ui.displayOpeningMessage();","lastModifiedDate":"2023-10-04"},{"lineNumber":38,"author":{"gitId":"spinoandraptos"},"content":" boolean toExit \u003d false;","lastModifiedDate":"2023-10-04"},{"lineNumber":39,"author":{"gitId":"spinoandraptos"},"content":" while(!toExit){","lastModifiedDate":"2023-10-04"},{"lineNumber":40,"author":{"gitId":"spinoandraptos"},"content":" String fullCommand \u003d ui.readCommand();","lastModifiedDate":"2023-10-04"},{"lineNumber":41,"author":{"gitId":"spinoandraptos"},"content":" ui.showLine();","lastModifiedDate":"2023-10-04"},{"lineNumber":42,"author":{"gitId":"spinoandraptos"},"content":" Command command \u003d parser.parseCommand(fullCommand);","lastModifiedDate":"2023-10-04"},{"lineNumber":43,"author":{"gitId":"spinoandraptos"},"content":" toExit \u003d command.toExit();","lastModifiedDate":"2023-10-04"},{"lineNumber":44,"author":{"gitId":"spinoandraptos"},"content":" command.executeCommand(ui, dataStorage, tasks);","lastModifiedDate":"2023-10-04"},{"lineNumber":45,"author":{"gitId":"spinoandraptos"},"content":" if(!toExit){","lastModifiedDate":"2023-10-04"},{"lineNumber":46,"author":{"gitId":"spinoandraptos"},"content":" ui.showLine();","lastModifiedDate":"2023-10-04"},{"lineNumber":47,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":48,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":49,"author":{"gitId":"spinoandraptos"},"content":" ui.displayClosingMessage();","lastModifiedDate":"2023-10-04"},{"lineNumber":50,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":51,"author":{"gitId":"spinoandraptos"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":52,"author":{"gitId":"spinoandraptos"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-10-04"},{"lineNumber":53,"author":{"gitId":"spinoandraptos"},"content":" new Duke(\"tasklist.txt\").run();","lastModifiedDate":"2023-10-04"},{"lineNumber":54,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":55,"author":{"gitId":"spinoandraptos"},"content":"}","lastModifiedDate":"2023-10-04"}],"authorContributionMap":{"spinoandraptos":55}},{"path":"src/main/java/rene/command/Command.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"spinoandraptos"},"content":"package rene.command;","lastModifiedDate":"2023-10-04"},{"lineNumber":2,"author":{"gitId":"spinoandraptos"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":3,"author":{"gitId":"spinoandraptos"},"content":"import rene.storage.Storage;","lastModifiedDate":"2023-10-04"},{"lineNumber":4,"author":{"gitId":"spinoandraptos"},"content":"import rene.tasklist.TaskList;","lastModifiedDate":"2023-10-04"},{"lineNumber":5,"author":{"gitId":"spinoandraptos"},"content":"import rene.ui.Ui;","lastModifiedDate":"2023-10-04"},{"lineNumber":6,"author":{"gitId":"spinoandraptos"},"content":"/**","lastModifiedDate":"2023-10-04"},{"lineNumber":7,"author":{"gitId":"spinoandraptos"},"content":" * Represents a user command to execute an action.","lastModifiedDate":"2023-10-04"},{"lineNumber":8,"author":{"gitId":"spinoandraptos"},"content":" */","lastModifiedDate":"2023-10-04"},{"lineNumber":9,"author":{"gitId":"spinoandraptos"},"content":"public class Command {","lastModifiedDate":"2023-10-04"},{"lineNumber":10,"author":{"gitId":"spinoandraptos"},"content":" public enum CommandType {TODO, DEADLINE, EVENT, DELETE, LIST, MARK, UNMARK, FIND, EXIT};","lastModifiedDate":"2023-10-04"},{"lineNumber":11,"author":{"gitId":"spinoandraptos"},"content":" private CommandType commandType;","lastModifiedDate":"2023-10-04"},{"lineNumber":12,"author":{"gitId":"spinoandraptos"},"content":" /**","lastModifiedDate":"2023-10-04"},{"lineNumber":13,"author":{"gitId":"spinoandraptos"},"content":" * Creates a new blank command.","lastModifiedDate":"2023-10-04"},{"lineNumber":14,"author":{"gitId":"spinoandraptos"},"content":" */","lastModifiedDate":"2023-10-04"},{"lineNumber":15,"author":{"gitId":"spinoandraptos"},"content":" public Command(){}","lastModifiedDate":"2023-10-04"},{"lineNumber":16,"author":{"gitId":"spinoandraptos"},"content":" /**","lastModifiedDate":"2023-10-04"},{"lineNumber":17,"author":{"gitId":"spinoandraptos"},"content":" * Creates a new command of given type.","lastModifiedDate":"2023-10-04"},{"lineNumber":18,"author":{"gitId":"spinoandraptos"},"content":" *","lastModifiedDate":"2023-10-04"},{"lineNumber":19,"author":{"gitId":"spinoandraptos"},"content":" * @param commandType Type of command.","lastModifiedDate":"2023-10-04"},{"lineNumber":20,"author":{"gitId":"spinoandraptos"},"content":" */","lastModifiedDate":"2023-10-04"},{"lineNumber":21,"author":{"gitId":"spinoandraptos"},"content":" public Command(CommandType commandType){","lastModifiedDate":"2023-10-04"},{"lineNumber":22,"author":{"gitId":"spinoandraptos"},"content":" this.commandType \u003d commandType;","lastModifiedDate":"2023-10-04"},{"lineNumber":23,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":24,"author":{"gitId":"spinoandraptos"},"content":" /**","lastModifiedDate":"2023-10-04"},{"lineNumber":25,"author":{"gitId":"spinoandraptos"},"content":" * Performs an action according to command.","lastModifiedDate":"2023-10-04"},{"lineNumber":26,"author":{"gitId":"spinoandraptos"},"content":" *","lastModifiedDate":"2023-10-04"},{"lineNumber":27,"author":{"gitId":"spinoandraptos"},"content":" * @param ui User interface for interactions with user through CLI.","lastModifiedDate":"2023-10-04"},{"lineNumber":28,"author":{"gitId":"spinoandraptos"},"content":" * @param tasks Current task list in the program.","lastModifiedDate":"2023-10-04"},{"lineNumber":29,"author":{"gitId":"spinoandraptos"},"content":" * @param dataStorage Hard disk storage for storing task data.","lastModifiedDate":"2023-10-04"},{"lineNumber":30,"author":{"gitId":"spinoandraptos"},"content":" */","lastModifiedDate":"2023-10-04"},{"lineNumber":31,"author":{"gitId":"spinoandraptos"},"content":" public void executeCommand(Ui ui, Storage dataStorage, TaskList tasks){}","lastModifiedDate":"2023-10-04"},{"lineNumber":32,"author":{"gitId":"spinoandraptos"},"content":" /**","lastModifiedDate":"2023-10-04"},{"lineNumber":33,"author":{"gitId":"spinoandraptos"},"content":" * Checks if the latest command calls for program termination.","lastModifiedDate":"2023-10-04"},{"lineNumber":34,"author":{"gitId":"spinoandraptos"},"content":" */","lastModifiedDate":"2023-10-04"},{"lineNumber":35,"author":{"gitId":"spinoandraptos"},"content":" public boolean toExit(){","lastModifiedDate":"2023-10-04"},{"lineNumber":36,"author":{"gitId":"spinoandraptos"},"content":" return commandType \u003d\u003d CommandType.EXIT;","lastModifiedDate":"2023-10-04"},{"lineNumber":37,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":38,"author":{"gitId":"spinoandraptos"},"content":"}","lastModifiedDate":"2023-10-04"}],"authorContributionMap":{"spinoandraptos":38}},{"path":"src/main/java/rene/command/CommandDeadline.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"spinoandraptos"},"content":"package rene.command;","lastModifiedDate":"2023-10-04"},{"lineNumber":2,"author":{"gitId":"spinoandraptos"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":3,"author":{"gitId":"spinoandraptos"},"content":"import rene.storage.Storage;","lastModifiedDate":"2023-10-04"},{"lineNumber":4,"author":{"gitId":"spinoandraptos"},"content":"import rene.task.Task;","lastModifiedDate":"2023-10-04"},{"lineNumber":5,"author":{"gitId":"spinoandraptos"},"content":"import rene.tasklist.TaskList;","lastModifiedDate":"2023-10-04"},{"lineNumber":6,"author":{"gitId":"spinoandraptos"},"content":"import rene.ui.Ui;","lastModifiedDate":"2023-10-04"},{"lineNumber":7,"author":{"gitId":"spinoandraptos"},"content":"/**","lastModifiedDate":"2023-10-04"},{"lineNumber":8,"author":{"gitId":"spinoandraptos"},"content":" * Represents a command to add a deadline task.","lastModifiedDate":"2023-10-04"},{"lineNumber":9,"author":{"gitId":"spinoandraptos"},"content":" */","lastModifiedDate":"2023-10-04"},{"lineNumber":10,"author":{"gitId":"spinoandraptos"},"content":"public class CommandDeadline extends Command {","lastModifiedDate":"2023-10-04"},{"lineNumber":11,"author":{"gitId":"spinoandraptos"},"content":" private String userInput;","lastModifiedDate":"2023-10-04"},{"lineNumber":12,"author":{"gitId":"spinoandraptos"},"content":" /**","lastModifiedDate":"2023-10-04"},{"lineNumber":13,"author":{"gitId":"spinoandraptos"},"content":" * Creates a new deadline command to add a deadline task.","lastModifiedDate":"2023-10-04"},{"lineNumber":14,"author":{"gitId":"spinoandraptos"},"content":" *","lastModifiedDate":"2023-10-04"},{"lineNumber":15,"author":{"gitId":"spinoandraptos"},"content":" * @param userInput User input containing details of the deadline task.","lastModifiedDate":"2023-10-04"},{"lineNumber":16,"author":{"gitId":"spinoandraptos"},"content":" */","lastModifiedDate":"2023-10-04"},{"lineNumber":17,"author":{"gitId":"spinoandraptos"},"content":" public CommandDeadline(String userInput){","lastModifiedDate":"2023-10-04"},{"lineNumber":18,"author":{"gitId":"spinoandraptos"},"content":" super(CommandType.DEADLINE);","lastModifiedDate":"2023-10-04"},{"lineNumber":19,"author":{"gitId":"spinoandraptos"},"content":" this.userInput \u003d userInput;","lastModifiedDate":"2023-10-04"},{"lineNumber":20,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":21,"author":{"gitId":"spinoandraptos"},"content":" /**","lastModifiedDate":"2023-10-04"},{"lineNumber":22,"author":{"gitId":"spinoandraptos"},"content":" * Adds the deadline task and updates storage data.","lastModifiedDate":"2023-10-04"},{"lineNumber":23,"author":{"gitId":"spinoandraptos"},"content":" *","lastModifiedDate":"2023-10-04"},{"lineNumber":24,"author":{"gitId":"spinoandraptos"},"content":" * @param ui User interface for interactions with user through CLI.","lastModifiedDate":"2023-10-04"},{"lineNumber":25,"author":{"gitId":"spinoandraptos"},"content":" * @param tasks Current task list in the program.","lastModifiedDate":"2023-10-04"},{"lineNumber":26,"author":{"gitId":"spinoandraptos"},"content":" * @param dataStorage Hard disk storage for storing task data.","lastModifiedDate":"2023-10-04"},{"lineNumber":27,"author":{"gitId":"spinoandraptos"},"content":" */","lastModifiedDate":"2023-10-04"},{"lineNumber":28,"author":{"gitId":"spinoandraptos"},"content":" @Override","lastModifiedDate":"2023-10-04"},{"lineNumber":29,"author":{"gitId":"spinoandraptos"},"content":" public void executeCommand(Ui ui, Storage dataStorage, TaskList tasks){","lastModifiedDate":"2023-10-04"},{"lineNumber":30,"author":{"gitId":"spinoandraptos"},"content":" tasks.addToTaskList(userInput, Task.TaskType.DEADLINE, true);","lastModifiedDate":"2023-10-04"},{"lineNumber":31,"author":{"gitId":"spinoandraptos"},"content":" dataStorage.updateData(tasks);","lastModifiedDate":"2023-10-04"},{"lineNumber":32,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":33,"author":{"gitId":"spinoandraptos"},"content":"}","lastModifiedDate":"2023-10-04"}],"authorContributionMap":{"spinoandraptos":33}},{"path":"src/main/java/rene/command/CommandDelete.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"spinoandraptos"},"content":"package rene.command;","lastModifiedDate":"2023-10-04"},{"lineNumber":2,"author":{"gitId":"spinoandraptos"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":3,"author":{"gitId":"spinoandraptos"},"content":"import rene.storage.Storage;","lastModifiedDate":"2023-10-04"},{"lineNumber":4,"author":{"gitId":"spinoandraptos"},"content":"import rene.tasklist.TaskList;","lastModifiedDate":"2023-10-04"},{"lineNumber":5,"author":{"gitId":"spinoandraptos"},"content":"import rene.ui.Ui;","lastModifiedDate":"2023-10-04"},{"lineNumber":6,"author":{"gitId":"spinoandraptos"},"content":"/**","lastModifiedDate":"2023-10-04"},{"lineNumber":7,"author":{"gitId":"spinoandraptos"},"content":" * Represents a command to delete a task.","lastModifiedDate":"2023-10-04"},{"lineNumber":8,"author":{"gitId":"spinoandraptos"},"content":" */","lastModifiedDate":"2023-10-04"},{"lineNumber":9,"author":{"gitId":"spinoandraptos"},"content":"public class CommandDelete extends Command {","lastModifiedDate":"2023-10-04"},{"lineNumber":10,"author":{"gitId":"spinoandraptos"},"content":" private int taskIndex;","lastModifiedDate":"2023-10-04"},{"lineNumber":11,"author":{"gitId":"spinoandraptos"},"content":" /**","lastModifiedDate":"2023-10-04"},{"lineNumber":12,"author":{"gitId":"spinoandraptos"},"content":" * Creates a new delete command for a task of specified index.","lastModifiedDate":"2023-10-04"},{"lineNumber":13,"author":{"gitId":"spinoandraptos"},"content":" *","lastModifiedDate":"2023-10-04"},{"lineNumber":14,"author":{"gitId":"spinoandraptos"},"content":" * @param taskIndex Index of the task to be deleted.","lastModifiedDate":"2023-10-04"},{"lineNumber":15,"author":{"gitId":"spinoandraptos"},"content":" */","lastModifiedDate":"2023-10-04"},{"lineNumber":16,"author":{"gitId":"spinoandraptos"},"content":" public CommandDelete(int taskIndex){","lastModifiedDate":"2023-10-04"},{"lineNumber":17,"author":{"gitId":"spinoandraptos"},"content":" super(CommandType.DELETE);","lastModifiedDate":"2023-10-04"},{"lineNumber":18,"author":{"gitId":"spinoandraptos"},"content":" this.taskIndex \u003d taskIndex;","lastModifiedDate":"2023-10-04"},{"lineNumber":19,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":20,"author":{"gitId":"spinoandraptos"},"content":" /**","lastModifiedDate":"2023-10-04"},{"lineNumber":21,"author":{"gitId":"spinoandraptos"},"content":" * Checks if specified task exists.","lastModifiedDate":"2023-10-04"},{"lineNumber":22,"author":{"gitId":"spinoandraptos"},"content":" * Deletes the specified task and updates storage data.","lastModifiedDate":"2023-10-04"},{"lineNumber":23,"author":{"gitId":"spinoandraptos"},"content":" *","lastModifiedDate":"2023-10-04"},{"lineNumber":24,"author":{"gitId":"spinoandraptos"},"content":" * @param ui User interface for interactions with user through CLI.","lastModifiedDate":"2023-10-04"},{"lineNumber":25,"author":{"gitId":"spinoandraptos"},"content":" * @param tasks Current task list in the program.","lastModifiedDate":"2023-10-04"},{"lineNumber":26,"author":{"gitId":"spinoandraptos"},"content":" * @param dataStorage Hard disk storage for storing task data.","lastModifiedDate":"2023-10-04"},{"lineNumber":27,"author":{"gitId":"spinoandraptos"},"content":" */","lastModifiedDate":"2023-10-04"},{"lineNumber":28,"author":{"gitId":"spinoandraptos"},"content":" @Override","lastModifiedDate":"2023-10-04"},{"lineNumber":29,"author":{"gitId":"spinoandraptos"},"content":" public void executeCommand(Ui ui, Storage dataStorage, TaskList tasks){","lastModifiedDate":"2023-10-04"},{"lineNumber":30,"author":{"gitId":"spinoandraptos"},"content":" String taskName \u003d tasks.viewTaskByIndex(taskIndex);","lastModifiedDate":"2023-10-04"},{"lineNumber":31,"author":{"gitId":"spinoandraptos"},"content":" if(!taskName.equals(\"Task Not Found\")) {","lastModifiedDate":"2023-10-04"},{"lineNumber":32,"author":{"gitId":"spinoandraptos"},"content":" tasks.deleteTaskByIndex(taskIndex);","lastModifiedDate":"2023-10-04"},{"lineNumber":33,"author":{"gitId":"spinoandraptos"},"content":" dataStorage.updateData(tasks);","lastModifiedDate":"2023-10-04"},{"lineNumber":34,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":35,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":36,"author":{"gitId":"spinoandraptos"},"content":"}","lastModifiedDate":"2023-10-04"}],"authorContributionMap":{"spinoandraptos":36}},{"path":"src/main/java/rene/command/CommandEvent.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"spinoandraptos"},"content":"package rene.command;","lastModifiedDate":"2023-10-04"},{"lineNumber":2,"author":{"gitId":"spinoandraptos"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":3,"author":{"gitId":"spinoandraptos"},"content":"import rene.storage.Storage;","lastModifiedDate":"2023-10-04"},{"lineNumber":4,"author":{"gitId":"spinoandraptos"},"content":"import rene.task.Task;","lastModifiedDate":"2023-10-04"},{"lineNumber":5,"author":{"gitId":"spinoandraptos"},"content":"import rene.tasklist.TaskList;","lastModifiedDate":"2023-10-04"},{"lineNumber":6,"author":{"gitId":"spinoandraptos"},"content":"import rene.ui.Ui;","lastModifiedDate":"2023-10-04"},{"lineNumber":7,"author":{"gitId":"spinoandraptos"},"content":"/**","lastModifiedDate":"2023-10-04"},{"lineNumber":8,"author":{"gitId":"spinoandraptos"},"content":" * Represents a command to add an event task.","lastModifiedDate":"2023-10-04"},{"lineNumber":9,"author":{"gitId":"spinoandraptos"},"content":" */","lastModifiedDate":"2023-10-04"},{"lineNumber":10,"author":{"gitId":"spinoandraptos"},"content":"public class CommandEvent extends Command{","lastModifiedDate":"2023-10-04"},{"lineNumber":11,"author":{"gitId":"spinoandraptos"},"content":" private String userInput;","lastModifiedDate":"2023-10-04"},{"lineNumber":12,"author":{"gitId":"spinoandraptos"},"content":" /**","lastModifiedDate":"2023-10-04"},{"lineNumber":13,"author":{"gitId":"spinoandraptos"},"content":" * Creates a new event command to add an event task.","lastModifiedDate":"2023-10-04"},{"lineNumber":14,"author":{"gitId":"spinoandraptos"},"content":" *","lastModifiedDate":"2023-10-04"},{"lineNumber":15,"author":{"gitId":"spinoandraptos"},"content":" * @param userInput User input containing details of the event task.","lastModifiedDate":"2023-10-04"},{"lineNumber":16,"author":{"gitId":"spinoandraptos"},"content":" */","lastModifiedDate":"2023-10-04"},{"lineNumber":17,"author":{"gitId":"spinoandraptos"},"content":" public CommandEvent(String userInput){","lastModifiedDate":"2023-10-04"},{"lineNumber":18,"author":{"gitId":"spinoandraptos"},"content":" super(CommandType.EVENT);","lastModifiedDate":"2023-10-04"},{"lineNumber":19,"author":{"gitId":"spinoandraptos"},"content":" this.userInput \u003d userInput;","lastModifiedDate":"2023-10-04"},{"lineNumber":20,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":21,"author":{"gitId":"spinoandraptos"},"content":" /**","lastModifiedDate":"2023-10-04"},{"lineNumber":22,"author":{"gitId":"spinoandraptos"},"content":" * Adds the event task and updates storage data.","lastModifiedDate":"2023-10-04"},{"lineNumber":23,"author":{"gitId":"spinoandraptos"},"content":" *","lastModifiedDate":"2023-10-04"},{"lineNumber":24,"author":{"gitId":"spinoandraptos"},"content":" * @param ui User interface for interactions with user through CLI.","lastModifiedDate":"2023-10-04"},{"lineNumber":25,"author":{"gitId":"spinoandraptos"},"content":" * @param tasks Current task list in the program.","lastModifiedDate":"2023-10-04"},{"lineNumber":26,"author":{"gitId":"spinoandraptos"},"content":" * @param dataStorage Hard disk storage for storing task data.","lastModifiedDate":"2023-10-04"},{"lineNumber":27,"author":{"gitId":"spinoandraptos"},"content":" */","lastModifiedDate":"2023-10-04"},{"lineNumber":28,"author":{"gitId":"spinoandraptos"},"content":" @Override","lastModifiedDate":"2023-10-04"},{"lineNumber":29,"author":{"gitId":"spinoandraptos"},"content":" public void executeCommand(Ui ui, Storage dataStorage, TaskList tasks){","lastModifiedDate":"2023-10-04"},{"lineNumber":30,"author":{"gitId":"spinoandraptos"},"content":" tasks.addToTaskList(userInput, Task.TaskType.EVENT, true);","lastModifiedDate":"2023-10-04"},{"lineNumber":31,"author":{"gitId":"spinoandraptos"},"content":" dataStorage.updateData(tasks);","lastModifiedDate":"2023-10-04"},{"lineNumber":32,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":33,"author":{"gitId":"spinoandraptos"},"content":"}","lastModifiedDate":"2023-10-04"}],"authorContributionMap":{"spinoandraptos":33}},{"path":"src/main/java/rene/command/CommandExit.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"spinoandraptos"},"content":"package rene.command;","lastModifiedDate":"2023-10-04"},{"lineNumber":2,"author":{"gitId":"spinoandraptos"},"content":"/**","lastModifiedDate":"2023-10-04"},{"lineNumber":3,"author":{"gitId":"spinoandraptos"},"content":" * Represents a command to exit the program.","lastModifiedDate":"2023-10-04"},{"lineNumber":4,"author":{"gitId":"spinoandraptos"},"content":" */","lastModifiedDate":"2023-10-04"},{"lineNumber":5,"author":{"gitId":"spinoandraptos"},"content":"public class CommandExit extends Command {","lastModifiedDate":"2023-10-04"},{"lineNumber":6,"author":{"gitId":"spinoandraptos"},"content":" /**","lastModifiedDate":"2023-10-04"},{"lineNumber":7,"author":{"gitId":"spinoandraptos"},"content":" * Creates a new exit command to terminate program.","lastModifiedDate":"2023-10-04"},{"lineNumber":8,"author":{"gitId":"spinoandraptos"},"content":" */","lastModifiedDate":"2023-10-04"},{"lineNumber":9,"author":{"gitId":"spinoandraptos"},"content":" public CommandExit() {","lastModifiedDate":"2023-10-04"},{"lineNumber":10,"author":{"gitId":"spinoandraptos"},"content":" super(CommandType.EXIT);","lastModifiedDate":"2023-10-04"},{"lineNumber":11,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":12,"author":{"gitId":"spinoandraptos"},"content":"}","lastModifiedDate":"2023-10-04"}],"authorContributionMap":{"spinoandraptos":12}},{"path":"src/main/java/rene/command/CommandFind.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"spinoandraptos"},"content":"package rene.command;","lastModifiedDate":"2023-10-04"},{"lineNumber":2,"author":{"gitId":"spinoandraptos"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":3,"author":{"gitId":"spinoandraptos"},"content":"import rene.storage.Storage;","lastModifiedDate":"2023-10-04"},{"lineNumber":4,"author":{"gitId":"spinoandraptos"},"content":"import rene.tasklist.TaskList;","lastModifiedDate":"2023-10-04"},{"lineNumber":5,"author":{"gitId":"spinoandraptos"},"content":"import rene.ui.Ui;","lastModifiedDate":"2023-10-04"},{"lineNumber":6,"author":{"gitId":"spinoandraptos"},"content":"/**","lastModifiedDate":"2023-10-04"},{"lineNumber":7,"author":{"gitId":"spinoandraptos"},"content":" * Represents a command to search for a task.","lastModifiedDate":"2023-10-04"},{"lineNumber":8,"author":{"gitId":"spinoandraptos"},"content":" */","lastModifiedDate":"2023-10-04"},{"lineNumber":9,"author":{"gitId":"spinoandraptos"},"content":"public class CommandFind extends Command{","lastModifiedDate":"2023-10-04"},{"lineNumber":10,"author":{"gitId":"spinoandraptos"},"content":" private String searchDetails;","lastModifiedDate":"2023-10-04"},{"lineNumber":11,"author":{"gitId":"spinoandraptos"},"content":" /**","lastModifiedDate":"2023-10-04"},{"lineNumber":12,"author":{"gitId":"spinoandraptos"},"content":" * Creates a new find command to search for a task.","lastModifiedDate":"2023-10-04"},{"lineNumber":13,"author":{"gitId":"spinoandraptos"},"content":" *","lastModifiedDate":"2023-10-04"},{"lineNumber":14,"author":{"gitId":"spinoandraptos"},"content":" * @param searchDetails User input containing details of what to search.","lastModifiedDate":"2023-10-04"},{"lineNumber":15,"author":{"gitId":"spinoandraptos"},"content":" */","lastModifiedDate":"2023-10-04"},{"lineNumber":16,"author":{"gitId":"spinoandraptos"},"content":" public CommandFind(String searchDetails){","lastModifiedDate":"2023-10-04"},{"lineNumber":17,"author":{"gitId":"spinoandraptos"},"content":" super((CommandType.FIND));","lastModifiedDate":"2023-10-04"},{"lineNumber":18,"author":{"gitId":"spinoandraptos"},"content":" this.searchDetails \u003d searchDetails;","lastModifiedDate":"2023-10-04"},{"lineNumber":19,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":20,"author":{"gitId":"spinoandraptos"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":21,"author":{"gitId":"spinoandraptos"},"content":" /**","lastModifiedDate":"2023-10-04"},{"lineNumber":22,"author":{"gitId":"spinoandraptos"},"content":" * Checks if specified task exists.","lastModifiedDate":"2023-10-04"},{"lineNumber":23,"author":{"gitId":"spinoandraptos"},"content":" * Marks the specified task as not done and updates storage data.","lastModifiedDate":"2023-10-04"},{"lineNumber":24,"author":{"gitId":"spinoandraptos"},"content":" *","lastModifiedDate":"2023-10-04"},{"lineNumber":25,"author":{"gitId":"spinoandraptos"},"content":" * @param ui User interface for interactions with user through CLI.","lastModifiedDate":"2023-10-04"},{"lineNumber":26,"author":{"gitId":"spinoandraptos"},"content":" * @param tasks Current task list in the program.","lastModifiedDate":"2023-10-04"},{"lineNumber":27,"author":{"gitId":"spinoandraptos"},"content":" * @param dataStorage Hard disk storage for storing task data.","lastModifiedDate":"2023-10-04"},{"lineNumber":28,"author":{"gitId":"spinoandraptos"},"content":" */","lastModifiedDate":"2023-10-04"},{"lineNumber":29,"author":{"gitId":"spinoandraptos"},"content":" @Override","lastModifiedDate":"2023-10-04"},{"lineNumber":30,"author":{"gitId":"spinoandraptos"},"content":" public void executeCommand(Ui ui, Storage dataStorage, TaskList tasks) {","lastModifiedDate":"2023-10-04"},{"lineNumber":31,"author":{"gitId":"spinoandraptos"},"content":" tasks.searchList(searchDetails);","lastModifiedDate":"2023-10-04"},{"lineNumber":32,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":33,"author":{"gitId":"spinoandraptos"},"content":"}","lastModifiedDate":"2023-10-04"}],"authorContributionMap":{"spinoandraptos":33}},{"path":"src/main/java/rene/command/CommandList.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"spinoandraptos"},"content":"package rene.command;","lastModifiedDate":"2023-10-04"},{"lineNumber":2,"author":{"gitId":"spinoandraptos"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":3,"author":{"gitId":"spinoandraptos"},"content":"import rene.storage.Storage;","lastModifiedDate":"2023-10-04"},{"lineNumber":4,"author":{"gitId":"spinoandraptos"},"content":"import rene.tasklist.TaskList;","lastModifiedDate":"2023-10-04"},{"lineNumber":5,"author":{"gitId":"spinoandraptos"},"content":"import rene.ui.Ui;","lastModifiedDate":"2023-10-04"},{"lineNumber":6,"author":{"gitId":"spinoandraptos"},"content":"/**","lastModifiedDate":"2023-10-04"},{"lineNumber":7,"author":{"gitId":"spinoandraptos"},"content":" * Represents a command to list all tasks.","lastModifiedDate":"2023-10-04"},{"lineNumber":8,"author":{"gitId":"spinoandraptos"},"content":" */","lastModifiedDate":"2023-10-04"},{"lineNumber":9,"author":{"gitId":"spinoandraptos"},"content":"public class CommandList extends Command {","lastModifiedDate":"2023-10-04"},{"lineNumber":10,"author":{"gitId":"spinoandraptos"},"content":" /**","lastModifiedDate":"2023-10-04"},{"lineNumber":11,"author":{"gitId":"spinoandraptos"},"content":" * Creates a new list command to list all tasks.","lastModifiedDate":"2023-10-04"},{"lineNumber":12,"author":{"gitId":"spinoandraptos"},"content":" */","lastModifiedDate":"2023-10-04"},{"lineNumber":13,"author":{"gitId":"spinoandraptos"},"content":" public CommandList(){","lastModifiedDate":"2023-10-04"},{"lineNumber":14,"author":{"gitId":"spinoandraptos"},"content":" super(CommandType.LIST);","lastModifiedDate":"2023-10-04"},{"lineNumber":15,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":16,"author":{"gitId":"spinoandraptos"},"content":" /**","lastModifiedDate":"2023-10-04"},{"lineNumber":17,"author":{"gitId":"spinoandraptos"},"content":" * Prints all tasks in current task list.","lastModifiedDate":"2023-10-04"},{"lineNumber":18,"author":{"gitId":"spinoandraptos"},"content":" *","lastModifiedDate":"2023-10-04"},{"lineNumber":19,"author":{"gitId":"spinoandraptos"},"content":" * @param ui User interface for interactions with user through CLI.","lastModifiedDate":"2023-10-04"},{"lineNumber":20,"author":{"gitId":"spinoandraptos"},"content":" * @param tasks Current task list in the program.","lastModifiedDate":"2023-10-04"},{"lineNumber":21,"author":{"gitId":"spinoandraptos"},"content":" * @param dataStorage Hard disk storage for storing task data.","lastModifiedDate":"2023-10-04"},{"lineNumber":22,"author":{"gitId":"spinoandraptos"},"content":" */","lastModifiedDate":"2023-10-04"},{"lineNumber":23,"author":{"gitId":"spinoandraptos"},"content":" @Override","lastModifiedDate":"2023-10-04"},{"lineNumber":24,"author":{"gitId":"spinoandraptos"},"content":" public void executeCommand(Ui ui, Storage dataStorage, TaskList tasks){","lastModifiedDate":"2023-10-04"},{"lineNumber":25,"author":{"gitId":"spinoandraptos"},"content":" tasks.printTaskList();","lastModifiedDate":"2023-10-04"},{"lineNumber":26,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":27,"author":{"gitId":"spinoandraptos"},"content":"}","lastModifiedDate":"2023-10-04"}],"authorContributionMap":{"spinoandraptos":27}},{"path":"src/main/java/rene/command/CommandMark.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"spinoandraptos"},"content":"package rene.command;","lastModifiedDate":"2023-10-04"},{"lineNumber":2,"author":{"gitId":"spinoandraptos"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":3,"author":{"gitId":"spinoandraptos"},"content":"import rene.storage.Storage;","lastModifiedDate":"2023-10-04"},{"lineNumber":4,"author":{"gitId":"spinoandraptos"},"content":"import rene.tasklist.TaskList;","lastModifiedDate":"2023-10-04"},{"lineNumber":5,"author":{"gitId":"spinoandraptos"},"content":"import rene.ui.Ui;","lastModifiedDate":"2023-10-04"},{"lineNumber":6,"author":{"gitId":"spinoandraptos"},"content":"/**","lastModifiedDate":"2023-10-04"},{"lineNumber":7,"author":{"gitId":"spinoandraptos"},"content":" * Represents a command to mark a task as done.","lastModifiedDate":"2023-10-04"},{"lineNumber":8,"author":{"gitId":"spinoandraptos"},"content":" */","lastModifiedDate":"2023-10-04"},{"lineNumber":9,"author":{"gitId":"spinoandraptos"},"content":"public class CommandMark extends Command {","lastModifiedDate":"2023-10-04"},{"lineNumber":10,"author":{"gitId":"spinoandraptos"},"content":" private int taskIndex;","lastModifiedDate":"2023-10-04"},{"lineNumber":11,"author":{"gitId":"spinoandraptos"},"content":" /**","lastModifiedDate":"2023-10-04"},{"lineNumber":12,"author":{"gitId":"spinoandraptos"},"content":" * Creates a new mark command for a task of specified index.","lastModifiedDate":"2023-10-04"},{"lineNumber":13,"author":{"gitId":"spinoandraptos"},"content":" *","lastModifiedDate":"2023-10-04"},{"lineNumber":14,"author":{"gitId":"spinoandraptos"},"content":" * @param taskIndex Index of the task to be marked.","lastModifiedDate":"2023-10-04"},{"lineNumber":15,"author":{"gitId":"spinoandraptos"},"content":" */","lastModifiedDate":"2023-10-04"},{"lineNumber":16,"author":{"gitId":"spinoandraptos"},"content":" public CommandMark(int taskIndex){","lastModifiedDate":"2023-10-04"},{"lineNumber":17,"author":{"gitId":"spinoandraptos"},"content":" super(CommandType.MARK);","lastModifiedDate":"2023-10-04"},{"lineNumber":18,"author":{"gitId":"spinoandraptos"},"content":" this.taskIndex \u003d taskIndex;","lastModifiedDate":"2023-10-04"},{"lineNumber":19,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":20,"author":{"gitId":"spinoandraptos"},"content":" /**","lastModifiedDate":"2023-10-04"},{"lineNumber":21,"author":{"gitId":"spinoandraptos"},"content":" * Checks if specified task exists.","lastModifiedDate":"2023-10-04"},{"lineNumber":22,"author":{"gitId":"spinoandraptos"},"content":" * Marks the specified task as done and updates storage data.","lastModifiedDate":"2023-10-04"},{"lineNumber":23,"author":{"gitId":"spinoandraptos"},"content":" *","lastModifiedDate":"2023-10-04"},{"lineNumber":24,"author":{"gitId":"spinoandraptos"},"content":" * @param ui User interface for interactions with user through CLI.","lastModifiedDate":"2023-10-04"},{"lineNumber":25,"author":{"gitId":"spinoandraptos"},"content":" * @param tasks Current task list in the program.","lastModifiedDate":"2023-10-04"},{"lineNumber":26,"author":{"gitId":"spinoandraptos"},"content":" * @param dataStorage Hard disk storage for storing task data.","lastModifiedDate":"2023-10-04"},{"lineNumber":27,"author":{"gitId":"spinoandraptos"},"content":" */","lastModifiedDate":"2023-10-04"},{"lineNumber":28,"author":{"gitId":"spinoandraptos"},"content":" @Override","lastModifiedDate":"2023-10-04"},{"lineNumber":29,"author":{"gitId":"spinoandraptos"},"content":" public void executeCommand(Ui ui, Storage dataStorage, TaskList tasks){","lastModifiedDate":"2023-10-04"},{"lineNumber":30,"author":{"gitId":"spinoandraptos"},"content":" String taskName \u003d tasks.viewTaskByIndex(taskIndex);","lastModifiedDate":"2023-10-04"},{"lineNumber":31,"author":{"gitId":"spinoandraptos"},"content":" if(!taskName.equals(\"Task Not Found\")) {","lastModifiedDate":"2023-10-04"},{"lineNumber":32,"author":{"gitId":"spinoandraptos"},"content":" tasks.markTaskAsDone(taskIndex, true);","lastModifiedDate":"2023-10-04"},{"lineNumber":33,"author":{"gitId":"spinoandraptos"},"content":" dataStorage.updateData(tasks);","lastModifiedDate":"2023-10-04"},{"lineNumber":34,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":35,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":36,"author":{"gitId":"spinoandraptos"},"content":"}","lastModifiedDate":"2023-10-04"}],"authorContributionMap":{"spinoandraptos":36}},{"path":"src/main/java/rene/command/CommandTodo.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"spinoandraptos"},"content":"package rene.command;","lastModifiedDate":"2023-10-04"},{"lineNumber":2,"author":{"gitId":"spinoandraptos"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":3,"author":{"gitId":"spinoandraptos"},"content":"import rene.storage.Storage;","lastModifiedDate":"2023-10-04"},{"lineNumber":4,"author":{"gitId":"spinoandraptos"},"content":"import rene.task.Task;","lastModifiedDate":"2023-10-04"},{"lineNumber":5,"author":{"gitId":"spinoandraptos"},"content":"import rene.tasklist.TaskList;","lastModifiedDate":"2023-10-04"},{"lineNumber":6,"author":{"gitId":"spinoandraptos"},"content":"import rene.ui.Ui;","lastModifiedDate":"2023-10-04"},{"lineNumber":7,"author":{"gitId":"spinoandraptos"},"content":"/**","lastModifiedDate":"2023-10-04"},{"lineNumber":8,"author":{"gitId":"spinoandraptos"},"content":" * Represents a command to add a todo task.","lastModifiedDate":"2023-10-04"},{"lineNumber":9,"author":{"gitId":"spinoandraptos"},"content":" */","lastModifiedDate":"2023-10-04"},{"lineNumber":10,"author":{"gitId":"spinoandraptos"},"content":"public class CommandTodo extends Command {","lastModifiedDate":"2023-10-04"},{"lineNumber":11,"author":{"gitId":"spinoandraptos"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":12,"author":{"gitId":"spinoandraptos"},"content":" private String userInput;","lastModifiedDate":"2023-10-04"},{"lineNumber":13,"author":{"gitId":"spinoandraptos"},"content":" /**","lastModifiedDate":"2023-10-04"},{"lineNumber":14,"author":{"gitId":"spinoandraptos"},"content":" * Creates a new todo command to add a todo task.","lastModifiedDate":"2023-10-04"},{"lineNumber":15,"author":{"gitId":"spinoandraptos"},"content":" *","lastModifiedDate":"2023-10-04"},{"lineNumber":16,"author":{"gitId":"spinoandraptos"},"content":" * @param userInput User input containing details of the todo task.","lastModifiedDate":"2023-10-04"},{"lineNumber":17,"author":{"gitId":"spinoandraptos"},"content":" */","lastModifiedDate":"2023-10-04"},{"lineNumber":18,"author":{"gitId":"spinoandraptos"},"content":" public CommandTodo(String userInput){","lastModifiedDate":"2023-10-04"},{"lineNumber":19,"author":{"gitId":"spinoandraptos"},"content":" super(CommandType.TODO);","lastModifiedDate":"2023-10-04"},{"lineNumber":20,"author":{"gitId":"spinoandraptos"},"content":" this.userInput \u003d userInput;","lastModifiedDate":"2023-10-04"},{"lineNumber":21,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":22,"author":{"gitId":"spinoandraptos"},"content":" /**","lastModifiedDate":"2023-10-04"},{"lineNumber":23,"author":{"gitId":"spinoandraptos"},"content":" * Adds the todo task and updates storage data.","lastModifiedDate":"2023-10-04"},{"lineNumber":24,"author":{"gitId":"spinoandraptos"},"content":" *","lastModifiedDate":"2023-10-04"},{"lineNumber":25,"author":{"gitId":"spinoandraptos"},"content":" * @param ui User interface for interactions with user through CLI.","lastModifiedDate":"2023-10-04"},{"lineNumber":26,"author":{"gitId":"spinoandraptos"},"content":" * @param tasks Current task list in the program.","lastModifiedDate":"2023-10-04"},{"lineNumber":27,"author":{"gitId":"spinoandraptos"},"content":" * @param dataStorage Hard disk storage for storing task data.","lastModifiedDate":"2023-10-04"},{"lineNumber":28,"author":{"gitId":"spinoandraptos"},"content":" */","lastModifiedDate":"2023-10-04"},{"lineNumber":29,"author":{"gitId":"spinoandraptos"},"content":" @Override","lastModifiedDate":"2023-10-04"},{"lineNumber":30,"author":{"gitId":"spinoandraptos"},"content":" public void executeCommand(Ui ui, Storage dataStorage, TaskList tasks){","lastModifiedDate":"2023-10-04"},{"lineNumber":31,"author":{"gitId":"spinoandraptos"},"content":" tasks.addToTaskList(userInput, Task.TaskType.TODO, true);","lastModifiedDate":"2023-10-04"},{"lineNumber":32,"author":{"gitId":"spinoandraptos"},"content":" dataStorage.updateData(tasks);","lastModifiedDate":"2023-10-04"},{"lineNumber":33,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":34,"author":{"gitId":"spinoandraptos"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":35,"author":{"gitId":"spinoandraptos"},"content":"}","lastModifiedDate":"2023-10-04"}],"authorContributionMap":{"spinoandraptos":35}},{"path":"src/main/java/rene/command/CommandUnmark.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"spinoandraptos"},"content":"package rene.command;","lastModifiedDate":"2023-10-04"},{"lineNumber":2,"author":{"gitId":"spinoandraptos"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":3,"author":{"gitId":"spinoandraptos"},"content":"import rene.storage.Storage;","lastModifiedDate":"2023-10-04"},{"lineNumber":4,"author":{"gitId":"spinoandraptos"},"content":"import rene.tasklist.TaskList;","lastModifiedDate":"2023-10-04"},{"lineNumber":5,"author":{"gitId":"spinoandraptos"},"content":"import rene.ui.Ui;","lastModifiedDate":"2023-10-04"},{"lineNumber":6,"author":{"gitId":"spinoandraptos"},"content":"/**","lastModifiedDate":"2023-10-04"},{"lineNumber":7,"author":{"gitId":"spinoandraptos"},"content":" * Represents a command to mark a task as not done.","lastModifiedDate":"2023-10-04"},{"lineNumber":8,"author":{"gitId":"spinoandraptos"},"content":" */","lastModifiedDate":"2023-10-04"},{"lineNumber":9,"author":{"gitId":"spinoandraptos"},"content":"public class CommandUnmark extends Command {","lastModifiedDate":"2023-10-04"},{"lineNumber":10,"author":{"gitId":"spinoandraptos"},"content":" private int taskIndex;","lastModifiedDate":"2023-10-04"},{"lineNumber":11,"author":{"gitId":"spinoandraptos"},"content":" /**","lastModifiedDate":"2023-10-04"},{"lineNumber":12,"author":{"gitId":"spinoandraptos"},"content":" * Creates a new unmark command for a task of specified index.","lastModifiedDate":"2023-10-04"},{"lineNumber":13,"author":{"gitId":"spinoandraptos"},"content":" *","lastModifiedDate":"2023-10-04"},{"lineNumber":14,"author":{"gitId":"spinoandraptos"},"content":" * @param taskIndex Index of the task to be unmarked.","lastModifiedDate":"2023-10-04"},{"lineNumber":15,"author":{"gitId":"spinoandraptos"},"content":" */","lastModifiedDate":"2023-10-04"},{"lineNumber":16,"author":{"gitId":"spinoandraptos"},"content":" public CommandUnmark(int taskIndex){","lastModifiedDate":"2023-10-04"},{"lineNumber":17,"author":{"gitId":"spinoandraptos"},"content":" super(CommandType.UNMARK);","lastModifiedDate":"2023-10-04"},{"lineNumber":18,"author":{"gitId":"spinoandraptos"},"content":" this.taskIndex \u003d taskIndex;","lastModifiedDate":"2023-10-04"},{"lineNumber":19,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":20,"author":{"gitId":"spinoandraptos"},"content":" /**","lastModifiedDate":"2023-10-04"},{"lineNumber":21,"author":{"gitId":"spinoandraptos"},"content":" * Checks if specified task exists.","lastModifiedDate":"2023-10-04"},{"lineNumber":22,"author":{"gitId":"spinoandraptos"},"content":" * Marks the specified task as not done and updates storage data.","lastModifiedDate":"2023-10-04"},{"lineNumber":23,"author":{"gitId":"spinoandraptos"},"content":" *","lastModifiedDate":"2023-10-04"},{"lineNumber":24,"author":{"gitId":"spinoandraptos"},"content":" * @param ui User interface for interactions with user through CLI.","lastModifiedDate":"2023-10-04"},{"lineNumber":25,"author":{"gitId":"spinoandraptos"},"content":" * @param tasks Current task list in the program.","lastModifiedDate":"2023-10-04"},{"lineNumber":26,"author":{"gitId":"spinoandraptos"},"content":" * @param dataStorage Hard disk storage for storing task data.","lastModifiedDate":"2023-10-04"},{"lineNumber":27,"author":{"gitId":"spinoandraptos"},"content":" */","lastModifiedDate":"2023-10-04"},{"lineNumber":28,"author":{"gitId":"spinoandraptos"},"content":" @Override","lastModifiedDate":"2023-10-04"},{"lineNumber":29,"author":{"gitId":"spinoandraptos"},"content":" public void executeCommand(Ui ui, Storage dataStorage, TaskList tasks){","lastModifiedDate":"2023-10-04"},{"lineNumber":30,"author":{"gitId":"spinoandraptos"},"content":" String taskName \u003d tasks.viewTaskByIndex(taskIndex);","lastModifiedDate":"2023-10-04"},{"lineNumber":31,"author":{"gitId":"spinoandraptos"},"content":" if(!taskName.equals(\"Task Not Found\")) {","lastModifiedDate":"2023-10-04"},{"lineNumber":32,"author":{"gitId":"spinoandraptos"},"content":" tasks.markTaskAsNotDone(taskIndex);","lastModifiedDate":"2023-10-04"},{"lineNumber":33,"author":{"gitId":"spinoandraptos"},"content":" dataStorage.updateData(tasks);","lastModifiedDate":"2023-10-04"},{"lineNumber":34,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":35,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":36,"author":{"gitId":"spinoandraptos"},"content":"}","lastModifiedDate":"2023-10-04"}],"authorContributionMap":{"spinoandraptos":36}},{"path":"src/main/java/rene/exception/ReneExceptions.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"spinoandraptos"},"content":"package rene.exception;","lastModifiedDate":"2023-10-04"},{"lineNumber":2,"author":{"gitId":"spinoandraptos"},"content":"/**","lastModifiedDate":"2023-10-04"},{"lineNumber":3,"author":{"gitId":"spinoandraptos"},"content":" * Represents non-standard exceptions thrown by this program specifically.","lastModifiedDate":"2023-10-04"},{"lineNumber":4,"author":{"gitId":"spinoandraptos"},"content":" */","lastModifiedDate":"2023-10-04"},{"lineNumber":5,"author":{"gitId":"spinoandraptos"},"content":"public class ReneExceptions extends Exception{","lastModifiedDate":"2023-10-04"},{"lineNumber":6,"author":{"gitId":"spinoandraptos"},"content":" public ReneExceptions(String message) {","lastModifiedDate":"2023-10-04"},{"lineNumber":7,"author":{"gitId":"spinoandraptos"},"content":" super(message);","lastModifiedDate":"2023-10-04"},{"lineNumber":8,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":9,"author":{"gitId":"spinoandraptos"},"content":"}","lastModifiedDate":"2023-10-04"},{"lineNumber":10,"author":{"gitId":"spinoandraptos"},"content":"","lastModifiedDate":"2023-10-04"}],"authorContributionMap":{"spinoandraptos":10}},{"path":"src/main/java/rene/parser/Parser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"spinoandraptos"},"content":"package rene.parser;","lastModifiedDate":"2023-10-04"},{"lineNumber":2,"author":{"gitId":"spinoandraptos"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":3,"author":{"gitId":"spinoandraptos"},"content":"import rene.command.Command;","lastModifiedDate":"2023-10-04"},{"lineNumber":4,"author":{"gitId":"spinoandraptos"},"content":"import rene.command.CommandMark;","lastModifiedDate":"2023-10-04"},{"lineNumber":5,"author":{"gitId":"spinoandraptos"},"content":"import rene.command.CommandUnmark;","lastModifiedDate":"2023-10-04"},{"lineNumber":6,"author":{"gitId":"spinoandraptos"},"content":"import rene.command.CommandList;","lastModifiedDate":"2023-10-04"},{"lineNumber":7,"author":{"gitId":"spinoandraptos"},"content":"import rene.command.CommandExit;","lastModifiedDate":"2023-10-04"},{"lineNumber":8,"author":{"gitId":"spinoandraptos"},"content":"import rene.command.CommandDelete;","lastModifiedDate":"2023-10-04"},{"lineNumber":9,"author":{"gitId":"spinoandraptos"},"content":"import rene.command.CommandTodo;","lastModifiedDate":"2023-10-04"},{"lineNumber":10,"author":{"gitId":"spinoandraptos"},"content":"import rene.command.CommandDeadline;","lastModifiedDate":"2023-10-04"},{"lineNumber":11,"author":{"gitId":"spinoandraptos"},"content":"import rene.command.CommandEvent;","lastModifiedDate":"2023-10-04"},{"lineNumber":12,"author":{"gitId":"spinoandraptos"},"content":"import rene.command.CommandFind;","lastModifiedDate":"2023-10-04"},{"lineNumber":13,"author":{"gitId":"spinoandraptos"},"content":"import rene.exception.ReneExceptions;","lastModifiedDate":"2023-10-04"},{"lineNumber":14,"author":{"gitId":"spinoandraptos"},"content":"/**","lastModifiedDate":"2023-10-04"},{"lineNumber":15,"author":{"gitId":"spinoandraptos"},"content":" * Represents a parser that converts user inputs into command objects.","lastModifiedDate":"2023-10-04"},{"lineNumber":16,"author":{"gitId":"spinoandraptos"},"content":" */","lastModifiedDate":"2023-10-04"},{"lineNumber":17,"author":{"gitId":"spinoandraptos"},"content":"public class Parser {","lastModifiedDate":"2023-10-04"},{"lineNumber":18,"author":{"gitId":"spinoandraptos"},"content":" /**","lastModifiedDate":"2023-10-04"},{"lineNumber":19,"author":{"gitId":"spinoandraptos"},"content":" * Analyses and extracts relevant information from user input","lastModifiedDate":"2023-10-04"},{"lineNumber":20,"author":{"gitId":"spinoandraptos"},"content":" * to create a new Command object of the right type.","lastModifiedDate":"2023-10-04"},{"lineNumber":21,"author":{"gitId":"spinoandraptos"},"content":" *","lastModifiedDate":"2023-10-04"},{"lineNumber":22,"author":{"gitId":"spinoandraptos"},"content":" * @param userInput The full user CLI input.","lastModifiedDate":"2023-10-04"},{"lineNumber":23,"author":{"gitId":"spinoandraptos"},"content":" */","lastModifiedDate":"2023-10-04"},{"lineNumber":24,"author":{"gitId":"spinoandraptos"},"content":" public Command parseCommand(String userInput) {","lastModifiedDate":"2023-10-04"},{"lineNumber":25,"author":{"gitId":"spinoandraptos"},"content":" String commandTitle \u003d userInput.split(\" \")[0];","lastModifiedDate":"2023-10-04"},{"lineNumber":26,"author":{"gitId":"spinoandraptos"},"content":" String commandDetails;","lastModifiedDate":"2023-10-04"},{"lineNumber":27,"author":{"gitId":"spinoandraptos"},"content":" int taskIndex;","lastModifiedDate":"2023-10-04"},{"lineNumber":28,"author":{"gitId":"spinoandraptos"},"content":" try {","lastModifiedDate":"2023-10-04"},{"lineNumber":29,"author":{"gitId":"spinoandraptos"},"content":" switch (commandTitle) {","lastModifiedDate":"2023-10-04"},{"lineNumber":30,"author":{"gitId":"spinoandraptos"},"content":" case \"bye\":","lastModifiedDate":"2023-10-04"},{"lineNumber":31,"author":{"gitId":"spinoandraptos"},"content":" return new CommandExit();","lastModifiedDate":"2023-10-04"},{"lineNumber":32,"author":{"gitId":"spinoandraptos"},"content":" case \"list\":","lastModifiedDate":"2023-10-04"},{"lineNumber":33,"author":{"gitId":"spinoandraptos"},"content":" return new CommandList();","lastModifiedDate":"2023-10-04"},{"lineNumber":34,"author":{"gitId":"spinoandraptos"},"content":" case \"mark\":","lastModifiedDate":"2023-10-04"},{"lineNumber":35,"author":{"gitId":"spinoandraptos"},"content":" commandDetails \u003d userInput.split(\" \")[1];","lastModifiedDate":"2023-10-04"},{"lineNumber":36,"author":{"gitId":"spinoandraptos"},"content":" taskIndex \u003d Integer.parseInt(commandDetails.strip());","lastModifiedDate":"2023-10-04"},{"lineNumber":37,"author":{"gitId":"spinoandraptos"},"content":" return new CommandMark(taskIndex);","lastModifiedDate":"2023-10-04"},{"lineNumber":38,"author":{"gitId":"spinoandraptos"},"content":" case \"unmark\":","lastModifiedDate":"2023-10-04"},{"lineNumber":39,"author":{"gitId":"spinoandraptos"},"content":" commandDetails \u003d userInput.split(\" \")[1];","lastModifiedDate":"2023-10-04"},{"lineNumber":40,"author":{"gitId":"spinoandraptos"},"content":" taskIndex \u003d Integer.parseInt(commandDetails.strip());","lastModifiedDate":"2023-10-04"},{"lineNumber":41,"author":{"gitId":"spinoandraptos"},"content":" return new CommandUnmark(taskIndex);","lastModifiedDate":"2023-10-04"},{"lineNumber":42,"author":{"gitId":"spinoandraptos"},"content":" case \"delete\":","lastModifiedDate":"2023-10-04"},{"lineNumber":43,"author":{"gitId":"spinoandraptos"},"content":" commandDetails \u003d userInput.split(\" \")[1];","lastModifiedDate":"2023-10-04"},{"lineNumber":44,"author":{"gitId":"spinoandraptos"},"content":" taskIndex \u003d Integer.parseInt(commandDetails.strip());","lastModifiedDate":"2023-10-04"},{"lineNumber":45,"author":{"gitId":"spinoandraptos"},"content":" return new CommandDelete(taskIndex);","lastModifiedDate":"2023-10-04"},{"lineNumber":46,"author":{"gitId":"spinoandraptos"},"content":" case \"todo\":","lastModifiedDate":"2023-10-04"},{"lineNumber":47,"author":{"gitId":"spinoandraptos"},"content":" return new CommandTodo(userInput);","lastModifiedDate":"2023-10-04"},{"lineNumber":48,"author":{"gitId":"spinoandraptos"},"content":" case \"deadline\":","lastModifiedDate":"2023-10-04"},{"lineNumber":49,"author":{"gitId":"spinoandraptos"},"content":" return new CommandDeadline(userInput);","lastModifiedDate":"2023-10-04"},{"lineNumber":50,"author":{"gitId":"spinoandraptos"},"content":" case \"event\":","lastModifiedDate":"2023-10-04"},{"lineNumber":51,"author":{"gitId":"spinoandraptos"},"content":" return new CommandEvent(userInput);","lastModifiedDate":"2023-10-04"},{"lineNumber":52,"author":{"gitId":"spinoandraptos"},"content":" case \"find\":","lastModifiedDate":"2023-10-04"},{"lineNumber":53,"author":{"gitId":"spinoandraptos"},"content":" return new CommandFind(userInput);","lastModifiedDate":"2023-10-04"},{"lineNumber":54,"author":{"gitId":"spinoandraptos"},"content":" default:","lastModifiedDate":"2023-10-04"},{"lineNumber":55,"author":{"gitId":"spinoandraptos"},"content":" throw new ReneExceptions(\"Invalid Input\");","lastModifiedDate":"2023-10-04"},{"lineNumber":56,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":57,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":58,"author":{"gitId":"spinoandraptos"},"content":" catch(NumberFormatException | ArrayIndexOutOfBoundsException invalidIndex){","lastModifiedDate":"2023-10-04"},{"lineNumber":59,"author":{"gitId":"spinoandraptos"},"content":" System.out.println(\" Pwease enter valid integer index!\");","lastModifiedDate":"2023-10-04"},{"lineNumber":60,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":61,"author":{"gitId":"spinoandraptos"},"content":" catch (ReneExceptions exception){","lastModifiedDate":"2023-10-04"},{"lineNumber":62,"author":{"gitId":"spinoandraptos"},"content":" String exceptionMessage \u003d exception.getMessage();","lastModifiedDate":"2023-10-04"},{"lineNumber":63,"author":{"gitId":"spinoandraptos"},"content":" if (exceptionMessage.equals(\"Invalid Input\")) {","lastModifiedDate":"2023-10-04"},{"lineNumber":64,"author":{"gitId":"spinoandraptos"},"content":" System.out.println(\" Pwease enter a valid command :0\");","lastModifiedDate":"2023-10-04"},{"lineNumber":65,"author":{"gitId":"spinoandraptos"},"content":" System.out.println(\" Valid commands are: todo,\\n\" +","lastModifiedDate":"2023-10-04"},{"lineNumber":66,"author":{"gitId":"spinoandraptos"},"content":" \" deadline /by [time],\\n\" +","lastModifiedDate":"2023-10-04"},{"lineNumber":67,"author":{"gitId":"spinoandraptos"},"content":" \" event /from [start] /to [end],\\n\" +","lastModifiedDate":"2023-10-04"},{"lineNumber":68,"author":{"gitId":"spinoandraptos"},"content":" \" list,\\n\" +","lastModifiedDate":"2023-10-04"},{"lineNumber":69,"author":{"gitId":"spinoandraptos"},"content":" \" mark [task number],\\n\" +","lastModifiedDate":"2023-10-04"},{"lineNumber":70,"author":{"gitId":"spinoandraptos"},"content":" \" unmark [task number],\\n\" +","lastModifiedDate":"2023-10-04"},{"lineNumber":71,"author":{"gitId":"spinoandraptos"},"content":" \" delete [task number],\\n\" +","lastModifiedDate":"2023-10-04"},{"lineNumber":72,"author":{"gitId":"spinoandraptos"},"content":" \" find /description [description]\\n\" +","lastModifiedDate":"2023-10-04"},{"lineNumber":73,"author":{"gitId":"spinoandraptos"},"content":" \" find /time [time]\\n\" +","lastModifiedDate":"2023-10-04"},{"lineNumber":74,"author":{"gitId":"spinoandraptos"},"content":" \" bye\");","lastModifiedDate":"2023-10-04"},{"lineNumber":75,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":76,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":77,"author":{"gitId":"spinoandraptos"},"content":" return new Command();","lastModifiedDate":"2023-10-04"},{"lineNumber":78,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":79,"author":{"gitId":"spinoandraptos"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":80,"author":{"gitId":"spinoandraptos"},"content":"}","lastModifiedDate":"2023-10-04"}],"authorContributionMap":{"spinoandraptos":80}},{"path":"src/main/java/rene/storage/Storage.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"spinoandraptos"},"content":"package rene.storage;","lastModifiedDate":"2023-10-04"},{"lineNumber":2,"author":{"gitId":"spinoandraptos"},"content":"import rene.task.Task;","lastModifiedDate":"2023-10-04"},{"lineNumber":3,"author":{"gitId":"spinoandraptos"},"content":"import rene.tasklist.TaskList;","lastModifiedDate":"2023-10-04"},{"lineNumber":4,"author":{"gitId":"spinoandraptos"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":5,"author":{"gitId":"spinoandraptos"},"content":"import java.io.File;","lastModifiedDate":"2023-10-04"},{"lineNumber":6,"author":{"gitId":"spinoandraptos"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-10-04"},{"lineNumber":7,"author":{"gitId":"spinoandraptos"},"content":"import java.io.IOException;","lastModifiedDate":"2023-10-04"},{"lineNumber":8,"author":{"gitId":"spinoandraptos"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-10-04"},{"lineNumber":9,"author":{"gitId":"spinoandraptos"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-10-04"},{"lineNumber":10,"author":{"gitId":"spinoandraptos"},"content":"/**","lastModifiedDate":"2023-10-04"},{"lineNumber":11,"author":{"gitId":"spinoandraptos"},"content":" * Represents the hard disk storage where","lastModifiedDate":"2023-10-04"},{"lineNumber":12,"author":{"gitId":"spinoandraptos"},"content":" * task data is stored, read and updated.","lastModifiedDate":"2023-10-04"},{"lineNumber":13,"author":{"gitId":"spinoandraptos"},"content":" */","lastModifiedDate":"2023-10-04"},{"lineNumber":14,"author":{"gitId":"spinoandraptos"},"content":"public class Storage {","lastModifiedDate":"2023-10-04"},{"lineNumber":15,"author":{"gitId":"spinoandraptos"},"content":" private File dataFile;","lastModifiedDate":"2023-10-04"},{"lineNumber":16,"author":{"gitId":"spinoandraptos"},"content":" /**","lastModifiedDate":"2023-10-04"},{"lineNumber":17,"author":{"gitId":"spinoandraptos"},"content":" * Creates a new storage for storing task data.","lastModifiedDate":"2023-10-04"},{"lineNumber":18,"author":{"gitId":"spinoandraptos"},"content":" *","lastModifiedDate":"2023-10-04"},{"lineNumber":19,"author":{"gitId":"spinoandraptos"},"content":" * @param filePath The file location in hard disk where data is stored and read from.","lastModifiedDate":"2023-10-04"},{"lineNumber":20,"author":{"gitId":"spinoandraptos"},"content":" */","lastModifiedDate":"2023-10-04"},{"lineNumber":21,"author":{"gitId":"spinoandraptos"},"content":" public Storage(String filePath) {","lastModifiedDate":"2023-10-04"},{"lineNumber":22,"author":{"gitId":"spinoandraptos"},"content":" dataFile \u003d new File(filePath);","lastModifiedDate":"2023-10-04"},{"lineNumber":23,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":24,"author":{"gitId":"spinoandraptos"},"content":" /**","lastModifiedDate":"2023-10-04"},{"lineNumber":25,"author":{"gitId":"spinoandraptos"},"content":" * Write in new data to storage.","lastModifiedDate":"2023-10-04"},{"lineNumber":26,"author":{"gitId":"spinoandraptos"},"content":" *","lastModifiedDate":"2023-10-04"},{"lineNumber":27,"author":{"gitId":"spinoandraptos"},"content":" * @param filePath The file location in hard disk where data is written to.","lastModifiedDate":"2023-10-04"},{"lineNumber":28,"author":{"gitId":"spinoandraptos"},"content":" * @param textToAdd Data to be written.","lastModifiedDate":"2023-10-04"},{"lineNumber":29,"author":{"gitId":"spinoandraptos"},"content":" * @param toAppend If true, new data is added to the back of existing data instead of overwriting them.","lastModifiedDate":"2023-10-04"},{"lineNumber":30,"author":{"gitId":"spinoandraptos"},"content":" */","lastModifiedDate":"2023-10-04"},{"lineNumber":31,"author":{"gitId":"spinoandraptos"},"content":" private void writeToFile(String filePath, String textToAdd, boolean toAppend) throws IOException {","lastModifiedDate":"2023-10-04"},{"lineNumber":32,"author":{"gitId":"spinoandraptos"},"content":" FileWriter fileWriter \u003d new FileWriter(filePath, toAppend);","lastModifiedDate":"2023-10-04"},{"lineNumber":33,"author":{"gitId":"spinoandraptos"},"content":" fileWriter.write(textToAdd);","lastModifiedDate":"2023-10-04"},{"lineNumber":34,"author":{"gitId":"spinoandraptos"},"content":" fileWriter.close();","lastModifiedDate":"2023-10-04"},{"lineNumber":35,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":36,"author":{"gitId":"spinoandraptos"},"content":" /**","lastModifiedDate":"2023-10-04"},{"lineNumber":37,"author":{"gitId":"spinoandraptos"},"content":" * Build a new task list from data stored in hard disk.","lastModifiedDate":"2023-10-04"},{"lineNumber":38,"author":{"gitId":"spinoandraptos"},"content":" * Used at program start to build the current task list.","lastModifiedDate":"2023-10-04"},{"lineNumber":39,"author":{"gitId":"spinoandraptos"},"content":" *","lastModifiedDate":"2023-10-04"},{"lineNumber":40,"author":{"gitId":"spinoandraptos"},"content":" * @param tasks The task list to be built.","lastModifiedDate":"2023-10-04"},{"lineNumber":41,"author":{"gitId":"spinoandraptos"},"content":" */","lastModifiedDate":"2023-10-04"},{"lineNumber":42,"author":{"gitId":"spinoandraptos"},"content":" public void buildCurrentListFromFile(TaskList tasks){","lastModifiedDate":"2023-10-04"},{"lineNumber":43,"author":{"gitId":"spinoandraptos"},"content":" try {","lastModifiedDate":"2023-10-04"},{"lineNumber":44,"author":{"gitId":"spinoandraptos"},"content":" if (dataFile.createNewFile()) {","lastModifiedDate":"2023-10-04"},{"lineNumber":45,"author":{"gitId":"spinoandraptos"},"content":" System.out.println(\" Task-list created: \" + dataFile.getName());","lastModifiedDate":"2023-10-04"},{"lineNumber":46,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":47,"author":{"gitId":"spinoandraptos"},"content":" } catch(NullPointerException | IOException invalidFilePath){","lastModifiedDate":"2023-10-04"},{"lineNumber":48,"author":{"gitId":"spinoandraptos"},"content":" System.out.println(\" \" + invalidFilePath.getMessage());","lastModifiedDate":"2023-10-04"},{"lineNumber":49,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":50,"author":{"gitId":"spinoandraptos"},"content":" int taskIndex \u003d 0;","lastModifiedDate":"2023-10-04"},{"lineNumber":51,"author":{"gitId":"spinoandraptos"},"content":" try {","lastModifiedDate":"2023-10-04"},{"lineNumber":52,"author":{"gitId":"spinoandraptos"},"content":" Scanner fileScanner \u003d new Scanner(dataFile);","lastModifiedDate":"2023-10-04"},{"lineNumber":53,"author":{"gitId":"spinoandraptos"},"content":" if (fileScanner.hasNext()) {","lastModifiedDate":"2023-10-04"},{"lineNumber":54,"author":{"gitId":"spinoandraptos"},"content":" fileScanner.nextLine();","lastModifiedDate":"2023-10-04"},{"lineNumber":55,"author":{"gitId":"spinoandraptos"},"content":" while (fileScanner.hasNext()) {","lastModifiedDate":"2023-10-04"},{"lineNumber":56,"author":{"gitId":"spinoandraptos"},"content":" taskIndex++;","lastModifiedDate":"2023-10-04"},{"lineNumber":57,"author":{"gitId":"spinoandraptos"},"content":" String nextTask \u003d fileScanner.nextLine();","lastModifiedDate":"2023-10-04"},{"lineNumber":58,"author":{"gitId":"spinoandraptos"},"content":" String[] taskSubStrings \u003d nextTask.split(\"\\\\|\");","lastModifiedDate":"2023-10-04"},{"lineNumber":59,"author":{"gitId":"spinoandraptos"},"content":" String taskType \u003d taskSubStrings[0].strip();","lastModifiedDate":"2023-10-04"},{"lineNumber":60,"author":{"gitId":"spinoandraptos"},"content":" String taskDoneStatus \u003d taskSubStrings[1].strip();","lastModifiedDate":"2023-10-04"},{"lineNumber":61,"author":{"gitId":"spinoandraptos"},"content":" String taskDescription \u003d taskSubStrings[2].strip();","lastModifiedDate":"2023-10-04"},{"lineNumber":62,"author":{"gitId":"spinoandraptos"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":63,"author":{"gitId":"spinoandraptos"},"content":" switch (taskType) {","lastModifiedDate":"2023-10-04"},{"lineNumber":64,"author":{"gitId":"spinoandraptos"},"content":" case \"T\": tasks.addToTaskList(\"todo \" + taskDescription,","lastModifiedDate":"2023-10-04"},{"lineNumber":65,"author":{"gitId":"spinoandraptos"},"content":" Task.TaskType.TODO, false);","lastModifiedDate":"2023-10-04"},{"lineNumber":66,"author":{"gitId":"spinoandraptos"},"content":" if (taskDoneStatus.equals(\"done\")) {","lastModifiedDate":"2023-10-04"},{"lineNumber":67,"author":{"gitId":"spinoandraptos"},"content":" tasks.markTaskAsDone(taskIndex, false);","lastModifiedDate":"2023-10-04"},{"lineNumber":68,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":69,"author":{"gitId":"spinoandraptos"},"content":" break;","lastModifiedDate":"2023-10-04"},{"lineNumber":70,"author":{"gitId":"spinoandraptos"},"content":" case \"D\":","lastModifiedDate":"2023-10-04"},{"lineNumber":71,"author":{"gitId":"spinoandraptos"},"content":" String dueTime \u003d taskSubStrings[3].replace(\"(by:\", \"\")","lastModifiedDate":"2023-10-04"},{"lineNumber":72,"author":{"gitId":"spinoandraptos"},"content":" .replace(\")\", \"\").strip();","lastModifiedDate":"2023-10-04"},{"lineNumber":73,"author":{"gitId":"spinoandraptos"},"content":" tasks.addToTaskList(\"deadline \" + taskDescription + \" /by \" + dueTime,","lastModifiedDate":"2023-10-04"},{"lineNumber":74,"author":{"gitId":"spinoandraptos"},"content":" Task.TaskType.DEADLINE, false);","lastModifiedDate":"2023-10-04"},{"lineNumber":75,"author":{"gitId":"spinoandraptos"},"content":" if (taskDoneStatus.equals(\"done\")) {","lastModifiedDate":"2023-10-04"},{"lineNumber":76,"author":{"gitId":"spinoandraptos"},"content":" tasks.markTaskAsDone(taskIndex, false);","lastModifiedDate":"2023-10-04"},{"lineNumber":77,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":78,"author":{"gitId":"spinoandraptos"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":79,"author":{"gitId":"spinoandraptos"},"content":" break;","lastModifiedDate":"2023-10-04"},{"lineNumber":80,"author":{"gitId":"spinoandraptos"},"content":" case \"E\":","lastModifiedDate":"2023-10-04"},{"lineNumber":81,"author":{"gitId":"spinoandraptos"},"content":" String[] taskTimings \u003d taskSubStrings[3].strip().split(\"\\\\(from:\")[1]","lastModifiedDate":"2023-10-04"},{"lineNumber":82,"author":{"gitId":"spinoandraptos"},"content":" .split(\"to:\");","lastModifiedDate":"2023-10-04"},{"lineNumber":83,"author":{"gitId":"spinoandraptos"},"content":" String startTime \u003d taskTimings[0];","lastModifiedDate":"2023-10-04"},{"lineNumber":84,"author":{"gitId":"spinoandraptos"},"content":" String endTime \u003d taskTimings[1].split(\"\\\\)\")[0];","lastModifiedDate":"2023-10-04"},{"lineNumber":85,"author":{"gitId":"spinoandraptos"},"content":" tasks.addToTaskList(\"event \" + taskDescription + \" /from \" + startTime","lastModifiedDate":"2023-10-04"},{"lineNumber":86,"author":{"gitId":"spinoandraptos"},"content":" + \" /to \" + endTime, Task.TaskType.EVENT, false);","lastModifiedDate":"2023-10-04"},{"lineNumber":87,"author":{"gitId":"spinoandraptos"},"content":" if (taskDoneStatus.equals(\"done\")) {","lastModifiedDate":"2023-10-04"},{"lineNumber":88,"author":{"gitId":"spinoandraptos"},"content":" tasks.markTaskAsDone(taskIndex, false);","lastModifiedDate":"2023-10-04"},{"lineNumber":89,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":90,"author":{"gitId":"spinoandraptos"},"content":" break;","lastModifiedDate":"2023-10-04"},{"lineNumber":91,"author":{"gitId":"spinoandraptos"},"content":" default:","lastModifiedDate":"2023-10-04"},{"lineNumber":92,"author":{"gitId":"spinoandraptos"},"content":" System.out.println(nextTask);","lastModifiedDate":"2023-10-04"},{"lineNumber":93,"author":{"gitId":"spinoandraptos"},"content":" break;","lastModifiedDate":"2023-10-04"},{"lineNumber":94,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":95,"author":{"gitId":"spinoandraptos"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":96,"author":{"gitId":"spinoandraptos"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":97,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":98,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":99,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":100,"author":{"gitId":"spinoandraptos"},"content":" catch(NullPointerException | IOException invalidFilePath){","lastModifiedDate":"2023-10-04"},{"lineNumber":101,"author":{"gitId":"spinoandraptos"},"content":" System.out.println(\" \" + invalidFilePath.getMessage());","lastModifiedDate":"2023-10-04"},{"lineNumber":102,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":103,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":104,"author":{"gitId":"spinoandraptos"},"content":" /**","lastModifiedDate":"2023-10-04"},{"lineNumber":105,"author":{"gitId":"spinoandraptos"},"content":" * Build a new task list from data stored in hard disk.","lastModifiedDate":"2023-10-04"},{"lineNumber":106,"author":{"gitId":"spinoandraptos"},"content":" * Prints out the tasks in the list in CLI.","lastModifiedDate":"2023-10-04"},{"lineNumber":107,"author":{"gitId":"spinoandraptos"},"content":" *","lastModifiedDate":"2023-10-04"},{"lineNumber":108,"author":{"gitId":"spinoandraptos"},"content":" * @param tasks The task list that has been built.","lastModifiedDate":"2023-10-04"},{"lineNumber":109,"author":{"gitId":"spinoandraptos"},"content":" */","lastModifiedDate":"2023-10-04"},{"lineNumber":110,"author":{"gitId":"spinoandraptos"},"content":" public void loadData(TaskList tasks) {","lastModifiedDate":"2023-10-04"},{"lineNumber":111,"author":{"gitId":"spinoandraptos"},"content":" buildCurrentListFromFile(tasks);","lastModifiedDate":"2023-10-04"},{"lineNumber":112,"author":{"gitId":"spinoandraptos"},"content":" if (tasks.getTaskListSize() \u003e 0) {","lastModifiedDate":"2023-10-04"},{"lineNumber":113,"author":{"gitId":"spinoandraptos"},"content":" System.out.println(\" You currently have the following tasks uWu\");","lastModifiedDate":"2023-10-04"},{"lineNumber":114,"author":{"gitId":"spinoandraptos"},"content":" tasks.printTaskList();","lastModifiedDate":"2023-10-04"},{"lineNumber":115,"author":{"gitId":"spinoandraptos"},"content":" } else {","lastModifiedDate":"2023-10-04"},{"lineNumber":116,"author":{"gitId":"spinoandraptos"},"content":" System.out.println(\" You currently have no saved tasks uWu\");","lastModifiedDate":"2023-10-04"},{"lineNumber":117,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":118,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":119,"author":{"gitId":"spinoandraptos"},"content":" /**","lastModifiedDate":"2023-10-04"},{"lineNumber":120,"author":{"gitId":"spinoandraptos"},"content":" * Overwrites all existing data in storage with","lastModifiedDate":"2023-10-04"},{"lineNumber":121,"author":{"gitId":"spinoandraptos"},"content":" * the current tasks in the task list.","lastModifiedDate":"2023-10-04"},{"lineNumber":122,"author":{"gitId":"spinoandraptos"},"content":" * Used after every task change and on program termination.","lastModifiedDate":"2023-10-04"},{"lineNumber":123,"author":{"gitId":"spinoandraptos"},"content":" *","lastModifiedDate":"2023-10-04"},{"lineNumber":124,"author":{"gitId":"spinoandraptos"},"content":" * @param tasks The task list to overwrite current data with.","lastModifiedDate":"2023-10-04"},{"lineNumber":125,"author":{"gitId":"spinoandraptos"},"content":" */","lastModifiedDate":"2023-10-04"},{"lineNumber":126,"author":{"gitId":"spinoandraptos"},"content":" public void updateData(TaskList tasks){","lastModifiedDate":"2023-10-04"},{"lineNumber":127,"author":{"gitId":"spinoandraptos"},"content":" try{","lastModifiedDate":"2023-10-04"},{"lineNumber":128,"author":{"gitId":"spinoandraptos"},"content":" //flush all current records","lastModifiedDate":"2023-10-04"},{"lineNumber":129,"author":{"gitId":"spinoandraptos"},"content":" writeToFile(dataFile.getPath(), \"Latest Tasks\" + System.lineSeparator(), false);","lastModifiedDate":"2023-10-04"},{"lineNumber":130,"author":{"gitId":"spinoandraptos"},"content":" ArrayList\u003cTask\u003e allTasks \u003d tasks.getAllTasks();","lastModifiedDate":"2023-10-04"},{"lineNumber":131,"author":{"gitId":"spinoandraptos"},"content":" for (Task task: allTasks) {","lastModifiedDate":"2023-10-04"},{"lineNumber":132,"author":{"gitId":"spinoandraptos"},"content":" switch (task.getTaskType()) {","lastModifiedDate":"2023-10-04"},{"lineNumber":133,"author":{"gitId":"spinoandraptos"},"content":" case TODO:","lastModifiedDate":"2023-10-04"},{"lineNumber":134,"author":{"gitId":"spinoandraptos"},"content":" if (task.taskIsDone()) {","lastModifiedDate":"2023-10-04"},{"lineNumber":135,"author":{"gitId":"spinoandraptos"},"content":" writeToFile(dataFile.getPath(), \"T | done | \" + task.getTaskDescription()","lastModifiedDate":"2023-10-04"},{"lineNumber":136,"author":{"gitId":"spinoandraptos"},"content":" + System.lineSeparator(), true);","lastModifiedDate":"2023-10-04"},{"lineNumber":137,"author":{"gitId":"spinoandraptos"},"content":" } else {","lastModifiedDate":"2023-10-04"},{"lineNumber":138,"author":{"gitId":"spinoandraptos"},"content":" writeToFile(dataFile.getPath(), \"T | undone | \" + task.getTaskDescription()","lastModifiedDate":"2023-10-04"},{"lineNumber":139,"author":{"gitId":"spinoandraptos"},"content":" + System.lineSeparator(), true);","lastModifiedDate":"2023-10-04"},{"lineNumber":140,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":141,"author":{"gitId":"spinoandraptos"},"content":" break;","lastModifiedDate":"2023-10-04"},{"lineNumber":142,"author":{"gitId":"spinoandraptos"},"content":" case DEADLINE:","lastModifiedDate":"2023-10-04"},{"lineNumber":143,"author":{"gitId":"spinoandraptos"},"content":" if (task.taskIsDone()) {","lastModifiedDate":"2023-10-04"},{"lineNumber":144,"author":{"gitId":"spinoandraptos"},"content":" writeToFile(dataFile.getPath(), \"D | done | \" + task.getTaskDescription()","lastModifiedDate":"2023-10-04"},{"lineNumber":145,"author":{"gitId":"spinoandraptos"},"content":" + \" | \" + task.getTaskTiming(true)","lastModifiedDate":"2023-10-04"},{"lineNumber":146,"author":{"gitId":"spinoandraptos"},"content":" + System.lineSeparator(), true);","lastModifiedDate":"2023-10-04"},{"lineNumber":147,"author":{"gitId":"spinoandraptos"},"content":" } else {","lastModifiedDate":"2023-10-04"},{"lineNumber":148,"author":{"gitId":"spinoandraptos"},"content":" writeToFile(dataFile.getPath(), \"D | undone | \" + task.getTaskDescription()","lastModifiedDate":"2023-10-04"},{"lineNumber":149,"author":{"gitId":"spinoandraptos"},"content":" + \" | \" + task.getTaskTiming(true)","lastModifiedDate":"2023-10-04"},{"lineNumber":150,"author":{"gitId":"spinoandraptos"},"content":" + System.lineSeparator(), true);","lastModifiedDate":"2023-10-04"},{"lineNumber":151,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":152,"author":{"gitId":"spinoandraptos"},"content":" break;","lastModifiedDate":"2023-10-04"},{"lineNumber":153,"author":{"gitId":"spinoandraptos"},"content":" case EVENT:","lastModifiedDate":"2023-10-04"},{"lineNumber":154,"author":{"gitId":"spinoandraptos"},"content":" if (task.taskIsDone()) {","lastModifiedDate":"2023-10-04"},{"lineNumber":155,"author":{"gitId":"spinoandraptos"},"content":" writeToFile(dataFile.getPath(), \"E | done | \" + task.getTaskDescription()","lastModifiedDate":"2023-10-04"},{"lineNumber":156,"author":{"gitId":"spinoandraptos"},"content":" + \" | \" + task.getTaskTiming(true)","lastModifiedDate":"2023-10-04"},{"lineNumber":157,"author":{"gitId":"spinoandraptos"},"content":" + System.lineSeparator(), true);","lastModifiedDate":"2023-10-04"},{"lineNumber":158,"author":{"gitId":"spinoandraptos"},"content":" } else {","lastModifiedDate":"2023-10-04"},{"lineNumber":159,"author":{"gitId":"spinoandraptos"},"content":" writeToFile(dataFile.getPath(), \"E | undone | \" + task.getTaskDescription()","lastModifiedDate":"2023-10-04"},{"lineNumber":160,"author":{"gitId":"spinoandraptos"},"content":" + \" | \" + task.getTaskTiming(true)","lastModifiedDate":"2023-10-04"},{"lineNumber":161,"author":{"gitId":"spinoandraptos"},"content":" + System.lineSeparator(), true);","lastModifiedDate":"2023-10-04"},{"lineNumber":162,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":163,"author":{"gitId":"spinoandraptos"},"content":" break;","lastModifiedDate":"2023-10-04"},{"lineNumber":164,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":165,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":166,"author":{"gitId":"spinoandraptos"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":167,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":168,"author":{"gitId":"spinoandraptos"},"content":" catch(NullPointerException | IOException invalidFilePath){","lastModifiedDate":"2023-10-04"},{"lineNumber":169,"author":{"gitId":"spinoandraptos"},"content":" System.out.println(\" \" + invalidFilePath.getMessage());","lastModifiedDate":"2023-10-04"},{"lineNumber":170,"author":{"gitId":"spinoandraptos"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2023-10-04"},{"lineNumber":171,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":172,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":173,"author":{"gitId":"spinoandraptos"},"content":"}","lastModifiedDate":"2023-10-04"}],"authorContributionMap":{"spinoandraptos":173}},{"path":"src/main/java/rene/task/Deadline.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"spinoandraptos"},"content":"package rene.task;","lastModifiedDate":"2023-10-04"},{"lineNumber":2,"author":{"gitId":"spinoandraptos"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":3,"author":{"gitId":"spinoandraptos"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-10-04"},{"lineNumber":4,"author":{"gitId":"spinoandraptos"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-10-04"},{"lineNumber":5,"author":{"gitId":"spinoandraptos"},"content":"/**","lastModifiedDate":"2023-10-04"},{"lineNumber":6,"author":{"gitId":"spinoandraptos"},"content":" * Represents deadline tasks in the current task list","lastModifiedDate":"2023-10-04"},{"lineNumber":7,"author":{"gitId":"spinoandraptos"},"content":" */","lastModifiedDate":"2023-10-04"},{"lineNumber":8,"author":{"gitId":"spinoandraptos"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-10-04"},{"lineNumber":9,"author":{"gitId":"spinoandraptos"},"content":" private LocalDateTime dueTime;","lastModifiedDate":"2023-10-04"},{"lineNumber":10,"author":{"gitId":"spinoandraptos"},"content":" /**","lastModifiedDate":"2023-10-04"},{"lineNumber":11,"author":{"gitId":"spinoandraptos"},"content":" * Creates a new task of type deadline.","lastModifiedDate":"2023-10-04"},{"lineNumber":12,"author":{"gitId":"spinoandraptos"},"content":" *","lastModifiedDate":"2023-10-04"},{"lineNumber":13,"author":{"gitId":"spinoandraptos"},"content":" * @param description Task description.","lastModifiedDate":"2023-10-04"},{"lineNumber":14,"author":{"gitId":"spinoandraptos"},"content":" * @param dueTime The deadline of the task.","lastModifiedDate":"2023-10-04"},{"lineNumber":15,"author":{"gitId":"spinoandraptos"},"content":" */","lastModifiedDate":"2023-10-04"},{"lineNumber":16,"author":{"gitId":"spinoandraptos"},"content":" public Deadline(String description, LocalDateTime dueTime){","lastModifiedDate":"2023-10-04"},{"lineNumber":17,"author":{"gitId":"spinoandraptos"},"content":" super(description, TaskType.DEADLINE);","lastModifiedDate":"2023-10-04"},{"lineNumber":18,"author":{"gitId":"spinoandraptos"},"content":" this.dueTime \u003d dueTime;","lastModifiedDate":"2023-10-04"},{"lineNumber":19,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":20,"author":{"gitId":"spinoandraptos"},"content":" /**","lastModifiedDate":"2023-10-04"},{"lineNumber":21,"author":{"gitId":"spinoandraptos"},"content":" * Returns the due time of the deadline","lastModifiedDate":"2023-10-04"},{"lineNumber":22,"author":{"gitId":"spinoandraptos"},"content":" * in a specially formatted style.","lastModifiedDate":"2023-10-04"},{"lineNumber":23,"author":{"gitId":"spinoandraptos"},"content":" *","lastModifiedDate":"2023-10-04"},{"lineNumber":24,"author":{"gitId":"spinoandraptos"},"content":" * @param useDefaultTiming If true, uses the default","lastModifiedDate":"2023-10-04"},{"lineNumber":25,"author":{"gitId":"spinoandraptos"},"content":" * date time format (dd-MM-yyyy HH:mm)","lastModifiedDate":"2023-10-04"},{"lineNumber":26,"author":{"gitId":"spinoandraptos"},"content":" * used to store date time data in the","lastModifiedDate":"2023-10-04"},{"lineNumber":27,"author":{"gitId":"spinoandraptos"},"content":" * hard disk. Else, uses the date time format","lastModifiedDate":"2023-10-04"},{"lineNumber":28,"author":{"gitId":"spinoandraptos"},"content":" * (E, MMM dd, yyyy hh a).","lastModifiedDate":"2023-10-04"},{"lineNumber":29,"author":{"gitId":"spinoandraptos"},"content":" */","lastModifiedDate":"2023-10-04"},{"lineNumber":30,"author":{"gitId":"spinoandraptos"},"content":" @Override","lastModifiedDate":"2023-10-04"},{"lineNumber":31,"author":{"gitId":"spinoandraptos"},"content":" public String getTaskTiming(boolean useDefaultTiming) {","lastModifiedDate":"2023-10-04"},{"lineNumber":32,"author":{"gitId":"spinoandraptos"},"content":" String deadlineTiming;","lastModifiedDate":"2023-10-04"},{"lineNumber":33,"author":{"gitId":"spinoandraptos"},"content":" if(useDefaultTiming){","lastModifiedDate":"2023-10-04"},{"lineNumber":34,"author":{"gitId":"spinoandraptos"},"content":" deadlineTiming \u003d dueTime.format(DateTimeFormatter.ofPattern(\"dd-MM-yyyy HH:mm\"));","lastModifiedDate":"2023-10-04"},{"lineNumber":35,"author":{"gitId":"spinoandraptos"},"content":" } else {","lastModifiedDate":"2023-10-04"},{"lineNumber":36,"author":{"gitId":"spinoandraptos"},"content":" deadlineTiming \u003d dueTime.format(DateTimeFormatter.ofPattern(\"E, MMM dd yyyy HH:mm\"));","lastModifiedDate":"2023-10-04"},{"lineNumber":37,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":38,"author":{"gitId":"spinoandraptos"},"content":" return \"(by: \" + deadlineTiming + \")\";","lastModifiedDate":"2023-10-04"},{"lineNumber":39,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":40,"author":{"gitId":"spinoandraptos"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":41,"author":{"gitId":"spinoandraptos"},"content":"}","lastModifiedDate":"2023-10-04"}],"authorContributionMap":{"spinoandraptos":41}},{"path":"src/main/java/rene/task/Event.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"spinoandraptos"},"content":"package rene.task;","lastModifiedDate":"2023-10-04"},{"lineNumber":2,"author":{"gitId":"spinoandraptos"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":3,"author":{"gitId":"spinoandraptos"},"content":"import java.time.LocalDateTime ;","lastModifiedDate":"2023-10-04"},{"lineNumber":4,"author":{"gitId":"spinoandraptos"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-10-04"},{"lineNumber":5,"author":{"gitId":"spinoandraptos"},"content":"/**","lastModifiedDate":"2023-10-04"},{"lineNumber":6,"author":{"gitId":"spinoandraptos"},"content":" * Represents event tasks in the current task list","lastModifiedDate":"2023-10-04"},{"lineNumber":7,"author":{"gitId":"spinoandraptos"},"content":" */","lastModifiedDate":"2023-10-04"},{"lineNumber":8,"author":{"gitId":"spinoandraptos"},"content":"public class Event extends Task{","lastModifiedDate":"2023-10-04"},{"lineNumber":9,"author":{"gitId":"spinoandraptos"},"content":" private LocalDateTime startTime;","lastModifiedDate":"2023-10-04"},{"lineNumber":10,"author":{"gitId":"spinoandraptos"},"content":" private LocalDateTime endTime;","lastModifiedDate":"2023-10-04"},{"lineNumber":11,"author":{"gitId":"spinoandraptos"},"content":" /**","lastModifiedDate":"2023-10-04"},{"lineNumber":12,"author":{"gitId":"spinoandraptos"},"content":" * Creates a new task of type event.","lastModifiedDate":"2023-10-04"},{"lineNumber":13,"author":{"gitId":"spinoandraptos"},"content":" *","lastModifiedDate":"2023-10-04"},{"lineNumber":14,"author":{"gitId":"spinoandraptos"},"content":" * @param description Task description.","lastModifiedDate":"2023-10-04"},{"lineNumber":15,"author":{"gitId":"spinoandraptos"},"content":" * @param startTime The starting time of event.","lastModifiedDate":"2023-10-04"},{"lineNumber":16,"author":{"gitId":"spinoandraptos"},"content":" * @param endTime The ending time of event.","lastModifiedDate":"2023-10-04"},{"lineNumber":17,"author":{"gitId":"spinoandraptos"},"content":" */","lastModifiedDate":"2023-10-04"},{"lineNumber":18,"author":{"gitId":"spinoandraptos"},"content":" public Event(String description, LocalDateTime startTime, LocalDateTime endTime){","lastModifiedDate":"2023-10-04"},{"lineNumber":19,"author":{"gitId":"spinoandraptos"},"content":" super(description, TaskType.EVENT);","lastModifiedDate":"2023-10-04"},{"lineNumber":20,"author":{"gitId":"spinoandraptos"},"content":" this.startTime \u003d startTime;","lastModifiedDate":"2023-10-04"},{"lineNumber":21,"author":{"gitId":"spinoandraptos"},"content":" this.endTime \u003d endTime;","lastModifiedDate":"2023-10-04"},{"lineNumber":22,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":23,"author":{"gitId":"spinoandraptos"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":24,"author":{"gitId":"spinoandraptos"},"content":" /**","lastModifiedDate":"2023-10-04"},{"lineNumber":25,"author":{"gitId":"spinoandraptos"},"content":" * Returns the start and end time of the event","lastModifiedDate":"2023-10-04"},{"lineNumber":26,"author":{"gitId":"spinoandraptos"},"content":" * in a specially formatted style.","lastModifiedDate":"2023-10-04"},{"lineNumber":27,"author":{"gitId":"spinoandraptos"},"content":" *","lastModifiedDate":"2023-10-04"},{"lineNumber":28,"author":{"gitId":"spinoandraptos"},"content":" * @param useDefaultTiming If true, uses the default","lastModifiedDate":"2023-10-04"},{"lineNumber":29,"author":{"gitId":"spinoandraptos"},"content":" * date time format (dd-MM-yyyy HH:mm)","lastModifiedDate":"2023-10-04"},{"lineNumber":30,"author":{"gitId":"spinoandraptos"},"content":" * used to store date time data in the","lastModifiedDate":"2023-10-04"},{"lineNumber":31,"author":{"gitId":"spinoandraptos"},"content":" * hard disk. Else, uses the date time format","lastModifiedDate":"2023-10-04"},{"lineNumber":32,"author":{"gitId":"spinoandraptos"},"content":" * (E, MMM dd, yyyy hh a).","lastModifiedDate":"2023-10-04"},{"lineNumber":33,"author":{"gitId":"spinoandraptos"},"content":" */","lastModifiedDate":"2023-10-04"},{"lineNumber":34,"author":{"gitId":"spinoandraptos"},"content":" @Override","lastModifiedDate":"2023-10-04"},{"lineNumber":35,"author":{"gitId":"spinoandraptos"},"content":" public String getTaskTiming(boolean useDefaultTiming) {","lastModifiedDate":"2023-10-04"},{"lineNumber":36,"author":{"gitId":"spinoandraptos"},"content":" String startTiming;","lastModifiedDate":"2023-10-04"},{"lineNumber":37,"author":{"gitId":"spinoandraptos"},"content":" String endTiming;","lastModifiedDate":"2023-10-04"},{"lineNumber":38,"author":{"gitId":"spinoandraptos"},"content":" if(useDefaultTiming){","lastModifiedDate":"2023-10-04"},{"lineNumber":39,"author":{"gitId":"spinoandraptos"},"content":" startTiming \u003d startTime.format(DateTimeFormatter.ofPattern(\"dd-MM-yyyy HH:mm\"));","lastModifiedDate":"2023-10-04"},{"lineNumber":40,"author":{"gitId":"spinoandraptos"},"content":" endTiming \u003d endTime.format(DateTimeFormatter.ofPattern(\"dd-MM-yyyy HH:mm\"));","lastModifiedDate":"2023-10-04"},{"lineNumber":41,"author":{"gitId":"spinoandraptos"},"content":" } else {","lastModifiedDate":"2023-10-04"},{"lineNumber":42,"author":{"gitId":"spinoandraptos"},"content":" startTiming \u003d startTime.format(DateTimeFormatter.ofPattern(\"E, MMM dd, yyyy hh a\"));","lastModifiedDate":"2023-10-04"},{"lineNumber":43,"author":{"gitId":"spinoandraptos"},"content":" endTiming \u003d endTime.format(DateTimeFormatter.ofPattern(\"E, MMM dd, yyyy hh a\"));","lastModifiedDate":"2023-10-04"},{"lineNumber":44,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":45,"author":{"gitId":"spinoandraptos"},"content":" return \"(from: \" + startTiming + \" to: \" + endTiming + \")\";","lastModifiedDate":"2023-10-04"},{"lineNumber":46,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":47,"author":{"gitId":"spinoandraptos"},"content":"}","lastModifiedDate":"2023-10-04"}],"authorContributionMap":{"spinoandraptos":47}},{"path":"src/main/java/rene/task/Task.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"spinoandraptos"},"content":"package rene.task;","lastModifiedDate":"2023-10-04"},{"lineNumber":2,"author":{"gitId":"spinoandraptos"},"content":"/**","lastModifiedDate":"2023-10-04"},{"lineNumber":3,"author":{"gitId":"spinoandraptos"},"content":" * Represents all tasks in the task list in general.","lastModifiedDate":"2023-10-04"},{"lineNumber":4,"author":{"gitId":"spinoandraptos"},"content":" */","lastModifiedDate":"2023-10-04"},{"lineNumber":5,"author":{"gitId":"spinoandraptos"},"content":"public class Task {","lastModifiedDate":"2023-10-04"},{"lineNumber":6,"author":{"gitId":"spinoandraptos"},"content":" public enum TaskType {TODO, EVENT, DEADLINE, DEFAULT};","lastModifiedDate":"2023-10-04"},{"lineNumber":7,"author":{"gitId":"spinoandraptos"},"content":" private TaskType taskType;","lastModifiedDate":"2023-10-04"},{"lineNumber":8,"author":{"gitId":"spinoandraptos"},"content":" private String description;","lastModifiedDate":"2023-10-04"},{"lineNumber":9,"author":{"gitId":"spinoandraptos"},"content":" private boolean done;","lastModifiedDate":"2023-10-04"},{"lineNumber":10,"author":{"gitId":"spinoandraptos"},"content":" /**","lastModifiedDate":"2023-10-04"},{"lineNumber":11,"author":{"gitId":"spinoandraptos"},"content":" * Mark a task as done.","lastModifiedDate":"2023-10-04"},{"lineNumber":12,"author":{"gitId":"spinoandraptos"},"content":" */","lastModifiedDate":"2023-10-04"},{"lineNumber":13,"author":{"gitId":"spinoandraptos"},"content":" public void markAsDone(){","lastModifiedDate":"2023-10-04"},{"lineNumber":14,"author":{"gitId":"spinoandraptos"},"content":" done \u003d true;","lastModifiedDate":"2023-10-04"},{"lineNumber":15,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":16,"author":{"gitId":"spinoandraptos"},"content":" /**","lastModifiedDate":"2023-10-04"},{"lineNumber":17,"author":{"gitId":"spinoandraptos"},"content":" * Mark a task as not done.","lastModifiedDate":"2023-10-04"},{"lineNumber":18,"author":{"gitId":"spinoandraptos"},"content":" */","lastModifiedDate":"2023-10-04"},{"lineNumber":19,"author":{"gitId":"spinoandraptos"},"content":" public void markAsNotDone(){","lastModifiedDate":"2023-10-04"},{"lineNumber":20,"author":{"gitId":"spinoandraptos"},"content":" done \u003d false;","lastModifiedDate":"2023-10-04"},{"lineNumber":21,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":22,"author":{"gitId":"spinoandraptos"},"content":" /**","lastModifiedDate":"2023-10-04"},{"lineNumber":23,"author":{"gitId":"spinoandraptos"},"content":" * Creates a new task with a blank description,","lastModifiedDate":"2023-10-04"},{"lineNumber":24,"author":{"gitId":"spinoandraptos"},"content":" * not done status and default task type.","lastModifiedDate":"2023-10-04"},{"lineNumber":25,"author":{"gitId":"spinoandraptos"},"content":" */","lastModifiedDate":"2023-10-04"},{"lineNumber":26,"author":{"gitId":"spinoandraptos"},"content":" public Task(){","lastModifiedDate":"2023-10-04"},{"lineNumber":27,"author":{"gitId":"spinoandraptos"},"content":" description \u003d \"\";","lastModifiedDate":"2023-10-04"},{"lineNumber":28,"author":{"gitId":"spinoandraptos"},"content":" done \u003d false;","lastModifiedDate":"2023-10-04"},{"lineNumber":29,"author":{"gitId":"spinoandraptos"},"content":" taskType \u003d TaskType.DEFAULT;","lastModifiedDate":"2023-10-04"},{"lineNumber":30,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":31,"author":{"gitId":"spinoandraptos"},"content":" /**","lastModifiedDate":"2023-10-04"},{"lineNumber":32,"author":{"gitId":"spinoandraptos"},"content":" * Creates a new task with a given description,","lastModifiedDate":"2023-10-04"},{"lineNumber":33,"author":{"gitId":"spinoandraptos"},"content":" * not done status and default task type.","lastModifiedDate":"2023-10-04"},{"lineNumber":34,"author":{"gitId":"spinoandraptos"},"content":" *","lastModifiedDate":"2023-10-04"},{"lineNumber":35,"author":{"gitId":"spinoandraptos"},"content":" * @param description Description given to the task.","lastModifiedDate":"2023-10-04"},{"lineNumber":36,"author":{"gitId":"spinoandraptos"},"content":" */","lastModifiedDate":"2023-10-04"},{"lineNumber":37,"author":{"gitId":"spinoandraptos"},"content":" public Task(String description){","lastModifiedDate":"2023-10-04"},{"lineNumber":38,"author":{"gitId":"spinoandraptos"},"content":" this.description \u003d description;","lastModifiedDate":"2023-10-04"},{"lineNumber":39,"author":{"gitId":"spinoandraptos"},"content":" done \u003d false;","lastModifiedDate":"2023-10-04"},{"lineNumber":40,"author":{"gitId":"spinoandraptos"},"content":" taskType \u003d TaskType.DEFAULT;","lastModifiedDate":"2023-10-04"},{"lineNumber":41,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":42,"author":{"gitId":"spinoandraptos"},"content":" /**","lastModifiedDate":"2023-10-04"},{"lineNumber":43,"author":{"gitId":"spinoandraptos"},"content":" * Creates a new task with a given description,","lastModifiedDate":"2023-10-04"},{"lineNumber":44,"author":{"gitId":"spinoandraptos"},"content":" * not done status and given task type.","lastModifiedDate":"2023-10-04"},{"lineNumber":45,"author":{"gitId":"spinoandraptos"},"content":" *","lastModifiedDate":"2023-10-04"},{"lineNumber":46,"author":{"gitId":"spinoandraptos"},"content":" * @param description Description given to the task.","lastModifiedDate":"2023-10-04"},{"lineNumber":47,"author":{"gitId":"spinoandraptos"},"content":" * @param taskType Type given to the task.","lastModifiedDate":"2023-10-04"},{"lineNumber":48,"author":{"gitId":"spinoandraptos"},"content":" */","lastModifiedDate":"2023-10-04"},{"lineNumber":49,"author":{"gitId":"spinoandraptos"},"content":" public Task(String description, TaskType taskType){","lastModifiedDate":"2023-10-04"},{"lineNumber":50,"author":{"gitId":"spinoandraptos"},"content":" this.description \u003d description;","lastModifiedDate":"2023-10-04"},{"lineNumber":51,"author":{"gitId":"spinoandraptos"},"content":" done \u003d false;","lastModifiedDate":"2023-10-04"},{"lineNumber":52,"author":{"gitId":"spinoandraptos"},"content":" this.taskType \u003d taskType;","lastModifiedDate":"2023-10-04"},{"lineNumber":53,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":54,"author":{"gitId":"spinoandraptos"},"content":" /**","lastModifiedDate":"2023-10-04"},{"lineNumber":55,"author":{"gitId":"spinoandraptos"},"content":" * Checks if a task has been done.","lastModifiedDate":"2023-10-04"},{"lineNumber":56,"author":{"gitId":"spinoandraptos"},"content":" */","lastModifiedDate":"2023-10-04"},{"lineNumber":57,"author":{"gitId":"spinoandraptos"},"content":" public boolean taskIsDone(){","lastModifiedDate":"2023-10-04"},{"lineNumber":58,"author":{"gitId":"spinoandraptos"},"content":" return done;","lastModifiedDate":"2023-10-04"},{"lineNumber":59,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":60,"author":{"gitId":"spinoandraptos"},"content":" /**","lastModifiedDate":"2023-10-04"},{"lineNumber":61,"author":{"gitId":"spinoandraptos"},"content":" * Returns task description.","lastModifiedDate":"2023-10-04"},{"lineNumber":62,"author":{"gitId":"spinoandraptos"},"content":" */","lastModifiedDate":"2023-10-04"},{"lineNumber":63,"author":{"gitId":"spinoandraptos"},"content":" public String getTaskDescription(){","lastModifiedDate":"2023-10-04"},{"lineNumber":64,"author":{"gitId":"spinoandraptos"},"content":" return description;","lastModifiedDate":"2023-10-04"},{"lineNumber":65,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":66,"author":{"gitId":"spinoandraptos"},"content":" /**","lastModifiedDate":"2023-10-04"},{"lineNumber":67,"author":{"gitId":"spinoandraptos"},"content":" * Returns task timing details.","lastModifiedDate":"2023-10-04"},{"lineNumber":68,"author":{"gitId":"spinoandraptos"},"content":" */","lastModifiedDate":"2023-10-04"},{"lineNumber":69,"author":{"gitId":"spinoandraptos"},"content":" public String getTaskTiming(boolean useDefaultTiming){","lastModifiedDate":"2023-10-04"},{"lineNumber":70,"author":{"gitId":"spinoandraptos"},"content":" return \"\";","lastModifiedDate":"2023-10-04"},{"lineNumber":71,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":72,"author":{"gitId":"spinoandraptos"},"content":" /**","lastModifiedDate":"2023-10-04"},{"lineNumber":73,"author":{"gitId":"spinoandraptos"},"content":" * Returns task type.","lastModifiedDate":"2023-10-04"},{"lineNumber":74,"author":{"gitId":"spinoandraptos"},"content":" */","lastModifiedDate":"2023-10-04"},{"lineNumber":75,"author":{"gitId":"spinoandraptos"},"content":" public TaskType getTaskType(){","lastModifiedDate":"2023-10-04"},{"lineNumber":76,"author":{"gitId":"spinoandraptos"},"content":" return taskType;","lastModifiedDate":"2023-10-04"},{"lineNumber":77,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":78,"author":{"gitId":"spinoandraptos"},"content":"}","lastModifiedDate":"2023-10-04"}],"authorContributionMap":{"spinoandraptos":78}},{"path":"src/main/java/rene/task/ToDo.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"spinoandraptos"},"content":"package rene.task;","lastModifiedDate":"2023-10-04"},{"lineNumber":2,"author":{"gitId":"spinoandraptos"},"content":"/**","lastModifiedDate":"2023-10-04"},{"lineNumber":3,"author":{"gitId":"spinoandraptos"},"content":" * Represents todo tasks in the current task list","lastModifiedDate":"2023-10-04"},{"lineNumber":4,"author":{"gitId":"spinoandraptos"},"content":" */","lastModifiedDate":"2023-10-04"},{"lineNumber":5,"author":{"gitId":"spinoandraptos"},"content":"public class ToDo extends Task {","lastModifiedDate":"2023-10-04"},{"lineNumber":6,"author":{"gitId":"spinoandraptos"},"content":" /**","lastModifiedDate":"2023-10-04"},{"lineNumber":7,"author":{"gitId":"spinoandraptos"},"content":" * Creates a new task of type todo.","lastModifiedDate":"2023-10-04"},{"lineNumber":8,"author":{"gitId":"spinoandraptos"},"content":" *","lastModifiedDate":"2023-10-04"},{"lineNumber":9,"author":{"gitId":"spinoandraptos"},"content":" * @param description Task description.","lastModifiedDate":"2023-10-04"},{"lineNumber":10,"author":{"gitId":"spinoandraptos"},"content":" */","lastModifiedDate":"2023-10-04"},{"lineNumber":11,"author":{"gitId":"spinoandraptos"},"content":" public ToDo(String description){","lastModifiedDate":"2023-10-04"},{"lineNumber":12,"author":{"gitId":"spinoandraptos"},"content":" super(description, TaskType.TODO);","lastModifiedDate":"2023-10-04"},{"lineNumber":13,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":14,"author":{"gitId":"spinoandraptos"},"content":"}","lastModifiedDate":"2023-10-04"}],"authorContributionMap":{"spinoandraptos":14}},{"path":"src/main/java/rene/tasklist/TaskList.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"spinoandraptos"},"content":"package rene.tasklist;","lastModifiedDate":"2023-10-04"},{"lineNumber":2,"author":{"gitId":"spinoandraptos"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":3,"author":{"gitId":"spinoandraptos"},"content":"import rene.task.Task;","lastModifiedDate":"2023-10-04"},{"lineNumber":4,"author":{"gitId":"spinoandraptos"},"content":"import rene.task.ToDo;","lastModifiedDate":"2023-10-04"},{"lineNumber":5,"author":{"gitId":"spinoandraptos"},"content":"import rene.task.Deadline;","lastModifiedDate":"2023-10-04"},{"lineNumber":6,"author":{"gitId":"spinoandraptos"},"content":"import rene.task.Event;","lastModifiedDate":"2023-10-04"},{"lineNumber":7,"author":{"gitId":"spinoandraptos"},"content":"import rene.exception.ReneExceptions;","lastModifiedDate":"2023-10-04"},{"lineNumber":8,"author":{"gitId":"spinoandraptos"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":9,"author":{"gitId":"spinoandraptos"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-10-04"},{"lineNumber":10,"author":{"gitId":"spinoandraptos"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-10-04"},{"lineNumber":11,"author":{"gitId":"spinoandraptos"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-10-04"},{"lineNumber":12,"author":{"gitId":"spinoandraptos"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-10-04"},{"lineNumber":13,"author":{"gitId":"spinoandraptos"},"content":"/**","lastModifiedDate":"2023-10-04"},{"lineNumber":14,"author":{"gitId":"spinoandraptos"},"content":" * Represents the list of tasks currently registered in the chatbot.","lastModifiedDate":"2023-10-04"},{"lineNumber":15,"author":{"gitId":"spinoandraptos"},"content":" * This list is created on program start and disposed on program termination.","lastModifiedDate":"2023-10-04"},{"lineNumber":16,"author":{"gitId":"spinoandraptos"},"content":" */","lastModifiedDate":"2023-10-04"},{"lineNumber":17,"author":{"gitId":"spinoandraptos"},"content":"public class TaskList {","lastModifiedDate":"2023-10-04"},{"lineNumber":18,"author":{"gitId":"spinoandraptos"},"content":" private ArrayList\u003cTask\u003e allTasks; //array of inputs","lastModifiedDate":"2023-10-04"},{"lineNumber":19,"author":{"gitId":"spinoandraptos"},"content":" DateTimeFormatter inputDateTimeFormatter \u003d DateTimeFormatter.ofPattern( \"dd-MM-yyyy HH:mm\" );","lastModifiedDate":"2023-10-04"},{"lineNumber":20,"author":{"gitId":"spinoandraptos"},"content":" /**","lastModifiedDate":"2023-10-04"},{"lineNumber":21,"author":{"gitId":"spinoandraptos"},"content":" * Adds a user-requested task to the current task list.","lastModifiedDate":"2023-10-04"},{"lineNumber":22,"author":{"gitId":"spinoandraptos"},"content":" * Depending on the type of task to add to the list,","lastModifiedDate":"2023-10-04"},{"lineNumber":23,"author":{"gitId":"spinoandraptos"},"content":" * the program extracts the relevant information from","lastModifiedDate":"2023-10-04"},{"lineNumber":24,"author":{"gitId":"spinoandraptos"},"content":" * the user input and builds a Task object to be added.","lastModifiedDate":"2023-10-04"},{"lineNumber":25,"author":{"gitId":"spinoandraptos"},"content":" *","lastModifiedDate":"2023-10-04"},{"lineNumber":26,"author":{"gitId":"spinoandraptos"},"content":" * @param input The full user input from CLI.","lastModifiedDate":"2023-10-04"},{"lineNumber":27,"author":{"gitId":"spinoandraptos"},"content":" * @param taskType The type of task to be added (TODO, DEADLINE, EVENT).","lastModifiedDate":"2023-10-04"},{"lineNumber":28,"author":{"gitId":"spinoandraptos"},"content":" * @param showMessage If true, program will print response message on CLI after task is added.","lastModifiedDate":"2023-10-04"},{"lineNumber":29,"author":{"gitId":"spinoandraptos"},"content":" */","lastModifiedDate":"2023-10-04"},{"lineNumber":30,"author":{"gitId":"spinoandraptos"},"content":" public void addToTaskList(String input, Task.TaskType taskType, boolean showMessage){","lastModifiedDate":"2023-10-04"},{"lineNumber":31,"author":{"gitId":"spinoandraptos"},"content":" switch (taskType) {","lastModifiedDate":"2023-10-04"},{"lineNumber":32,"author":{"gitId":"spinoandraptos"},"content":" case TODO:","lastModifiedDate":"2023-10-04"},{"lineNumber":33,"author":{"gitId":"spinoandraptos"},"content":" try {","lastModifiedDate":"2023-10-04"},{"lineNumber":34,"author":{"gitId":"spinoandraptos"},"content":" String toDoDescription \u003d input.split(\"todo\")[1].strip();","lastModifiedDate":"2023-10-04"},{"lineNumber":35,"author":{"gitId":"spinoandraptos"},"content":" if (toDoDescription.equals(\"\")) {","lastModifiedDate":"2023-10-04"},{"lineNumber":36,"author":{"gitId":"spinoandraptos"},"content":" throw new ReneExceptions(\"Incomplete Command\");","lastModifiedDate":"2023-10-04"},{"lineNumber":37,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":38,"author":{"gitId":"spinoandraptos"},"content":" allTasks.add(new ToDo(toDoDescription));","lastModifiedDate":"2023-10-04"},{"lineNumber":39,"author":{"gitId":"spinoandraptos"},"content":" if (showMessage) {","lastModifiedDate":"2023-10-04"},{"lineNumber":40,"author":{"gitId":"spinoandraptos"},"content":" System.out.println(\" I have added the following task OwO:\");","lastModifiedDate":"2023-10-04"},{"lineNumber":41,"author":{"gitId":"spinoandraptos"},"content":" System.out.printf(\" [T][] %s\\n\", viewTaskByIndex(getTaskListSize()));","lastModifiedDate":"2023-10-04"},{"lineNumber":42,"author":{"gitId":"spinoandraptos"},"content":" System.out.println(\" Now you have \" + getTaskListSize() + \" tasks in the list! UWU\");","lastModifiedDate":"2023-10-04"},{"lineNumber":43,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":44,"author":{"gitId":"spinoandraptos"},"content":" break;","lastModifiedDate":"2023-10-04"},{"lineNumber":45,"author":{"gitId":"spinoandraptos"},"content":" } catch (ArrayIndexOutOfBoundsException | ReneExceptions incompleteCommand) {","lastModifiedDate":"2023-10-04"},{"lineNumber":46,"author":{"gitId":"spinoandraptos"},"content":" System.out.println(\" Ohnus! You did not use give todo a name!\");","lastModifiedDate":"2023-10-04"},{"lineNumber":47,"author":{"gitId":"spinoandraptos"},"content":" System.out.println(\" Pwease format your input as todo [task name]!\");","lastModifiedDate":"2023-10-04"},{"lineNumber":48,"author":{"gitId":"spinoandraptos"},"content":" return;","lastModifiedDate":"2023-10-04"},{"lineNumber":49,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":50,"author":{"gitId":"spinoandraptos"},"content":" case DEADLINE:","lastModifiedDate":"2023-10-04"},{"lineNumber":51,"author":{"gitId":"spinoandraptos"},"content":" String deadlineTiming;","lastModifiedDate":"2023-10-04"},{"lineNumber":52,"author":{"gitId":"spinoandraptos"},"content":" String deadlineDescription;","lastModifiedDate":"2023-10-04"},{"lineNumber":53,"author":{"gitId":"spinoandraptos"},"content":" String[] deadlineDetails;","lastModifiedDate":"2023-10-04"},{"lineNumber":54,"author":{"gitId":"spinoandraptos"},"content":" try {","lastModifiedDate":"2023-10-04"},{"lineNumber":55,"author":{"gitId":"spinoandraptos"},"content":" deadlineDetails \u003d input.split(\"deadline\")[1].strip().split(\"/\");","lastModifiedDate":"2023-10-04"},{"lineNumber":56,"author":{"gitId":"spinoandraptos"},"content":" } catch (ArrayIndexOutOfBoundsException incompleteCommand) {","lastModifiedDate":"2023-10-04"},{"lineNumber":57,"author":{"gitId":"spinoandraptos"},"content":" System.out.println(\" Ohnus! You did not use give deadline a name!\");","lastModifiedDate":"2023-10-04"},{"lineNumber":58,"author":{"gitId":"spinoandraptos"},"content":" System.out.println(\" Pwease format your input as deadline [task name] /by [time]!\");","lastModifiedDate":"2023-10-04"},{"lineNumber":59,"author":{"gitId":"spinoandraptos"},"content":" return;","lastModifiedDate":"2023-10-04"},{"lineNumber":60,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":61,"author":{"gitId":"spinoandraptos"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":62,"author":{"gitId":"spinoandraptos"},"content":" try {","lastModifiedDate":"2023-10-04"},{"lineNumber":63,"author":{"gitId":"spinoandraptos"},"content":" deadlineDescription \u003d deadlineDetails[0].strip();","lastModifiedDate":"2023-10-04"},{"lineNumber":64,"author":{"gitId":"spinoandraptos"},"content":" if (deadlineDescription.equals(\"\")) {","lastModifiedDate":"2023-10-04"},{"lineNumber":65,"author":{"gitId":"spinoandraptos"},"content":" throw new ReneExceptions(\"Incomplete Deadline Description\");","lastModifiedDate":"2023-10-04"},{"lineNumber":66,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":67,"author":{"gitId":"spinoandraptos"},"content":" deadlineTiming \u003d deadlineDetails[1].strip().split(\"by\")[1].strip();","lastModifiedDate":"2023-10-04"},{"lineNumber":68,"author":{"gitId":"spinoandraptos"},"content":" if (deadlineTiming.equals(\"\")) {","lastModifiedDate":"2023-10-04"},{"lineNumber":69,"author":{"gitId":"spinoandraptos"},"content":" throw new ReneExceptions(\"Incomplete Due Time\");","lastModifiedDate":"2023-10-04"},{"lineNumber":70,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":71,"author":{"gitId":"spinoandraptos"},"content":" LocalDateTime deadlineDateTime \u003d LocalDateTime.parse(deadlineTiming, inputDateTimeFormatter);","lastModifiedDate":"2023-10-04"},{"lineNumber":72,"author":{"gitId":"spinoandraptos"},"content":" allTasks.add(new Deadline(deadlineDescription, deadlineDateTime));","lastModifiedDate":"2023-10-04"},{"lineNumber":73,"author":{"gitId":"spinoandraptos"},"content":" if (showMessage) {","lastModifiedDate":"2023-10-04"},{"lineNumber":74,"author":{"gitId":"spinoandraptos"},"content":" System.out.println(\" I have added the following task OwO:\");","lastModifiedDate":"2023-10-04"},{"lineNumber":75,"author":{"gitId":"spinoandraptos"},"content":" System.out.printf(\" [D][] %s\\n\", viewTaskByIndex(getTaskListSize()));","lastModifiedDate":"2023-10-04"},{"lineNumber":76,"author":{"gitId":"spinoandraptos"},"content":" System.out.println(\" Now you have \" + getTaskListSize() + \" tasks in the list! UWU\");","lastModifiedDate":"2023-10-04"},{"lineNumber":77,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":78,"author":{"gitId":"spinoandraptos"},"content":" break;","lastModifiedDate":"2023-10-04"},{"lineNumber":79,"author":{"gitId":"spinoandraptos"},"content":" } catch (IndexOutOfBoundsException incompleteCommand) {","lastModifiedDate":"2023-10-04"},{"lineNumber":80,"author":{"gitId":"spinoandraptos"},"content":" System.out.println(\" Ohnus! You did not use \u0027/by\u0027 to signal due time!\");","lastModifiedDate":"2023-10-04"},{"lineNumber":81,"author":{"gitId":"spinoandraptos"},"content":" System.out.println(\" Pwease format your input as deadline [task name] /by [time]!\");","lastModifiedDate":"2023-10-04"},{"lineNumber":82,"author":{"gitId":"spinoandraptos"},"content":" return;","lastModifiedDate":"2023-10-04"},{"lineNumber":83,"author":{"gitId":"spinoandraptos"},"content":" } catch (DateTimeParseException incorrectTimeFormat){","lastModifiedDate":"2023-10-04"},{"lineNumber":84,"author":{"gitId":"spinoandraptos"},"content":" System.out.println(\" Ohnus! You did not use give a correct date time for due time!\");","lastModifiedDate":"2023-10-04"},{"lineNumber":85,"author":{"gitId":"spinoandraptos"},"content":" System.out.println(\" Pwease format your deadline as dd-MM-yyyy HH:mm!\");","lastModifiedDate":"2023-10-04"},{"lineNumber":86,"author":{"gitId":"spinoandraptos"},"content":" return;","lastModifiedDate":"2023-10-04"},{"lineNumber":87,"author":{"gitId":"spinoandraptos"},"content":" } catch (ReneExceptions incompleteCommand) {","lastModifiedDate":"2023-10-04"},{"lineNumber":88,"author":{"gitId":"spinoandraptos"},"content":" String exceptionMessage \u003d incompleteCommand.getMessage();","lastModifiedDate":"2023-10-04"},{"lineNumber":89,"author":{"gitId":"spinoandraptos"},"content":" switch (exceptionMessage) {","lastModifiedDate":"2023-10-04"},{"lineNumber":90,"author":{"gitId":"spinoandraptos"},"content":" case \"Incomplete Deadline Description\":","lastModifiedDate":"2023-10-04"},{"lineNumber":91,"author":{"gitId":"spinoandraptos"},"content":" System.out.println(\" Ohnus! You did not use give deadline a name!\");","lastModifiedDate":"2023-10-04"},{"lineNumber":92,"author":{"gitId":"spinoandraptos"},"content":" System.out.println(\" Pwease format your input as deadline [task name] /by [time]!\");","lastModifiedDate":"2023-10-04"},{"lineNumber":93,"author":{"gitId":"spinoandraptos"},"content":" return;","lastModifiedDate":"2023-10-04"},{"lineNumber":94,"author":{"gitId":"spinoandraptos"},"content":" case \"Incomplete Due Time\":","lastModifiedDate":"2023-10-04"},{"lineNumber":95,"author":{"gitId":"spinoandraptos"},"content":" System.out.println(\" Ohnus! You did not use give deadline a due time!\");","lastModifiedDate":"2023-10-04"},{"lineNumber":96,"author":{"gitId":"spinoandraptos"},"content":" System.out.println(\" Pwease format your input as deadline [task name] /by [time]!\");","lastModifiedDate":"2023-10-04"},{"lineNumber":97,"author":{"gitId":"spinoandraptos"},"content":" return;","lastModifiedDate":"2023-10-04"},{"lineNumber":98,"author":{"gitId":"spinoandraptos"},"content":" default:","lastModifiedDate":"2023-10-04"},{"lineNumber":99,"author":{"gitId":"spinoandraptos"},"content":" return;","lastModifiedDate":"2023-10-04"},{"lineNumber":100,"author":{"gitId":"spinoandraptos"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":101,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":102,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":103,"author":{"gitId":"spinoandraptos"},"content":" case EVENT:","lastModifiedDate":"2023-10-04"},{"lineNumber":104,"author":{"gitId":"spinoandraptos"},"content":" String eventStartTiming \u003d null;","lastModifiedDate":"2023-10-04"},{"lineNumber":105,"author":{"gitId":"spinoandraptos"},"content":" String eventEndTiming \u003d null;","lastModifiedDate":"2023-10-04"},{"lineNumber":106,"author":{"gitId":"spinoandraptos"},"content":" String[] eventDetails;","lastModifiedDate":"2023-10-04"},{"lineNumber":107,"author":{"gitId":"spinoandraptos"},"content":" String eventDescription \u003d null;","lastModifiedDate":"2023-10-04"},{"lineNumber":108,"author":{"gitId":"spinoandraptos"},"content":" LocalDateTime eventStartDateTime;","lastModifiedDate":"2023-10-04"},{"lineNumber":109,"author":{"gitId":"spinoandraptos"},"content":" LocalDateTime eventEndDateTime;","lastModifiedDate":"2023-10-04"},{"lineNumber":110,"author":{"gitId":"spinoandraptos"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":111,"author":{"gitId":"spinoandraptos"},"content":" try {","lastModifiedDate":"2023-10-04"},{"lineNumber":112,"author":{"gitId":"spinoandraptos"},"content":" eventDetails \u003d input.split(\"event\")[1].strip().split(\"/\");","lastModifiedDate":"2023-10-04"},{"lineNumber":113,"author":{"gitId":"spinoandraptos"},"content":" } catch (ArrayIndexOutOfBoundsException incompleteCommand) {","lastModifiedDate":"2023-10-04"},{"lineNumber":114,"author":{"gitId":"spinoandraptos"},"content":" System.out.println(\" Ohnus! You did not use give event a name!\");","lastModifiedDate":"2023-10-04"},{"lineNumber":115,"author":{"gitId":"spinoandraptos"},"content":" System.out.println(\" Pwease format your input as event [task name] /from [start time] \" +","lastModifiedDate":"2023-10-04"},{"lineNumber":116,"author":{"gitId":"spinoandraptos"},"content":" \"/to [end time]!\");","lastModifiedDate":"2023-10-04"},{"lineNumber":117,"author":{"gitId":"spinoandraptos"},"content":" return;","lastModifiedDate":"2023-10-04"},{"lineNumber":118,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":119,"author":{"gitId":"spinoandraptos"},"content":" try {","lastModifiedDate":"2023-10-04"},{"lineNumber":120,"author":{"gitId":"spinoandraptos"},"content":" eventDescription \u003d eventDetails[0].strip();","lastModifiedDate":"2023-10-04"},{"lineNumber":121,"author":{"gitId":"spinoandraptos"},"content":" if (eventDescription.equals(\"\")) {","lastModifiedDate":"2023-10-04"},{"lineNumber":122,"author":{"gitId":"spinoandraptos"},"content":" throw new ReneExceptions(\"Incomplete Event Description\");","lastModifiedDate":"2023-10-04"},{"lineNumber":123,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":124,"author":{"gitId":"spinoandraptos"},"content":" eventStartTiming \u003d eventDetails[1].strip().split(\"from\")[1].strip();","lastModifiedDate":"2023-10-04"},{"lineNumber":125,"author":{"gitId":"spinoandraptos"},"content":" if (eventStartTiming.equals(\"\")) {","lastModifiedDate":"2023-10-04"},{"lineNumber":126,"author":{"gitId":"spinoandraptos"},"content":" throw new ReneExceptions(\"Incomplete Start Time\");","lastModifiedDate":"2023-10-04"},{"lineNumber":127,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":128,"author":{"gitId":"spinoandraptos"},"content":" eventStartDateTime \u003d LocalDateTime.parse(eventStartTiming, inputDateTimeFormatter);","lastModifiedDate":"2023-10-04"},{"lineNumber":129,"author":{"gitId":"spinoandraptos"},"content":" } catch (IndexOutOfBoundsException incompleteCommand) {","lastModifiedDate":"2023-10-04"},{"lineNumber":130,"author":{"gitId":"spinoandraptos"},"content":" System.out.println(\" Ohnus! You did not use \u0027/from\u0027 to signal start time!\");","lastModifiedDate":"2023-10-04"},{"lineNumber":131,"author":{"gitId":"spinoandraptos"},"content":" System.out.println(\" Pwease format your input as event [task name] /from [start time] \" +","lastModifiedDate":"2023-10-04"},{"lineNumber":132,"author":{"gitId":"spinoandraptos"},"content":" \"/to [end time]!\");","lastModifiedDate":"2023-10-04"},{"lineNumber":133,"author":{"gitId":"spinoandraptos"},"content":" return;","lastModifiedDate":"2023-10-04"},{"lineNumber":134,"author":{"gitId":"spinoandraptos"},"content":" } catch (DateTimeParseException incorrectTimeFormat){","lastModifiedDate":"2023-10-04"},{"lineNumber":135,"author":{"gitId":"spinoandraptos"},"content":" System.out.println(\" Ohnus! You did not use give a correct date time for start time!\");","lastModifiedDate":"2023-10-04"},{"lineNumber":136,"author":{"gitId":"spinoandraptos"},"content":" System.out.println(\" Pwease format your deadline as dd-MM-yyyy HH:mm !\");","lastModifiedDate":"2023-10-04"},{"lineNumber":137,"author":{"gitId":"spinoandraptos"},"content":" return;","lastModifiedDate":"2023-10-04"},{"lineNumber":138,"author":{"gitId":"spinoandraptos"},"content":" } catch (ReneExceptions incompleteCommand) {","lastModifiedDate":"2023-10-04"},{"lineNumber":139,"author":{"gitId":"spinoandraptos"},"content":" String exceptionMessage \u003d incompleteCommand.getMessage();","lastModifiedDate":"2023-10-04"},{"lineNumber":140,"author":{"gitId":"spinoandraptos"},"content":" switch (exceptionMessage) {","lastModifiedDate":"2023-10-04"},{"lineNumber":141,"author":{"gitId":"spinoandraptos"},"content":" case \"Incomplete Event Description\":","lastModifiedDate":"2023-10-04"},{"lineNumber":142,"author":{"gitId":"spinoandraptos"},"content":" System.out.println(\" Ohnus! You did not use give event a name!\");","lastModifiedDate":"2023-10-04"},{"lineNumber":143,"author":{"gitId":"spinoandraptos"},"content":" System.out.println(\" Pwease format your input as event [task name] \" +","lastModifiedDate":"2023-10-04"},{"lineNumber":144,"author":{"gitId":"spinoandraptos"},"content":" \"/from [start time] /to [end time]!\");","lastModifiedDate":"2023-10-04"},{"lineNumber":145,"author":{"gitId":"spinoandraptos"},"content":" return;","lastModifiedDate":"2023-10-04"},{"lineNumber":146,"author":{"gitId":"spinoandraptos"},"content":" case \"Incomplete Start Time\":","lastModifiedDate":"2023-10-04"},{"lineNumber":147,"author":{"gitId":"spinoandraptos"},"content":" System.out.println(\" Ohnus! You did not use give event a start time!\");","lastModifiedDate":"2023-10-04"},{"lineNumber":148,"author":{"gitId":"spinoandraptos"},"content":" System.out.println(\" Pwease format your input as event [task name] \" +","lastModifiedDate":"2023-10-04"},{"lineNumber":149,"author":{"gitId":"spinoandraptos"},"content":" \"/from [start time] /to [end time]!\");","lastModifiedDate":"2023-10-04"},{"lineNumber":150,"author":{"gitId":"spinoandraptos"},"content":" return;","lastModifiedDate":"2023-10-04"},{"lineNumber":151,"author":{"gitId":"spinoandraptos"},"content":" default:","lastModifiedDate":"2023-10-04"},{"lineNumber":152,"author":{"gitId":"spinoandraptos"},"content":" return;","lastModifiedDate":"2023-10-04"},{"lineNumber":153,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":154,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":155,"author":{"gitId":"spinoandraptos"},"content":" try {","lastModifiedDate":"2023-10-04"},{"lineNumber":156,"author":{"gitId":"spinoandraptos"},"content":" eventEndTiming \u003d eventDetails[2].strip().split(\"to\")[1].strip();","lastModifiedDate":"2023-10-04"},{"lineNumber":157,"author":{"gitId":"spinoandraptos"},"content":" if (eventEndTiming.equals(\"\")) {","lastModifiedDate":"2023-10-04"},{"lineNumber":158,"author":{"gitId":"spinoandraptos"},"content":" throw new ReneExceptions(\"Incomplete Start Time\");","lastModifiedDate":"2023-10-04"},{"lineNumber":159,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":160,"author":{"gitId":"spinoandraptos"},"content":" eventEndDateTime \u003d LocalDateTime .parse(eventEndTiming, inputDateTimeFormatter);","lastModifiedDate":"2023-10-04"},{"lineNumber":161,"author":{"gitId":"spinoandraptos"},"content":" if(eventEndDateTime.isBefore(eventStartDateTime)){","lastModifiedDate":"2023-10-04"},{"lineNumber":162,"author":{"gitId":"spinoandraptos"},"content":" throw new ReneExceptions(\"Invalid end time\");","lastModifiedDate":"2023-10-04"},{"lineNumber":163,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":164,"author":{"gitId":"spinoandraptos"},"content":" allTasks.add(new Event(eventDescription, eventStartDateTime, eventEndDateTime));","lastModifiedDate":"2023-10-04"},{"lineNumber":165,"author":{"gitId":"spinoandraptos"},"content":" if (showMessage) {","lastModifiedDate":"2023-10-04"},{"lineNumber":166,"author":{"gitId":"spinoandraptos"},"content":" System.out.println(\" I have added the following task OwO:\");","lastModifiedDate":"2023-10-04"},{"lineNumber":167,"author":{"gitId":"spinoandraptos"},"content":" System.out.printf(\" [E][] %s\\n\", viewTaskByIndex(getTaskListSize()));","lastModifiedDate":"2023-10-04"},{"lineNumber":168,"author":{"gitId":"spinoandraptos"},"content":" System.out.println(\" Now you have \" + getTaskListSize() + \" tasks in the list! UWU\");","lastModifiedDate":"2023-10-04"},{"lineNumber":169,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":170,"author":{"gitId":"spinoandraptos"},"content":" } catch (IndexOutOfBoundsException incompleteCommand) {","lastModifiedDate":"2023-10-04"},{"lineNumber":171,"author":{"gitId":"spinoandraptos"},"content":" System.out.println(\" Ohnus! You did not use \u0027/to\u0027 to signal end time!\");","lastModifiedDate":"2023-10-04"},{"lineNumber":172,"author":{"gitId":"spinoandraptos"},"content":" System.out.println(\" Pwease format your input as event [task name] \" +","lastModifiedDate":"2023-10-04"},{"lineNumber":173,"author":{"gitId":"spinoandraptos"},"content":" \"/from [start time] /to [end time]!\");","lastModifiedDate":"2023-10-04"},{"lineNumber":174,"author":{"gitId":"spinoandraptos"},"content":" return;","lastModifiedDate":"2023-10-04"},{"lineNumber":175,"author":{"gitId":"spinoandraptos"},"content":" } catch (DateTimeParseException incorrectTimeFormat){","lastModifiedDate":"2023-10-04"},{"lineNumber":176,"author":{"gitId":"spinoandraptos"},"content":" System.out.println(\" Ohnus! You did not use give a correct date time for end time!\");","lastModifiedDate":"2023-10-04"},{"lineNumber":177,"author":{"gitId":"spinoandraptos"},"content":" System.out.println(\" Pwease format your deadline as dd-MM-yyyy HH:mm!\");","lastModifiedDate":"2023-10-04"},{"lineNumber":178,"author":{"gitId":"spinoandraptos"},"content":" return;","lastModifiedDate":"2023-10-04"},{"lineNumber":179,"author":{"gitId":"spinoandraptos"},"content":" } catch (ReneExceptions incorrectCommand) {","lastModifiedDate":"2023-10-04"},{"lineNumber":180,"author":{"gitId":"spinoandraptos"},"content":" String exceptionMessage \u003d incorrectCommand.getMessage();","lastModifiedDate":"2023-10-04"},{"lineNumber":181,"author":{"gitId":"spinoandraptos"},"content":" switch (exceptionMessage) {","lastModifiedDate":"2023-10-04"},{"lineNumber":182,"author":{"gitId":"spinoandraptos"},"content":" case \"Invalid end time\":","lastModifiedDate":"2023-10-04"},{"lineNumber":183,"author":{"gitId":"spinoandraptos"},"content":" System.out.println(\" Your end time cannot be earlier than start time! :\u003c\");","lastModifiedDate":"2023-10-04"},{"lineNumber":184,"author":{"gitId":"spinoandraptos"},"content":" return;","lastModifiedDate":"2023-10-04"},{"lineNumber":185,"author":{"gitId":"spinoandraptos"},"content":" case \"Incomplete Start Time\":","lastModifiedDate":"2023-10-04"},{"lineNumber":186,"author":{"gitId":"spinoandraptos"},"content":" System.out.println(\" Ohnus! You did not use give event a start time!\");","lastModifiedDate":"2023-10-04"},{"lineNumber":187,"author":{"gitId":"spinoandraptos"},"content":" System.out.println(\" Pwease format your input as event [task name] \" +","lastModifiedDate":"2023-10-04"},{"lineNumber":188,"author":{"gitId":"spinoandraptos"},"content":" \"/from [start time] /to [end time]!\");","lastModifiedDate":"2023-10-04"},{"lineNumber":189,"author":{"gitId":"spinoandraptos"},"content":" return;","lastModifiedDate":"2023-10-04"},{"lineNumber":190,"author":{"gitId":"spinoandraptos"},"content":" default:","lastModifiedDate":"2023-10-04"},{"lineNumber":191,"author":{"gitId":"spinoandraptos"},"content":" return;","lastModifiedDate":"2023-10-04"},{"lineNumber":192,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":193,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":194,"author":{"gitId":"spinoandraptos"},"content":" break;","lastModifiedDate":"2023-10-04"},{"lineNumber":195,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":196,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":197,"author":{"gitId":"spinoandraptos"},"content":" /**","lastModifiedDate":"2023-10-04"},{"lineNumber":198,"author":{"gitId":"spinoandraptos"},"content":" * Prints the details of a task in CLI.","lastModifiedDate":"2023-10-04"},{"lineNumber":199,"author":{"gitId":"spinoandraptos"},"content":" *","lastModifiedDate":"2023-10-04"},{"lineNumber":200,"author":{"gitId":"spinoandraptos"},"content":" * @param task The task which details are to be printed.","lastModifiedDate":"2023-10-04"},{"lineNumber":201,"author":{"gitId":"spinoandraptos"},"content":" * @param asList If true, prints out the index of the task in the task list","lastModifiedDate":"2023-10-04"},{"lineNumber":202,"author":{"gitId":"spinoandraptos"},"content":" * in addition to the details of the task.","lastModifiedDate":"2023-10-04"},{"lineNumber":203,"author":{"gitId":"spinoandraptos"},"content":" */","lastModifiedDate":"2023-10-04"},{"lineNumber":204,"author":{"gitId":"spinoandraptos"},"content":" public void printTask(Task task, boolean asList){","lastModifiedDate":"2023-10-04"},{"lineNumber":205,"author":{"gitId":"spinoandraptos"},"content":" int taskIndex \u003d allTasks.indexOf(task);","lastModifiedDate":"2023-10-04"},{"lineNumber":206,"author":{"gitId":"spinoandraptos"},"content":" switch(task.getTaskType()) {","lastModifiedDate":"2023-10-04"},{"lineNumber":207,"author":{"gitId":"spinoandraptos"},"content":" case TODO:","lastModifiedDate":"2023-10-04"},{"lineNumber":208,"author":{"gitId":"spinoandraptos"},"content":" if (task.taskIsDone()) {","lastModifiedDate":"2023-10-04"},{"lineNumber":209,"author":{"gitId":"spinoandraptos"},"content":" if(asList){","lastModifiedDate":"2023-10-04"},{"lineNumber":210,"author":{"gitId":"spinoandraptos"},"content":" System.out.printf(\" %d: [T][X] %s\\n\", taskIndex+1, task.getTaskDescription());","lastModifiedDate":"2023-10-04"},{"lineNumber":211,"author":{"gitId":"spinoandraptos"},"content":" } else{","lastModifiedDate":"2023-10-04"},{"lineNumber":212,"author":{"gitId":"spinoandraptos"},"content":" System.out.printf(\" [T][X] %s\\n\", task.getTaskDescription());","lastModifiedDate":"2023-10-04"},{"lineNumber":213,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":214,"author":{"gitId":"spinoandraptos"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":215,"author":{"gitId":"spinoandraptos"},"content":" } else {","lastModifiedDate":"2023-10-04"},{"lineNumber":216,"author":{"gitId":"spinoandraptos"},"content":" if(asList){","lastModifiedDate":"2023-10-04"},{"lineNumber":217,"author":{"gitId":"spinoandraptos"},"content":" System.out.printf(\" %d: [T][] %s\\n\", taskIndex+1, task.getTaskDescription());","lastModifiedDate":"2023-10-04"},{"lineNumber":218,"author":{"gitId":"spinoandraptos"},"content":" } else{","lastModifiedDate":"2023-10-04"},{"lineNumber":219,"author":{"gitId":"spinoandraptos"},"content":" System.out.printf(\" [T][] %s\\n\", task.getTaskDescription());","lastModifiedDate":"2023-10-04"},{"lineNumber":220,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":221,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":222,"author":{"gitId":"spinoandraptos"},"content":" break;","lastModifiedDate":"2023-10-04"},{"lineNumber":223,"author":{"gitId":"spinoandraptos"},"content":" case DEADLINE:","lastModifiedDate":"2023-10-04"},{"lineNumber":224,"author":{"gitId":"spinoandraptos"},"content":" if (task.taskIsDone()) {","lastModifiedDate":"2023-10-04"},{"lineNumber":225,"author":{"gitId":"spinoandraptos"},"content":" if (asList) {","lastModifiedDate":"2023-10-04"},{"lineNumber":226,"author":{"gitId":"spinoandraptos"},"content":" System.out.printf(\" %d: [D][X] %s %s\\n\",","lastModifiedDate":"2023-10-04"},{"lineNumber":227,"author":{"gitId":"spinoandraptos"},"content":" taskIndex + 1, task.getTaskDescription(), task.getTaskTiming(false));","lastModifiedDate":"2023-10-04"},{"lineNumber":228,"author":{"gitId":"spinoandraptos"},"content":" } else {","lastModifiedDate":"2023-10-04"},{"lineNumber":229,"author":{"gitId":"spinoandraptos"},"content":" System.out.printf(\" [D][X] %s %s\\n\",","lastModifiedDate":"2023-10-04"},{"lineNumber":230,"author":{"gitId":"spinoandraptos"},"content":" task.getTaskDescription(), task.getTaskTiming(false));","lastModifiedDate":"2023-10-04"},{"lineNumber":231,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":232,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":233,"author":{"gitId":"spinoandraptos"},"content":" else {","lastModifiedDate":"2023-10-04"},{"lineNumber":234,"author":{"gitId":"spinoandraptos"},"content":" if (asList) {","lastModifiedDate":"2023-10-04"},{"lineNumber":235,"author":{"gitId":"spinoandraptos"},"content":" System.out.printf(\" %d: [D][] %s %s\\n\",","lastModifiedDate":"2023-10-04"},{"lineNumber":236,"author":{"gitId":"spinoandraptos"},"content":" taskIndex + 1, task.getTaskDescription(), task.getTaskTiming(false));","lastModifiedDate":"2023-10-04"},{"lineNumber":237,"author":{"gitId":"spinoandraptos"},"content":" } else {","lastModifiedDate":"2023-10-04"},{"lineNumber":238,"author":{"gitId":"spinoandraptos"},"content":" System.out.printf(\" [D][] %s %s\\n\",","lastModifiedDate":"2023-10-04"},{"lineNumber":239,"author":{"gitId":"spinoandraptos"},"content":" task.getTaskDescription(), task.getTaskTiming(false));","lastModifiedDate":"2023-10-04"},{"lineNumber":240,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":241,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":242,"author":{"gitId":"spinoandraptos"},"content":" break;","lastModifiedDate":"2023-10-04"},{"lineNumber":243,"author":{"gitId":"spinoandraptos"},"content":" case EVENT:","lastModifiedDate":"2023-10-04"},{"lineNumber":244,"author":{"gitId":"spinoandraptos"},"content":" if (task.taskIsDone()) {","lastModifiedDate":"2023-10-04"},{"lineNumber":245,"author":{"gitId":"spinoandraptos"},"content":" if (asList) {","lastModifiedDate":"2023-10-04"},{"lineNumber":246,"author":{"gitId":"spinoandraptos"},"content":" System.out.printf(\" %d: [E][X] %s %s\\n\",","lastModifiedDate":"2023-10-04"},{"lineNumber":247,"author":{"gitId":"spinoandraptos"},"content":" taskIndex+1, task.getTaskDescription(), task.getTaskTiming(false));","lastModifiedDate":"2023-10-04"},{"lineNumber":248,"author":{"gitId":"spinoandraptos"},"content":" } else {","lastModifiedDate":"2023-10-04"},{"lineNumber":249,"author":{"gitId":"spinoandraptos"},"content":" System.out.printf(\" [E][X] %s %s\\n\",","lastModifiedDate":"2023-10-04"},{"lineNumber":250,"author":{"gitId":"spinoandraptos"},"content":" task.getTaskDescription(), task.getTaskTiming(false));","lastModifiedDate":"2023-10-04"},{"lineNumber":251,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":252,"author":{"gitId":"spinoandraptos"},"content":" } else {","lastModifiedDate":"2023-10-04"},{"lineNumber":253,"author":{"gitId":"spinoandraptos"},"content":" if (asList) {","lastModifiedDate":"2023-10-04"},{"lineNumber":254,"author":{"gitId":"spinoandraptos"},"content":" System.out.printf(\" %d: [E][] %s %s\\n\",","lastModifiedDate":"2023-10-04"},{"lineNumber":255,"author":{"gitId":"spinoandraptos"},"content":" taskIndex+1, task.getTaskDescription(), task.getTaskTiming(false));","lastModifiedDate":"2023-10-04"},{"lineNumber":256,"author":{"gitId":"spinoandraptos"},"content":" } else {","lastModifiedDate":"2023-10-04"},{"lineNumber":257,"author":{"gitId":"spinoandraptos"},"content":" System.out.printf(\" [E][] %s %s\\n\",","lastModifiedDate":"2023-10-04"},{"lineNumber":258,"author":{"gitId":"spinoandraptos"},"content":" task.getTaskDescription(), task.getTaskTiming(false));","lastModifiedDate":"2023-10-04"},{"lineNumber":259,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":260,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":261,"author":{"gitId":"spinoandraptos"},"content":" break;","lastModifiedDate":"2023-10-04"},{"lineNumber":262,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":263,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":264,"author":{"gitId":"spinoandraptos"},"content":" /**","lastModifiedDate":"2023-10-04"},{"lineNumber":265,"author":{"gitId":"spinoandraptos"},"content":" * Prints all the tasks in the current task list as an indexed list.","lastModifiedDate":"2023-10-04"},{"lineNumber":266,"author":{"gitId":"spinoandraptos"},"content":" */","lastModifiedDate":"2023-10-04"},{"lineNumber":267,"author":{"gitId":"spinoandraptos"},"content":" public void printTaskList(){","lastModifiedDate":"2023-10-04"},{"lineNumber":268,"author":{"gitId":"spinoandraptos"},"content":" if(allTasks.isEmpty()){","lastModifiedDate":"2023-10-04"},{"lineNumber":269,"author":{"gitId":"spinoandraptos"},"content":" System.out.println(\" No tasks found! Time to add some OWO\");","lastModifiedDate":"2023-10-04"},{"lineNumber":270,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":271,"author":{"gitId":"spinoandraptos"},"content":" else {","lastModifiedDate":"2023-10-04"},{"lineNumber":272,"author":{"gitId":"spinoandraptos"},"content":" for (Task task : allTasks) {","lastModifiedDate":"2023-10-04"},{"lineNumber":273,"author":{"gitId":"spinoandraptos"},"content":" printTask(task, true);","lastModifiedDate":"2023-10-04"},{"lineNumber":274,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":275,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":276,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":277,"author":{"gitId":"spinoandraptos"},"content":" /**","lastModifiedDate":"2023-10-04"},{"lineNumber":278,"author":{"gitId":"spinoandraptos"},"content":" * Mark a task in the current task list as done.","lastModifiedDate":"2023-10-04"},{"lineNumber":279,"author":{"gitId":"spinoandraptos"},"content":" *","lastModifiedDate":"2023-10-04"},{"lineNumber":280,"author":{"gitId":"spinoandraptos"},"content":" * @param index The list index of the task to be marked as done.","lastModifiedDate":"2023-10-04"},{"lineNumber":281,"author":{"gitId":"spinoandraptos"},"content":" * @param showMessage If true, program will print response message on CLI","lastModifiedDate":"2023-10-04"},{"lineNumber":282,"author":{"gitId":"spinoandraptos"},"content":" * after task is marked as done.","lastModifiedDate":"2023-10-04"},{"lineNumber":283,"author":{"gitId":"spinoandraptos"},"content":" */","lastModifiedDate":"2023-10-04"},{"lineNumber":284,"author":{"gitId":"spinoandraptos"},"content":" public void markTaskAsDone(int index, boolean showMessage){","lastModifiedDate":"2023-10-04"},{"lineNumber":285,"author":{"gitId":"spinoandraptos"},"content":" try{","lastModifiedDate":"2023-10-04"},{"lineNumber":286,"author":{"gitId":"spinoandraptos"},"content":" allTasks.get(index-1).markAsDone();","lastModifiedDate":"2023-10-04"},{"lineNumber":287,"author":{"gitId":"spinoandraptos"},"content":" if(showMessage) {","lastModifiedDate":"2023-10-04"},{"lineNumber":288,"author":{"gitId":"spinoandraptos"},"content":" Task task \u003d allTasks.get(index - 1);","lastModifiedDate":"2023-10-04"},{"lineNumber":289,"author":{"gitId":"spinoandraptos"},"content":" System.out.println(\" Roger that! I have marked the following task as done \u003ew\u003c !\");","lastModifiedDate":"2023-10-04"},{"lineNumber":290,"author":{"gitId":"spinoandraptos"},"content":" printTask(task, false);","lastModifiedDate":"2023-10-04"},{"lineNumber":291,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":292,"author":{"gitId":"spinoandraptos"},"content":" } catch (IndexOutOfBoundsException invalidIndex){","lastModifiedDate":"2023-10-04"},{"lineNumber":293,"author":{"gitId":"spinoandraptos"},"content":" System.out.println(\" Ohnuuu! Please enter valid task number *sobs*\");","lastModifiedDate":"2023-10-04"},{"lineNumber":294,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":295,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":296,"author":{"gitId":"spinoandraptos"},"content":" /**","lastModifiedDate":"2023-10-04"},{"lineNumber":297,"author":{"gitId":"spinoandraptos"},"content":" * Mark a task in the current task list as not done.","lastModifiedDate":"2023-10-04"},{"lineNumber":298,"author":{"gitId":"spinoandraptos"},"content":" */","lastModifiedDate":"2023-10-04"},{"lineNumber":299,"author":{"gitId":"spinoandraptos"},"content":" public void markTaskAsNotDone(int index){","lastModifiedDate":"2023-10-04"},{"lineNumber":300,"author":{"gitId":"spinoandraptos"},"content":" try{","lastModifiedDate":"2023-10-04"},{"lineNumber":301,"author":{"gitId":"spinoandraptos"},"content":" allTasks.get(index-1).markAsNotDone();","lastModifiedDate":"2023-10-04"},{"lineNumber":302,"author":{"gitId":"spinoandraptos"},"content":" Task task \u003d allTasks.get(index-1);","lastModifiedDate":"2023-10-04"},{"lineNumber":303,"author":{"gitId":"spinoandraptos"},"content":" System.out.println(\" Roger that! I have unmarked the following task as done \u003ew\u003c !\");","lastModifiedDate":"2023-10-04"},{"lineNumber":304,"author":{"gitId":"spinoandraptos"},"content":" printTask(task, false);","lastModifiedDate":"2023-10-04"},{"lineNumber":305,"author":{"gitId":"spinoandraptos"},"content":" } catch (IndexOutOfBoundsException invalidIndex){","lastModifiedDate":"2023-10-04"},{"lineNumber":306,"author":{"gitId":"spinoandraptos"},"content":" System.out.println(\" Ohnuuu! Please enter valid task number *sobs*\");","lastModifiedDate":"2023-10-04"},{"lineNumber":307,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":308,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":309,"author":{"gitId":"spinoandraptos"},"content":" /**","lastModifiedDate":"2023-10-04"},{"lineNumber":310,"author":{"gitId":"spinoandraptos"},"content":" * Delete a task from the current task list.","lastModifiedDate":"2023-10-04"},{"lineNumber":311,"author":{"gitId":"spinoandraptos"},"content":" *","lastModifiedDate":"2023-10-04"},{"lineNumber":312,"author":{"gitId":"spinoandraptos"},"content":" * @param index The list index of the task to be deleted.","lastModifiedDate":"2023-10-04"},{"lineNumber":313,"author":{"gitId":"spinoandraptos"},"content":" */","lastModifiedDate":"2023-10-04"},{"lineNumber":314,"author":{"gitId":"spinoandraptos"},"content":" public void deleteTaskByIndex(int index){","lastModifiedDate":"2023-10-04"},{"lineNumber":315,"author":{"gitId":"spinoandraptos"},"content":" try{","lastModifiedDate":"2023-10-04"},{"lineNumber":316,"author":{"gitId":"spinoandraptos"},"content":" Task task \u003d allTasks.get(index-1);","lastModifiedDate":"2023-10-04"},{"lineNumber":317,"author":{"gitId":"spinoandraptos"},"content":" allTasks.remove(index - 1);","lastModifiedDate":"2023-10-04"},{"lineNumber":318,"author":{"gitId":"spinoandraptos"},"content":" System.out.println(\" Roger that! I have deleted the following task \u003ew\u003c !\");","lastModifiedDate":"2023-10-04"},{"lineNumber":319,"author":{"gitId":"spinoandraptos"},"content":" printTask(task, false);","lastModifiedDate":"2023-10-04"},{"lineNumber":320,"author":{"gitId":"spinoandraptos"},"content":" System.out.println(\" Now you have \" + getTaskListSize() + \" tasks in the list! UWU\");","lastModifiedDate":"2023-10-04"},{"lineNumber":321,"author":{"gitId":"spinoandraptos"},"content":" } catch (IndexOutOfBoundsException invalidIndex){","lastModifiedDate":"2023-10-04"},{"lineNumber":322,"author":{"gitId":"spinoandraptos"},"content":" System.out.println(\" Ohnuuu! Please enter valid task number *sobs*\");","lastModifiedDate":"2023-10-04"},{"lineNumber":323,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":324,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":325,"author":{"gitId":"spinoandraptos"},"content":" /**","lastModifiedDate":"2023-10-04"},{"lineNumber":326,"author":{"gitId":"spinoandraptos"},"content":" * Returns the description and all other details of a task in one String object.","lastModifiedDate":"2023-10-04"},{"lineNumber":327,"author":{"gitId":"spinoandraptos"},"content":" * Used to display task details in CLI.","lastModifiedDate":"2023-10-04"},{"lineNumber":328,"author":{"gitId":"spinoandraptos"},"content":" *","lastModifiedDate":"2023-10-04"},{"lineNumber":329,"author":{"gitId":"spinoandraptos"},"content":" * @param index The list index of the task to be viewed.","lastModifiedDate":"2023-10-04"},{"lineNumber":330,"author":{"gitId":"spinoandraptos"},"content":" */","lastModifiedDate":"2023-10-04"},{"lineNumber":331,"author":{"gitId":"spinoandraptos"},"content":" public String viewTaskByIndex(int index){","lastModifiedDate":"2023-10-04"},{"lineNumber":332,"author":{"gitId":"spinoandraptos"},"content":" try{","lastModifiedDate":"2023-10-04"},{"lineNumber":333,"author":{"gitId":"spinoandraptos"},"content":" switch(allTasks.get(index-1).getTaskType()) {","lastModifiedDate":"2023-10-04"},{"lineNumber":334,"author":{"gitId":"spinoandraptos"},"content":" case TODO:","lastModifiedDate":"2023-10-04"},{"lineNumber":335,"author":{"gitId":"spinoandraptos"},"content":" return allTasks.get(index-1).getTaskDescription();","lastModifiedDate":"2023-10-04"},{"lineNumber":336,"author":{"gitId":"spinoandraptos"},"content":" case DEADLINE:","lastModifiedDate":"2023-10-04"},{"lineNumber":337,"author":{"gitId":"spinoandraptos"},"content":" case EVENT:","lastModifiedDate":"2023-10-04"},{"lineNumber":338,"author":{"gitId":"spinoandraptos"},"content":" return allTasks.get(index-1).getTaskDescription() + \" \" +","lastModifiedDate":"2023-10-04"},{"lineNumber":339,"author":{"gitId":"spinoandraptos"},"content":" allTasks.get(index-1).getTaskTiming(false);","lastModifiedDate":"2023-10-04"},{"lineNumber":340,"author":{"gitId":"spinoandraptos"},"content":" default:","lastModifiedDate":"2023-10-04"},{"lineNumber":341,"author":{"gitId":"spinoandraptos"},"content":" return \"Task Not Found\";","lastModifiedDate":"2023-10-04"},{"lineNumber":342,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":343,"author":{"gitId":"spinoandraptos"},"content":" } catch(NullPointerException | IndexOutOfBoundsException invalidIndex){","lastModifiedDate":"2023-10-04"},{"lineNumber":344,"author":{"gitId":"spinoandraptos"},"content":" System.out.println(\" Ohnuuu! Please enter valid task number *sobs*\");","lastModifiedDate":"2023-10-04"},{"lineNumber":345,"author":{"gitId":"spinoandraptos"},"content":" return \"Task Not Found\";","lastModifiedDate":"2023-10-04"},{"lineNumber":346,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":347,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":348,"author":{"gitId":"spinoandraptos"},"content":" /**","lastModifiedDate":"2023-10-04"},{"lineNumber":349,"author":{"gitId":"spinoandraptos"},"content":" * Search for tasks in the current task list using their description.","lastModifiedDate":"2023-10-04"},{"lineNumber":350,"author":{"gitId":"spinoandraptos"},"content":" *","lastModifiedDate":"2023-10-04"},{"lineNumber":351,"author":{"gitId":"spinoandraptos"},"content":" * @param keyword Description keyword(s) used to search for matches.","lastModifiedDate":"2023-10-04"},{"lineNumber":352,"author":{"gitId":"spinoandraptos"},"content":" */","lastModifiedDate":"2023-10-04"},{"lineNumber":353,"author":{"gitId":"spinoandraptos"},"content":" public void searchListByDescription(String keyword){","lastModifiedDate":"2023-10-04"},{"lineNumber":354,"author":{"gitId":"spinoandraptos"},"content":" ArrayList\u003cTask\u003e matchedTasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-10-04"},{"lineNumber":355,"author":{"gitId":"spinoandraptos"},"content":" if(allTasks.isEmpty()){","lastModifiedDate":"2023-10-04"},{"lineNumber":356,"author":{"gitId":"spinoandraptos"},"content":" System.out.println(\" Task list is empty! Time to add some OWO\");","lastModifiedDate":"2023-10-04"},{"lineNumber":357,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":358,"author":{"gitId":"spinoandraptos"},"content":" else {","lastModifiedDate":"2023-10-04"},{"lineNumber":359,"author":{"gitId":"spinoandraptos"},"content":" System.out.println(\" Here are tasks that matched your search:\");","lastModifiedDate":"2023-10-04"},{"lineNumber":360,"author":{"gitId":"spinoandraptos"},"content":" for (Task task : allTasks) {","lastModifiedDate":"2023-10-04"},{"lineNumber":361,"author":{"gitId":"spinoandraptos"},"content":" if(task.getTaskDescription().contains(keyword)){","lastModifiedDate":"2023-10-04"},{"lineNumber":362,"author":{"gitId":"spinoandraptos"},"content":" matchedTasks.add(task);","lastModifiedDate":"2023-10-04"},{"lineNumber":363,"author":{"gitId":"spinoandraptos"},"content":" printTask(task, true);","lastModifiedDate":"2023-10-04"},{"lineNumber":364,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":365,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":366,"author":{"gitId":"spinoandraptos"},"content":" if(matchedTasks.isEmpty()){","lastModifiedDate":"2023-10-04"},{"lineNumber":367,"author":{"gitId":"spinoandraptos"},"content":" System.out.println(\" No results found :\u003c Check your keyword is correct?\");","lastModifiedDate":"2023-10-04"},{"lineNumber":368,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":369,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":370,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":371,"author":{"gitId":"spinoandraptos"},"content":" /**","lastModifiedDate":"2023-10-04"},{"lineNumber":372,"author":{"gitId":"spinoandraptos"},"content":" * Search for tasks in the current task list using their date and time.","lastModifiedDate":"2023-10-04"},{"lineNumber":373,"author":{"gitId":"spinoandraptos"},"content":" *","lastModifiedDate":"2023-10-04"},{"lineNumber":374,"author":{"gitId":"spinoandraptos"},"content":" * @param dateTime Date and time used to search for matches.","lastModifiedDate":"2023-10-04"},{"lineNumber":375,"author":{"gitId":"spinoandraptos"},"content":" */","lastModifiedDate":"2023-10-04"},{"lineNumber":376,"author":{"gitId":"spinoandraptos"},"content":" public void searchListByTime(String dateTime){","lastModifiedDate":"2023-10-04"},{"lineNumber":377,"author":{"gitId":"spinoandraptos"},"content":" ArrayList\u003cTask\u003e matchedTasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-10-04"},{"lineNumber":378,"author":{"gitId":"spinoandraptos"},"content":" if(allTasks.isEmpty()){","lastModifiedDate":"2023-10-04"},{"lineNumber":379,"author":{"gitId":"spinoandraptos"},"content":" System.out.println(\" Task list is empty! Time to add some OWO\");","lastModifiedDate":"2023-10-04"},{"lineNumber":380,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":381,"author":{"gitId":"spinoandraptos"},"content":" else {","lastModifiedDate":"2023-10-04"},{"lineNumber":382,"author":{"gitId":"spinoandraptos"},"content":" System.out.println(\" Here are tasks that matched your search:\");","lastModifiedDate":"2023-10-04"},{"lineNumber":383,"author":{"gitId":"spinoandraptos"},"content":" for (Task task : allTasks) {","lastModifiedDate":"2023-10-04"},{"lineNumber":384,"author":{"gitId":"spinoandraptos"},"content":" if(task.getTaskTiming(true).contains(dateTime)){","lastModifiedDate":"2023-10-04"},{"lineNumber":385,"author":{"gitId":"spinoandraptos"},"content":" matchedTasks.add(task);","lastModifiedDate":"2023-10-04"},{"lineNumber":386,"author":{"gitId":"spinoandraptos"},"content":" printTask(task, true);","lastModifiedDate":"2023-10-04"},{"lineNumber":387,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":388,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":389,"author":{"gitId":"spinoandraptos"},"content":" if(matchedTasks.isEmpty()){","lastModifiedDate":"2023-10-04"},{"lineNumber":390,"author":{"gitId":"spinoandraptos"},"content":" System.out.println(\" No results found :\u003c Check your time format is in dd-MM-yyyy HH:mm?\");","lastModifiedDate":"2023-10-04"},{"lineNumber":391,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":392,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":393,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":394,"author":{"gitId":"spinoandraptos"},"content":" /**","lastModifiedDate":"2023-10-04"},{"lineNumber":395,"author":{"gitId":"spinoandraptos"},"content":" * Search for a task in the current task list.","lastModifiedDate":"2023-10-04"},{"lineNumber":396,"author":{"gitId":"spinoandraptos"},"content":" * Depending on user command, this method will search by","lastModifiedDate":"2023-10-04"},{"lineNumber":397,"author":{"gitId":"spinoandraptos"},"content":" * either description matches or time matches.","lastModifiedDate":"2023-10-04"},{"lineNumber":398,"author":{"gitId":"spinoandraptos"},"content":" *","lastModifiedDate":"2023-10-04"},{"lineNumber":399,"author":{"gitId":"spinoandraptos"},"content":" * @param input Full user command input.","lastModifiedDate":"2023-10-04"},{"lineNumber":400,"author":{"gitId":"spinoandraptos"},"content":" */","lastModifiedDate":"2023-10-04"},{"lineNumber":401,"author":{"gitId":"spinoandraptos"},"content":" public void searchList(String input){","lastModifiedDate":"2023-10-04"},{"lineNumber":402,"author":{"gitId":"spinoandraptos"},"content":" String[] searchDetails;","lastModifiedDate":"2023-10-04"},{"lineNumber":403,"author":{"gitId":"spinoandraptos"},"content":" String[] searchInfo;","lastModifiedDate":"2023-10-04"},{"lineNumber":404,"author":{"gitId":"spinoandraptos"},"content":" try {","lastModifiedDate":"2023-10-04"},{"lineNumber":405,"author":{"gitId":"spinoandraptos"},"content":" searchDetails \u003d input.split(\"find\")[1].strip().split(\"/\");","lastModifiedDate":"2023-10-04"},{"lineNumber":406,"author":{"gitId":"spinoandraptos"},"content":" searchInfo \u003d searchDetails[1].strip().split(\" \");","lastModifiedDate":"2023-10-04"},{"lineNumber":407,"author":{"gitId":"spinoandraptos"},"content":" } catch (ArrayIndexOutOfBoundsException incompleteCommand) {","lastModifiedDate":"2023-10-04"},{"lineNumber":408,"author":{"gitId":"spinoandraptos"},"content":" System.out.println(\" Ohnus! You did not indicate if you are searching by description or time :\u003c\");","lastModifiedDate":"2023-10-04"},{"lineNumber":409,"author":{"gitId":"spinoandraptos"},"content":" System.out.println(\" Pwease format your input as find /description [description] \" +","lastModifiedDate":"2023-10-04"},{"lineNumber":410,"author":{"gitId":"spinoandraptos"},"content":" \"or find /time [time]!\");","lastModifiedDate":"2023-10-04"},{"lineNumber":411,"author":{"gitId":"spinoandraptos"},"content":" return;","lastModifiedDate":"2023-10-04"},{"lineNumber":412,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":413,"author":{"gitId":"spinoandraptos"},"content":" try{","lastModifiedDate":"2023-10-04"},{"lineNumber":414,"author":{"gitId":"spinoandraptos"},"content":" String searchCriteria \u003d searchInfo[0].strip();","lastModifiedDate":"2023-10-04"},{"lineNumber":415,"author":{"gitId":"spinoandraptos"},"content":" String searchKeyword \u003d searchInfo[1].strip();","lastModifiedDate":"2023-10-04"},{"lineNumber":416,"author":{"gitId":"spinoandraptos"},"content":" switch (searchCriteria){","lastModifiedDate":"2023-10-04"},{"lineNumber":417,"author":{"gitId":"spinoandraptos"},"content":" case \"description\":","lastModifiedDate":"2023-10-04"},{"lineNumber":418,"author":{"gitId":"spinoandraptos"},"content":" searchListByDescription(searchKeyword);","lastModifiedDate":"2023-10-04"},{"lineNumber":419,"author":{"gitId":"spinoandraptos"},"content":" break;","lastModifiedDate":"2023-10-04"},{"lineNumber":420,"author":{"gitId":"spinoandraptos"},"content":" case \"time\":","lastModifiedDate":"2023-10-04"},{"lineNumber":421,"author":{"gitId":"spinoandraptos"},"content":" searchListByTime(searchKeyword);","lastModifiedDate":"2023-10-04"},{"lineNumber":422,"author":{"gitId":"spinoandraptos"},"content":" break;","lastModifiedDate":"2023-10-04"},{"lineNumber":423,"author":{"gitId":"spinoandraptos"},"content":" default:","lastModifiedDate":"2023-10-04"},{"lineNumber":424,"author":{"gitId":"spinoandraptos"},"content":" break;","lastModifiedDate":"2023-10-04"},{"lineNumber":425,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":426,"author":{"gitId":"spinoandraptos"},"content":" } catch (ArrayIndexOutOfBoundsException incompleteCommand) {","lastModifiedDate":"2023-10-04"},{"lineNumber":427,"author":{"gitId":"spinoandraptos"},"content":" System.out.println(\" Ohnus! You did not indicate the keywords you are searching by :\u003c\");","lastModifiedDate":"2023-10-04"},{"lineNumber":428,"author":{"gitId":"spinoandraptos"},"content":" System.out.println(\" Pwease format your input as find /description [description] \" +","lastModifiedDate":"2023-10-04"},{"lineNumber":429,"author":{"gitId":"spinoandraptos"},"content":" \"or find /time [time]!\");","lastModifiedDate":"2023-10-04"},{"lineNumber":430,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":431,"author":{"gitId":"spinoandraptos"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":432,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":433,"author":{"gitId":"spinoandraptos"},"content":" /**","lastModifiedDate":"2023-10-04"},{"lineNumber":434,"author":{"gitId":"spinoandraptos"},"content":" * Returns the size of current task list.","lastModifiedDate":"2023-10-04"},{"lineNumber":435,"author":{"gitId":"spinoandraptos"},"content":" */","lastModifiedDate":"2023-10-04"},{"lineNumber":436,"author":{"gitId":"spinoandraptos"},"content":" public int getTaskListSize(){","lastModifiedDate":"2023-10-04"},{"lineNumber":437,"author":{"gitId":"spinoandraptos"},"content":" return allTasks.size();","lastModifiedDate":"2023-10-04"},{"lineNumber":438,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":439,"author":{"gitId":"spinoandraptos"},"content":" /**","lastModifiedDate":"2023-10-04"},{"lineNumber":440,"author":{"gitId":"spinoandraptos"},"content":" * Returns a list of all tasks in the current task list.","lastModifiedDate":"2023-10-04"},{"lineNumber":441,"author":{"gitId":"spinoandraptos"},"content":" */","lastModifiedDate":"2023-10-04"},{"lineNumber":442,"author":{"gitId":"spinoandraptos"},"content":" public ArrayList\u003cTask\u003e getAllTasks(){","lastModifiedDate":"2023-10-04"},{"lineNumber":443,"author":{"gitId":"spinoandraptos"},"content":" return allTasks;","lastModifiedDate":"2023-10-04"},{"lineNumber":444,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":445,"author":{"gitId":"spinoandraptos"},"content":" /**","lastModifiedDate":"2023-10-04"},{"lineNumber":446,"author":{"gitId":"spinoandraptos"},"content":" * Creates a new empty task list.","lastModifiedDate":"2023-10-04"},{"lineNumber":447,"author":{"gitId":"spinoandraptos"},"content":" */","lastModifiedDate":"2023-10-04"},{"lineNumber":448,"author":{"gitId":"spinoandraptos"},"content":" public TaskList(){","lastModifiedDate":"2023-10-04"},{"lineNumber":449,"author":{"gitId":"spinoandraptos"},"content":" allTasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-10-04"},{"lineNumber":450,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":451,"author":{"gitId":"spinoandraptos"},"content":"}","lastModifiedDate":"2023-10-04"}],"authorContributionMap":{"spinoandraptos":451}},{"path":"src/main/java/rene/ui/Ui.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"spinoandraptos"},"content":"package rene.ui;","lastModifiedDate":"2023-10-04"},{"lineNumber":2,"author":{"gitId":"spinoandraptos"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":3,"author":{"gitId":"spinoandraptos"},"content":"import rene.storage.Storage;","lastModifiedDate":"2023-10-04"},{"lineNumber":4,"author":{"gitId":"spinoandraptos"},"content":"import rene.tasklist.TaskList;","lastModifiedDate":"2023-10-04"},{"lineNumber":5,"author":{"gitId":"spinoandraptos"},"content":"","lastModifiedDate":"2023-10-04"},{"lineNumber":6,"author":{"gitId":"spinoandraptos"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-10-04"},{"lineNumber":7,"author":{"gitId":"spinoandraptos"},"content":"/**","lastModifiedDate":"2023-10-04"},{"lineNumber":8,"author":{"gitId":"spinoandraptos"},"content":" * Represents the user interface for CLI displays.","lastModifiedDate":"2023-10-04"},{"lineNumber":9,"author":{"gitId":"spinoandraptos"},"content":" * Supports CLI interactions with users.","lastModifiedDate":"2023-10-04"},{"lineNumber":10,"author":{"gitId":"spinoandraptos"},"content":" */","lastModifiedDate":"2023-10-04"},{"lineNumber":11,"author":{"gitId":"spinoandraptos"},"content":"public class Ui {","lastModifiedDate":"2023-10-04"},{"lineNumber":12,"author":{"gitId":"spinoandraptos"},"content":" private final Scanner input \u003d new Scanner(System.in); // Create a Scanner object","lastModifiedDate":"2023-10-04"},{"lineNumber":13,"author":{"gitId":"spinoandraptos"},"content":" private Storage dataStorage;","lastModifiedDate":"2023-10-04"},{"lineNumber":14,"author":{"gitId":"spinoandraptos"},"content":" private TaskList tasks;","lastModifiedDate":"2023-10-04"},{"lineNumber":15,"author":{"gitId":"spinoandraptos"},"content":" /**","lastModifiedDate":"2023-10-04"},{"lineNumber":16,"author":{"gitId":"spinoandraptos"},"content":" * Print out separating line in CLI to mark","lastModifiedDate":"2023-10-04"},{"lineNumber":17,"author":{"gitId":"spinoandraptos"},"content":" * start and end of chatbot replies.","lastModifiedDate":"2023-10-04"},{"lineNumber":18,"author":{"gitId":"spinoandraptos"},"content":" */","lastModifiedDate":"2023-10-04"},{"lineNumber":19,"author":{"gitId":"spinoandraptos"},"content":" public void showLine(){","lastModifiedDate":"2023-10-04"},{"lineNumber":20,"author":{"gitId":"spinoandraptos"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2023-10-04"},{"lineNumber":21,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":22,"author":{"gitId":"spinoandraptos"},"content":" /**","lastModifiedDate":"2023-10-04"},{"lineNumber":23,"author":{"gitId":"spinoandraptos"},"content":" * Displays opening message to welcome users","lastModifiedDate":"2023-10-04"},{"lineNumber":24,"author":{"gitId":"spinoandraptos"},"content":" * on the launch of chatbot.","lastModifiedDate":"2023-10-04"},{"lineNumber":25,"author":{"gitId":"spinoandraptos"},"content":" */","lastModifiedDate":"2023-10-04"},{"lineNumber":26,"author":{"gitId":"spinoandraptos"},"content":" public void displayOpeningMessage(){","lastModifiedDate":"2023-10-04"},{"lineNumber":27,"author":{"gitId":"spinoandraptos"},"content":" String logo \u003d \" _____ \\n\"","lastModifiedDate":"2023-10-04"},{"lineNumber":28,"author":{"gitId":"spinoandraptos"},"content":" + \" | __ \\\\ ____ __ _ ____ \\n\"","lastModifiedDate":"2023-10-04"},{"lineNumber":29,"author":{"gitId":"spinoandraptos"},"content":" + \" | |__ | / _ \\\\| \\\\| |/ _ \\\\\\n\"","lastModifiedDate":"2023-10-04"},{"lineNumber":30,"author":{"gitId":"spinoandraptos"},"content":" + \" | | \\\\ \\\\| ___/| \\\\ | | ___/\\n\"","lastModifiedDate":"2023-10-04"},{"lineNumber":31,"author":{"gitId":"spinoandraptos"},"content":" + \" |_| \\\\_\\\\\\\\____| |_|\\\\__|\\\\____|\\n\";","lastModifiedDate":"2023-10-04"},{"lineNumber":32,"author":{"gitId":"spinoandraptos"},"content":" System.out.println(\" Hello from\\n\" + logo);","lastModifiedDate":"2023-10-04"},{"lineNumber":33,"author":{"gitId":"spinoandraptos"},"content":" showLine();","lastModifiedDate":"2023-10-04"},{"lineNumber":34,"author":{"gitId":"spinoandraptos"},"content":" System.out.println(\" I am Rene Kokoro!\");","lastModifiedDate":"2023-10-04"},{"lineNumber":35,"author":{"gitId":"spinoandraptos"},"content":" System.out.println(\" Let me record your tasks!! *blushes*\");","lastModifiedDate":"2023-10-04"},{"lineNumber":36,"author":{"gitId":"spinoandraptos"},"content":" System.out.println();","lastModifiedDate":"2023-10-04"},{"lineNumber":37,"author":{"gitId":"spinoandraptos"},"content":" dataStorage.loadData(tasks);","lastModifiedDate":"2023-10-04"},{"lineNumber":38,"author":{"gitId":"spinoandraptos"},"content":" showLine();","lastModifiedDate":"2023-10-04"},{"lineNumber":39,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":40,"author":{"gitId":"spinoandraptos"},"content":" /**","lastModifiedDate":"2023-10-04"},{"lineNumber":41,"author":{"gitId":"spinoandraptos"},"content":" * Retrieves the CLI input from the user","lastModifiedDate":"2023-10-04"},{"lineNumber":42,"author":{"gitId":"spinoandraptos"},"content":" * and documents it as a String object.","lastModifiedDate":"2023-10-04"},{"lineNumber":43,"author":{"gitId":"spinoandraptos"},"content":" */","lastModifiedDate":"2023-10-04"},{"lineNumber":44,"author":{"gitId":"spinoandraptos"},"content":" public String readCommand() {","lastModifiedDate":"2023-10-04"},{"lineNumber":45,"author":{"gitId":"spinoandraptos"},"content":" return input.nextLine();","lastModifiedDate":"2023-10-04"},{"lineNumber":46,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":47,"author":{"gitId":"spinoandraptos"},"content":" /**","lastModifiedDate":"2023-10-04"},{"lineNumber":48,"author":{"gitId":"spinoandraptos"},"content":" * Displays closing message on exiting the chatbot.","lastModifiedDate":"2023-10-04"},{"lineNumber":49,"author":{"gitId":"spinoandraptos"},"content":" */","lastModifiedDate":"2023-10-04"},{"lineNumber":50,"author":{"gitId":"spinoandraptos"},"content":" public void displayClosingMessage(){","lastModifiedDate":"2023-10-04"},{"lineNumber":51,"author":{"gitId":"spinoandraptos"},"content":" dataStorage.updateData(tasks);","lastModifiedDate":"2023-10-04"},{"lineNumber":52,"author":{"gitId":"spinoandraptos"},"content":" System.out.println(\" Aww you are leaving? *sniffs*\");","lastModifiedDate":"2023-10-04"},{"lineNumber":53,"author":{"gitId":"spinoandraptos"},"content":" System.out.println(\" Well... hope to see you again soon!\");","lastModifiedDate":"2023-10-04"},{"lineNumber":54,"author":{"gitId":"spinoandraptos"},"content":" showLine();","lastModifiedDate":"2023-10-04"},{"lineNumber":55,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":56,"author":{"gitId":"spinoandraptos"},"content":" /**","lastModifiedDate":"2023-10-04"},{"lineNumber":57,"author":{"gitId":"spinoandraptos"},"content":" * Sets up the bridging between the UI and tasks data.","lastModifiedDate":"2023-10-04"},{"lineNumber":58,"author":{"gitId":"spinoandraptos"},"content":" *","lastModifiedDate":"2023-10-04"},{"lineNumber":59,"author":{"gitId":"spinoandraptos"},"content":" * @param tasks A record of all tasks documented that is built on program start and disposed on program exit.","lastModifiedDate":"2023-10-04"},{"lineNumber":60,"author":{"gitId":"spinoandraptos"},"content":" * @param dataStorage The hard disk record of all tasks documented that persists even on program exit.","lastModifiedDate":"2023-10-04"},{"lineNumber":61,"author":{"gitId":"spinoandraptos"},"content":" */","lastModifiedDate":"2023-10-04"},{"lineNumber":62,"author":{"gitId":"spinoandraptos"},"content":" public Ui(Storage dataStorage, TaskList tasks){","lastModifiedDate":"2023-10-04"},{"lineNumber":63,"author":{"gitId":"spinoandraptos"},"content":" this.dataStorage \u003d dataStorage;","lastModifiedDate":"2023-10-04"},{"lineNumber":64,"author":{"gitId":"spinoandraptos"},"content":" this.tasks \u003d tasks;","lastModifiedDate":"2023-10-04"},{"lineNumber":65,"author":{"gitId":"spinoandraptos"},"content":" }","lastModifiedDate":"2023-10-04"},{"lineNumber":66,"author":{"gitId":"spinoandraptos"},"content":"}","lastModifiedDate":"2023-10-04"},{"lineNumber":67,"author":{"gitId":"spinoandraptos"},"content":"","lastModifiedDate":"2023-10-04"}],"authorContributionMap":{"spinoandraptos":67}}] diff --git a/AY2324S1-CS2113-W12-1_tp_master/commits.json b/AY2324S1-CS2113-W12-1_tp_master/commits.json index 3e1c96d..2c55d38 100644 --- a/AY2324S1-CS2113-W12-1_tp_master/commits.json +++ b/AY2324S1-CS2113-W12-1_tp_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"spinoandraptos":[{"date":"2023-10-04","commitResults":[{"hash":"6c6d1698f76fbc9d508f95105074ab9f2110d65c","isMergeCommit":true,"messageTitle":"Merge pull request #3 from StevenGX12/master","messageBody":"Add Guan Xiao","fileTypesAndContributionMap":{}},{"hash":"df29befffe396116433778af88e0a3623bece7fc","isMergeCommit":false,"messageTitle":"add Juncheng","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":6,"deletions":6}}},{"hash":"419f657d64069e11fed53b7deb272799c0cf26f6","isMergeCommit":false,"messageTitle":"Refactoring","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1335,"deletions":21}}},{"hash":"7d646598095de5b46119f52d8328c6dcbe88e668","isMergeCommit":true,"messageTitle":"Merge pull request #6 from spinoandraptos/master","messageBody":"Refactoring","fileTypesAndContributionMap":{}}]}],"StevenGX12":[{"date":"2023-10-04","commitResults":[{"hash":"89a5fcaa30ce7cd31fe47503bb2873226575c6b8","isMergeCommit":true,"messageTitle":"Merge pull request #2 from James-Hong-Jey/master","messageBody":"Add James","fileTypesAndContributionMap":{}},{"hash":"9dc6e6889ff581686f9e040603ee748d51c37b1a","isMergeCommit":false,"messageTitle":"added Guan Xiao AboutUs.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"e43a7268e881e66880f125a55ba992a5659e1637","isMergeCommit":true,"messageTitle":"resolved merge conflict","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"5794b6bc163b412507ec00d46d2f9627c6a034f7","isMergeCommit":true,"messageTitle":"Merge pull request #5 from lisizhuang-0121/master","messageBody":"Update aboutus.md","fileTypesAndContributionMap":{}}]}],"yeo-menghan":[{"date":"2023-10-04","commitResults":[{"hash":"437a578d991ab42603936e351239623440e806c8","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"Change from Duke to QuizHub on ReadMe","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"568326efb68a7553262bf268501d90613739f023","isMergeCommit":true,"messageTitle":"Merge pull request #4 from spinoandraptos/master","messageBody":"add Juncheng","fileTypesAndContributionMap":{}}]}],"James-Hong-Jey":[{"date":"2023-10-04","commitResults":[{"hash":"cfa71b85ff164366845684af16d070e31ea60359","isMergeCommit":false,"messageTitle":"Change aboutus.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"ff15f0850b54fd060d30b9efb9967fc1e0d9ab18","isMergeCommit":true,"messageTitle":"Resolve merge conflict","messageBody":"","fileTypesAndContributionMap":{}}]}],"lisizhuang-0121":[{"date":"2023-10-04","commitResults":[{"hash":"db4924094e6d09cacbe80b263645d4f6e6778802","isMergeCommit":true,"messageTitle":"Merge pull request #1 from yeo-menghan/master","messageBody":"Add personal details(Meng Han) on AboutUs.md","fileTypesAndContributionMap":{}},{"hash":"7398eac81f0be5e14293d06439587f84e7cea114","isMergeCommit":false,"messageTitle":"Update aboutus.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":7,"deletions":7}}}]}]},"authorFileTypeContributionMap":{"spinoandraptos":{"docs":1,"functional-code":1335,"test-code":0},"StevenGX12":{"docs":1,"functional-code":0,"test-code":0},"yeo-menghan":{"docs":1,"functional-code":0,"test-code":0},"James-Hong-Jey":{"docs":1,"functional-code":0,"test-code":0},"lisizhuang-0121":{"docs":2,"functional-code":0,"test-code":0}},"authorContributionVariance":{"spinoandraptos":132882.19,"StevenGX12":0.28402367,"yeo-menghan":0.28402367,"James-Hong-Jey":0.28402367,"lisizhuang-0121":13.917159},"authorDisplayNameMap":{"spinoandraptos":"CS2113-W12-1 MAN ..HENG","StevenGX12":"CS2113-W12-1 GUAN..XIAO","yeo-menghan":"CS2113-W12-1 YEO .. HAN","James-Hong-Jey":"CS2113-W12-1 JAME.. JEY","lisizhuang-0121":"CS2113-W12-1 LI S..UANG"}} +{"authorDailyContributionsMap":{"spinoandraptos":[{"date":"2023-10-04","commitResults":[{"hash":"6c6d1698f76fbc9d508f95105074ab9f2110d65c","isMergeCommit":true,"messageTitle":"Merge pull request #3 from StevenGX12/master","messageBody":"Add Guan Xiao","fileTypesAndContributionMap":{}},{"hash":"df29befffe396116433778af88e0a3623bece7fc","isMergeCommit":false,"messageTitle":"add Juncheng","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":6,"deletions":6}}},{"hash":"419f657d64069e11fed53b7deb272799c0cf26f6","isMergeCommit":false,"messageTitle":"Refactoring","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1335,"deletions":21}}},{"hash":"7d646598095de5b46119f52d8328c6dcbe88e668","isMergeCommit":true,"messageTitle":"Merge pull request #6 from spinoandraptos/master","messageBody":"Refactoring","fileTypesAndContributionMap":{}}]}],"StevenGX12":[{"date":"2023-10-04","commitResults":[{"hash":"89a5fcaa30ce7cd31fe47503bb2873226575c6b8","isMergeCommit":true,"messageTitle":"Merge pull request #2 from James-Hong-Jey/master","messageBody":"Add James","fileTypesAndContributionMap":{}},{"hash":"9dc6e6889ff581686f9e040603ee748d51c37b1a","isMergeCommit":false,"messageTitle":"added Guan Xiao AboutUs.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"e43a7268e881e66880f125a55ba992a5659e1637","isMergeCommit":true,"messageTitle":"resolved merge conflict","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"5794b6bc163b412507ec00d46d2f9627c6a034f7","isMergeCommit":true,"messageTitle":"Merge pull request #5 from lisizhuang-0121/master","messageBody":"Update aboutus.md","fileTypesAndContributionMap":{}}]}],"yeo-menghan":[{"date":"2023-10-04","commitResults":[{"hash":"437a578d991ab42603936e351239623440e806c8","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"Change from Duke to QuizHub on ReadMe","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"96293a9443789434cf941b15cdebf0bbfa57d745","isMergeCommit":false,"messageTitle":"Add personal details(Meng Han) on AboutUs.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":7,"deletions":7}}},{"hash":"568326efb68a7553262bf268501d90613739f023","isMergeCommit":true,"messageTitle":"Merge pull request #4 from spinoandraptos/master","messageBody":"add Juncheng","fileTypesAndContributionMap":{}}]}],"James-Hong-Jey":[{"date":"2023-10-04","commitResults":[{"hash":"cfa71b85ff164366845684af16d070e31ea60359","isMergeCommit":false,"messageTitle":"Change aboutus.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"ff15f0850b54fd060d30b9efb9967fc1e0d9ab18","isMergeCommit":true,"messageTitle":"Resolve merge conflict","messageBody":"","fileTypesAndContributionMap":{}}]}],"lisizhuang-0121":[{"date":"2023-10-04","commitResults":[{"hash":"db4924094e6d09cacbe80b263645d4f6e6778802","isMergeCommit":true,"messageTitle":"Merge pull request #1 from yeo-menghan/master","messageBody":"Add personal details(Meng Han) on AboutUs.md","fileTypesAndContributionMap":{}},{"hash":"7398eac81f0be5e14293d06439587f84e7cea114","isMergeCommit":false,"messageTitle":"Update aboutus.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":7,"deletions":7}}}]}]},"authorFileTypeContributionMap":{"spinoandraptos":{"docs":1,"functional-code":1335,"test-code":0},"StevenGX12":{"docs":1,"functional-code":0,"test-code":0},"yeo-menghan":{"docs":2,"functional-code":0,"test-code":0},"James-Hong-Jey":{"docs":1,"functional-code":0,"test-code":0},"lisizhuang-0121":{"docs":2,"functional-code":0,"test-code":0}},"authorContributionVariance":{"spinoandraptos":132882.19,"StevenGX12":0.28402367,"yeo-menghan":18.177515,"James-Hong-Jey":0.28402367,"lisizhuang-0121":13.917159},"authorDisplayNameMap":{"spinoandraptos":"CS2113-W12-1 MAN ..HENG","StevenGX12":"CS2113-W12-1 GUAN..XIAO","yeo-menghan":"CS2113-W12-1 YEO .. HAN","James-Hong-Jey":"CS2113-W12-1 JAME.. JEY","lisizhuang-0121":"CS2113-W12-1 LI S..UANG"}} diff --git a/archive.zip b/archive.zip index 140bc78236bc4c0cfe13192fc8ec292d13294f7c..c85923f4b58e79f847e9c6e9a8663c7158427157 100644 GIT binary patch delta 22905 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 delta 22885 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

?TBsLS8Ps-&l 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 LBRucFD)avVd;z12 diff --git a/reposense-logs/reposense.log.0 b/reposense-logs/reposense.log.0 index 9fa85c6..f3c36eb 100644 --- a/reposense-logs/reposense.log.0 +++ b/reposense-logs/reposense.log.0 @@ -1,20 +1,20 @@ -Oct 07, 2023 2:36:48 PM reposense.system.LogsManager addFileHandler +Oct 07, 2023 2:49:16 PM reposense.system.LogsManager addFileHandler INFO: Log temp folder has been successfully created -Oct 07, 2023 2:36:48 PM reposense.parser.CsvParser validateHeader +Oct 07, 2023 2:49:16 PM reposense.parser.CsvParser validateHeader INFO: Parsed header of CSV file, repo-config.csv, and recognized columns: Ignore Standalone Config, Repository's Location, Branch, Shallow Cloning, File formats, Ignore Glob List, Ignore Authors List, Find Previous Authors, Ignore Commits List -Oct 07, 2023 2:36:48 PM reposense.parser.CsvParser validateHeader +Oct 07, 2023 2:49:16 PM reposense.parser.CsvParser validateHeader INFO: Parsed header of CSV file, author-config.csv, and recognized columns: Author's Emails, Repository's Location, Author's GitHub ID, Branch, Author's Display Name, Ignore Glob List, Author's Git Author Name -Oct 07, 2023 2:36:48 PM reposense.model.AuthorConfiguration checkDuplicateAliases +Oct 07, 2023 2:49:16 PM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias choonsiang found. The alias will belong to the last author - ChoonSiang -Oct 07, 2023 2:36:48 PM reposense.model.AuthorConfiguration checkDuplicateAliases +Oct 07, 2023 2:49:16 PM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias barbaracwx found. The alias will belong to the last author - Barbaracwx -Oct 07, 2023 2:36:48 PM reposense.model.AuthorConfiguration checkDuplicateAliases +Oct 07, 2023 2:49:16 PM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias choonsiang found. The alias will belong to the last author - ChoonSiang -Oct 07, 2023 2:36:48 PM reposense.model.AuthorConfiguration checkDuplicateAliases +Oct 07, 2023 2:49:16 PM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias barbaracwx found. The alias will belong to the last author - Barbaracwx -Oct 07, 2023 2:36:48 PM reposense.parser.CsvParser validateHeader +Oct 07, 2023 2:49:16 PM reposense.parser.CsvParser validateHeader INFO: Parsed header of CSV file, group-config.csv, and recognized columns: Globs, Repository's Location, Group Name -Oct 07, 2023 2:36:48 PM reposense.git.GitConfig getGlobalGitLfsConfig +Oct 07, 2023 2:49:16 PM reposense.git.GitConfig getGlobalGitLfsConfig WARNING: Could not get global git lfs config java.lang.RuntimeException: reposense.system.CommandRunnerProcessException: Error returned from command git config --global --list on path . : fatal: unable to read config file '/home/runner/.gitconfig': No such file or directory @@ -30,157 +30,153 @@ fatal: unable to read config file '/home/runner/.gitconfig': No such file or dir at reposense.system.CommandRunner.runCommand(CommandRunner.java:21) ... 3 more -Oct 07, 2023 2:36:48 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/AY2324S1-CS2113-T17-3/tp.git... -Oct 07, 2023 2:36:48 PM reposense.report.RepoCloner spawnCloneProcess +Oct 07, 2023 2:49:17 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S1-CS2113-W12-2/tp.git... -Oct 07, 2023 2:36:48 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/AY2324S1-CS2113-W12-4/tp.git... -Oct 07, 2023 2:36:48 PM reposense.report.RepoCloner spawnCloneProcess +Oct 07, 2023 2:49:17 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S1-CS2113-T17-4/tp.git... -Oct 07, 2023 2:36:48 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/AY2324S1-CS2113-W12-2/tp.git to complete... -Oct 07, 2023 2:36:48 PM reposense.report.RepoCloner waitForCloneProcess +Oct 07, 2023 2:49:17 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/AY2324S1-CS2113-T17-3/tp.git... +Oct 07, 2023 2:49:17 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/AY2324S1-CS2113-W12-4/tp.git... +Oct 07, 2023 2:49:17 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AY2324S1-CS2113-W12-4/tp.git to complete... +Oct 07, 2023 2:49:17 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S1-CS2113-T17-4/tp.git to complete... -Oct 07, 2023 2:36:48 PM reposense.report.RepoCloner waitForCloneProcess +Oct 07, 2023 2:49:17 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AY2324S1-CS2113-W12-2/tp.git to complete... +Oct 07, 2023 2:49:17 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S1-CS2113-T17-3/tp.git to complete... -Oct 07, 2023 2:36:48 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/AY2324S1-CS2113-W12-4/tp.git to complete... -Oct 07, 2023 2:36:49 PM reposense.report.RepoCloner waitForCloneProcess +Oct 07, 2023 2:49:17 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S1-CS2113-W12-2/tp.git completed! -Oct 07, 2023 2:36:49 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/AY2324S1-CS2113-T18-1/tp.git... -Oct 07, 2023 2:36:49 PM reposense.report.ReportGenerator analyzeRepos -INFO: [1/17] Analyzing https://github.com/AY2324S1-CS2113-W12-2/tp.git (master)... -Oct 07, 2023 2:36:49 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/AY2324S1-CS2113-T18-1/tp.git to complete... -Oct 07, 2023 2:36:49 PM reposense.report.RepoCloner waitForCloneProcess +Oct 07, 2023 2:49:17 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S1-CS2113-W12-4/tp.git completed! -Oct 07, 2023 2:36:49 PM reposense.report.RepoCloner spawnCloneProcess +Oct 07, 2023 2:49:17 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/AY2324S1-CS2113-T18-1/tp.git... +Oct 07, 2023 2:49:17 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S1-CS2113-F11-3/tp.git... -Oct 07, 2023 2:36:49 PM reposense.report.ReportGenerator analyzeRepos -INFO: [2/17] Analyzing https://github.com/AY2324S1-CS2113-W12-4/tp.git (master)... -Oct 07, 2023 2:36:49 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S1-CS2113-W12-2/tp.git (master) does not contain a standalone config file. -Oct 07, 2023 2:36:49 PM reposense.report.RepoCloner waitForCloneProcess +Oct 07, 2023 2:49:17 PM reposense.report.ReportGenerator analyzeRepos +INFO: [1/17] Analyzing https://github.com/AY2324S1-CS2113-W12-4/tp.git (master)... +Oct 07, 2023 2:49:17 PM reposense.report.ReportGenerator analyzeRepos +INFO: [2/17] Analyzing https://github.com/AY2324S1-CS2113-W12-2/tp.git (master)... +Oct 07, 2023 2:49:17 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AY2324S1-CS2113-T18-1/tp.git to complete... +Oct 07, 2023 2:49:17 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S1-CS2113-F11-3/tp.git to complete... -Oct 07, 2023 2:36:49 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S1-CS2113-W12-2/tp.git (master)... -Oct 07, 2023 2:36:49 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S1-CS2113-W12-4/tp.git (master) does not contain a standalone config file. -Oct 07, 2023 2:36:49 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S1-CS2113-W12-4/tp.git (master)... -Oct 07, 2023 2:36:49 PM reposense.report.RepoCloner waitForCloneProcess +Oct 07, 2023 2:49:17 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S1-CS2113-T17-4/tp.git completed! -Oct 07, 2023 2:36:49 PM reposense.report.RepoCloner spawnCloneProcess +Oct 07, 2023 2:49:17 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S1-CS2113-W12-1/tp.git... -Oct 07, 2023 2:36:49 PM reposense.report.RepoCloner waitForCloneProcess +Oct 07, 2023 2:49:18 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S1-CS2113-W12-2/tp.git (master) does not contain a standalone config file. +Oct 07, 2023 2:49:18 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S1-CS2113-W12-1/tp.git to complete... -Oct 07, 2023 2:36:49 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S1-CS2113-W12-4/tp.git (master)... -Oct 07, 2023 2:36:49 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 07, 2023 2:49:18 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S1-CS2113-W12-2/tp.git (master)... +Oct 07, 2023 2:49:18 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S1-CS2113-W12-4/tp.git (master) does not contain a standalone config file. +Oct 07, 2023 2:49:18 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S1-CS2113-W12-4/tp.git (master)... +Oct 07, 2023 2:49:18 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S1-CS2113-W12-2/tp.git (master)... -Oct 07, 2023 2:36:49 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 07, 2023 2:49:18 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S1-CS2113-W12-4/tp.git (master)... +Oct 07, 2023 2:49:18 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S1-CS2113-T17-3/tp.git completed! +Oct 07, 2023 2:49:18 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/AY2324S1-CS2113-W12-3/tp.git... +Oct 07, 2023 2:49:18 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S1-CS2113-W12-2/tp.git (master)... -Oct 07, 2023 2:36:49 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 07, 2023 2:49:18 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AY2324S1-CS2113-W12-3/tp.git to complete... +Oct 07, 2023 2:49:18 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S1-CS2113-W12-4/tp.git (master)... -Oct 07, 2023 2:36:49 PM reposense.report.ReportGenerator analyzeRepo +Oct 07, 2023 2:49:18 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S1-CS2113-W12-2/tp.git (master) completed! -Oct 07, 2023 2:36:49 PM reposense.report.ReportGenerator analyzeRepo +Oct 07, 2023 2:49:18 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S1-CS2113-W12-4/tp.git (master) completed! -Oct 07, 2023 2:36:49 PM reposense.report.ReportGenerator analyzeRepos +Oct 07, 2023 2:49:18 PM reposense.report.ReportGenerator analyzeRepos INFO: [3/17] Analyzing https://github.com/AY2324S1-CS2113-T17-4/tp.git (master)... -Oct 07, 2023 2:36:49 PM reposense.report.RepoCloner waitForCloneProcess +Oct 07, 2023 2:49:18 PM reposense.report.ReportGenerator analyzeRepos +INFO: [4/17] Analyzing https://github.com/AY2324S1-CS2113-T17-3/tp.git (master)... +Oct 07, 2023 2:49:18 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S1-CS2113-T18-1/tp.git completed! -Oct 07, 2023 2:36:49 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/AY2324S1-CS2113-W12-3/tp.git... -Oct 07, 2023 2:36:49 PM reposense.report.ReportGenerator analyzeRepos -INFO: [4/17] Analyzing https://github.com/AY2324S1-CS2113-T18-1/tp.git (master)... -Oct 07, 2023 2:36:49 PM reposense.report.RepoCloner waitForCloneProcess +Oct 07, 2023 2:49:18 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S1-CS2113-F11-3/tp.git completed! -Oct 07, 2023 2:36:49 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/AY2324S1-CS2113-W12-3/tp.git to complete... -Oct 07, 2023 2:36:50 PM reposense.report.RepoCloner spawnCloneProcess +Oct 07, 2023 2:49:18 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S1-CS2113-T18-2/tp.git... -Oct 07, 2023 2:36:50 PM reposense.report.ReportGenerator updateRepoConfig +Oct 07, 2023 2:49:18 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/AY2324S1-CS2113-T18-3/tp.git... +Oct 07, 2023 2:49:18 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S1-CS2113-T17-4/tp.git (master) does not contain a standalone config file. -Oct 07, 2023 2:36:50 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 07, 2023 2:49:18 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S1-CS2113-T17-4/tp.git (master)... -Oct 07, 2023 2:36:50 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S1-CS2113-T18-1/tp.git (master) does not contain a standalone config file. -Oct 07, 2023 2:36:50 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S1-CS2113-T18-1/tp.git (master)... -Oct 07, 2023 2:36:50 PM reposense.report.RepoCloner waitForCloneProcess +Oct 07, 2023 2:49:18 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S1-CS2113-T18-2/tp.git to complete... -Oct 07, 2023 2:36:50 PM reposense.report.RepoCloner waitForCloneProcess +Oct 07, 2023 2:49:18 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AY2324S1-CS2113-T18-3/tp.git to complete... +Oct 07, 2023 2:49:18 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S1-CS2113-W12-1/tp.git completed! -Oct 07, 2023 2:36:50 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S1-CS2113-T17-3/tp.git completed! -Oct 07, 2023 2:36:50 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/AY2324S1-CS2113-T18-3/tp.git... -Oct 07, 2023 2:36:50 PM reposense.report.RepoCloner spawnCloneProcess +Oct 07, 2023 2:49:18 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S1-CS2113T-W11-1/tp.git... -Oct 07, 2023 2:36:50 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/AY2324S1-CS2113-T18-3/tp.git to complete... -Oct 07, 2023 2:36:50 PM reposense.report.RepoCloner waitForCloneProcess +Oct 07, 2023 2:49:18 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S1-CS2113T-W11-1/tp.git to complete... -Oct 07, 2023 2:36:50 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 07, 2023 2:49:18 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S1-CS2113-T17-3/tp.git (master) does not contain a standalone config file. +Oct 07, 2023 2:49:18 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S1-CS2113-T17-3/tp.git (master)... +Oct 07, 2023 2:49:19 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S1-CS2113-T17-4/tp.git (master)... -Oct 07, 2023 2:36:50 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S1-CS2113-T18-1/tp.git (master)... -Oct 07, 2023 2:36:50 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 07, 2023 2:49:19 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S1-CS2113-W12-3/tp.git completed! +Oct 07, 2023 2:49:19 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/AY2324S1-CS2113-T18-4/tp.git... +Oct 07, 2023 2:49:19 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AY2324S1-CS2113-T18-4/tp.git to complete... +Oct 07, 2023 2:49:19 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S1-CS2113-T17-4/tp.git (master)... -Oct 07, 2023 2:36:50 PM reposense.report.ReportGenerator analyzeRepo +Oct 07, 2023 2:49:19 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S1-CS2113-T17-4/tp.git (master) completed! -Oct 07, 2023 2:36:50 PM reposense.report.ReportGenerator analyzeRepos -INFO: [5/17] Analyzing https://github.com/AY2324S1-CS2113-F11-3/tp.git (master)... -Oct 07, 2023 2:36:50 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S1-CS2113-T18-1/tp.git (master)... -Oct 07, 2023 2:36:50 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S1-CS2113-T18-1/tp.git (master) completed! -Oct 07, 2023 2:36:50 PM reposense.report.ReportGenerator analyzeRepos -INFO: [6/17] Analyzing https://github.com/AY2324S1-CS2113-W12-1/tp.git (master)... -Oct 07, 2023 2:36:50 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S1-CS2113-F11-3/tp.git (master) does not contain a standalone config file. -Oct 07, 2023 2:36:50 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S1-CS2113-F11-3/tp.git (master)... -Oct 07, 2023 2:36:50 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S1-CS2113-W12-1/tp.git (master) does not contain a standalone config file. -Oct 07, 2023 2:36:50 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S1-CS2113-W12-1/tp.git (master)... -Oct 07, 2023 2:36:50 PM reposense.report.RepoCloner waitForCloneProcess +Oct 07, 2023 2:49:19 PM reposense.report.ReportGenerator analyzeRepos +INFO: [5/17] Analyzing https://github.com/AY2324S1-CS2113-T18-1/tp.git (master)... +Oct 07, 2023 2:49:19 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S1-CS2113-T18-1/tp.git (master) does not contain a standalone config file. +Oct 07, 2023 2:49:19 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S1-CS2113-T18-1/tp.git (master)... +Oct 07, 2023 2:49:19 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S1-CS2113-T17-3/tp.git (master)... +Oct 07, 2023 2:49:19 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S1-CS2113-T18-3/tp.git completed! +Oct 07, 2023 2:49:19 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S1-CS2113-T18-2/tp.git completed! -Oct 07, 2023 2:36:50 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S1-CS2113-W12-3/tp.git completed! -Oct 07, 2023 2:36:50 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S1-CS2113-F11-3/tp.git (master)... -Oct 07, 2023 2:36:50 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/AY2324S1-CS2113-T18-4/tp.git... -Oct 07, 2023 2:36:50 PM reposense.report.RepoCloner spawnCloneProcess +Oct 07, 2023 2:49:19 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S1-CS2113-F11-1/tp.git... -Oct 07, 2023 2:36:50 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S1-CS2113T-W11-1/tp.git completed! -Oct 07, 2023 2:36:50 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/AY2324S1-CS2113-T18-4/tp.git to complete... -Oct 07, 2023 2:36:50 PM reposense.report.RepoCloner spawnCloneProcess +Oct 07, 2023 2:49:19 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S1-CS2113-F11-2/tp.git... -Oct 07, 2023 2:36:50 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/AY2324S1-CS2113-F11-1/tp.git to complete... -Oct 07, 2023 2:36:51 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S1-CS2113-T18-3/tp.git completed! -Oct 07, 2023 2:36:51 PM reposense.report.RepoCloner waitForCloneProcess +Oct 07, 2023 2:49:19 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S1-CS2113-F11-2/tp.git to complete... -Oct 07, 2023 2:36:51 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S1-CS2113-F11-3/tp.git (master)... -Oct 07, 2023 2:36:51 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S1-CS2113-F11-3/tp.git (master) completed! -Oct 07, 2023 2:36:51 PM reposense.report.RepoCloner spawnCloneProcess +Oct 07, 2023 2:49:19 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AY2324S1-CS2113-F11-1/tp.git to complete... +Oct 07, 2023 2:49:19 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S1-CS2113T-W11-1/tp.git completed! +Oct 07, 2023 2:49:19 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S1-CS2113-T17-2/tp.git... -Oct 07, 2023 2:36:51 PM reposense.report.ReportGenerator analyzeRepos -INFO: [7/17] Analyzing https://github.com/AY2324S1-CS2113-T17-3/tp.git (master)... -Oct 07, 2023 2:36:51 PM reposense.report.RepoCloner waitForCloneProcess +Oct 07, 2023 2:49:19 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S1-CS2113-T17-2/tp.git to complete... -Oct 07, 2023 2:36:51 PM reposense.report.RepoCloner waitForCloneProcess +Oct 07, 2023 2:49:19 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S1-CS2113-T17-3/tp.git (master)... +Oct 07, 2023 2:49:19 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S1-CS2113-T17-3/tp.git (master) completed! +Oct 07, 2023 2:49:19 PM reposense.report.ReportGenerator analyzeRepos +INFO: [6/17] Analyzing https://github.com/AY2324S1-CS2113-F11-3/tp.git (master)... +Oct 07, 2023 2:49:19 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S1-CS2113-T18-1/tp.git (master)... +Oct 07, 2023 2:49:19 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S1-CS2113-F11-3/tp.git (master) does not contain a standalone config file. +Oct 07, 2023 2:49:19 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S1-CS2113-F11-3/tp.git (master)... +Oct 07, 2023 2:49:19 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S1-CS2113-T18-1/tp.git (master)... +Oct 07, 2023 2:49:19 PM reposense.report.RepoCloner waitForCloneProcess WARNING: Exception met while trying to clone the repo "AY2324S1-CS2113-F11-2/tp[master]", will skip this repo. reposense.system.CommandRunnerProcessException: Error returned from command git clone --bare 'https://github.com/AY2324S1-CS2113-F11-2/tp.git' 'repos/AY2324S1-CS2113-F11-2_tp/tp_bare' on path . : Cloning into bare repository 'repos/AY2324S1-CS2113-F11-2_tp/tp_bare'... @@ -196,149 +192,153 @@ fatal: could not read Username for 'https://github.com': No such device or addre at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) at java.base/java.lang.Thread.run(Thread.java:829) -Oct 07, 2023 2:36:51 PM reposense.report.RepoCloner spawnCloneProcess +Oct 07, 2023 2:49:19 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S1-CS2113T-W11-2/tp.git... -Oct 07, 2023 2:36:51 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/AY2324S1-CS2113T-W11-2/tp.git to complete... -Oct 07, 2023 2:36:51 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S1-CS2113-T17-3/tp.git (master) does not contain a standalone config file. -Oct 07, 2023 2:36:51 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S1-CS2113-T17-3/tp.git (master)... -Oct 07, 2023 2:36:51 PM reposense.report.RepoCloner waitForCloneProcess +Oct 07, 2023 2:49:19 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S1-CS2113-T18-1/tp.git (master) completed! +Oct 07, 2023 2:49:19 PM reposense.report.ReportGenerator analyzeRepos +INFO: [7/17] Analyzing https://github.com/AY2324S1-CS2113-W12-1/tp.git (master)... +Oct 07, 2023 2:49:19 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S1-CS2113-T18-4/tp.git completed! -Oct 07, 2023 2:36:51 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S1-CS2113-F11-1/tp.git completed! -Oct 07, 2023 2:36:51 PM reposense.report.RepoCloner spawnCloneProcess +Oct 07, 2023 2:49:19 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AY2324S1-CS2113T-W11-2/tp.git to complete... +Oct 07, 2023 2:49:19 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S1-CS2113-T17-1/tp.git... -Oct 07, 2023 2:36:51 PM reposense.report.RepoCloner waitForCloneProcess +Oct 07, 2023 2:49:19 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S1-CS2113-W12-1/tp.git (master) does not contain a standalone config file. +Oct 07, 2023 2:49:19 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S1-CS2113-W12-1/tp.git (master)... +Oct 07, 2023 2:49:19 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S1-CS2113-T17-1/tp.git to complete... -Oct 07, 2023 2:36:51 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S1-CS2113-W12-1/tp.git (master)... -Oct 07, 2023 2:36:51 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S1-CS2113-T17-2/tp.git completed! -Oct 07, 2023 2:36:51 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S1-CS2113-W12-1/tp.git (master)... -Oct 07, 2023 2:36:51 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S1-CS2113-W12-1/tp.git (master) completed! -Oct 07, 2023 2:36:51 PM reposense.report.ReportGenerator analyzeRepos +Oct 07, 2023 2:49:19 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S1-CS2113-F11-3/tp.git (master)... +Oct 07, 2023 2:49:20 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S1-CS2113-F11-3/tp.git (master)... +Oct 07, 2023 2:49:20 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S1-CS2113-F11-3/tp.git (master) completed! +Oct 07, 2023 2:49:20 PM reposense.report.ReportGenerator analyzeRepos INFO: [8/17] Analyzing https://github.com/AY2324S1-CS2113-W12-3/tp.git (master)... -Oct 07, 2023 2:36:51 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S1-CS2113T-W11-2/tp.git completed! -Oct 07, 2023 2:36:51 PM reposense.report.ReportGenerator updateRepoConfig +Oct 07, 2023 2:49:20 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S1-CS2113-W12-3/tp.git (master) does not contain a standalone config file. -Oct 07, 2023 2:36:51 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 07, 2023 2:49:20 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S1-CS2113-W12-3/tp.git (master)... -Oct 07, 2023 2:36:51 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S1-CS2113-T17-3/tp.git (master)... -Oct 07, 2023 2:36:52 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 07, 2023 2:49:20 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S1-CS2113-W12-3/tp.git (master)... -Oct 07, 2023 2:36:52 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 07, 2023 2:49:20 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S1-CS2113-F11-1/tp.git completed! +Oct 07, 2023 2:49:20 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S1-CS2113-W12-3/tp.git (master)... -Oct 07, 2023 2:36:52 PM reposense.report.ReportGenerator analyzeRepo +Oct 07, 2023 2:49:20 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S1-CS2113-W12-3/tp.git (master) completed! -Oct 07, 2023 2:36:52 PM reposense.report.ReportGenerator analyzeRepos -INFO: [9/17] Analyzing https://github.com/AY2324S1-CS2113-T18-2/tp.git (master)... -Oct 07, 2023 2:36:52 PM reposense.report.ReportGenerator updateRepoConfig +Oct 07, 2023 2:49:20 PM reposense.report.ReportGenerator analyzeRepos +INFO: [9/17] Analyzing https://github.com/AY2324S1-CS2113-T18-3/tp.git (master)... +Oct 07, 2023 2:49:20 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S1-CS2113-T17-2/tp.git completed! +Oct 07, 2023 2:49:20 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S1-CS2113-T18-3/tp.git (master) does not contain a standalone config file. +Oct 07, 2023 2:49:20 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S1-CS2113-T18-3/tp.git (master)... +Oct 07, 2023 2:49:20 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S1-CS2113-W12-1/tp.git (master)... +Oct 07, 2023 2:49:20 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S1-CS2113-T18-3/tp.git (master)... +Oct 07, 2023 2:49:20 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S1-CS2113-W12-1/tp.git (master)... +Oct 07, 2023 2:49:20 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S1-CS2113-W12-1/tp.git (master) completed! +Oct 07, 2023 2:49:20 PM reposense.report.ReportGenerator analyzeRepos +INFO: [10/17] Analyzing https://github.com/AY2324S1-CS2113-T18-2/tp.git (master)... +Oct 07, 2023 2:49:20 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S1-CS2113-T18-3/tp.git (master)... +Oct 07, 2023 2:49:20 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S1-CS2113-T18-3/tp.git (master) completed! +Oct 07, 2023 2:49:20 PM reposense.report.ReportGenerator analyzeRepos +INFO: [11/17] Analyzing https://github.com/AY2324S1-CS2113T-W11-1/tp.git (master)... +Oct 07, 2023 2:49:20 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S1-CS2113-T18-2/tp.git (master) does not contain a standalone config file. -Oct 07, 2023 2:36:52 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 07, 2023 2:49:20 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S1-CS2113-T18-2/tp.git (master)... -Oct 07, 2023 2:36:52 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S1-CS2113-T17-3/tp.git (master)... -Oct 07, 2023 2:36:52 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S1-CS2113-T17-3/tp.git (master) completed! -Oct 07, 2023 2:36:52 PM reposense.report.ReportGenerator analyzeRepos -INFO: [10/17] Analyzing https://github.com/AY2324S1-CS2113T-W11-1/tp.git (master)... -Oct 07, 2023 2:36:52 PM reposense.report.ReportGenerator updateRepoConfig +Oct 07, 2023 2:49:20 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S1-CS2113T-W11-1/tp.git (master) does not contain a standalone config file. -Oct 07, 2023 2:36:52 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 07, 2023 2:49:20 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S1-CS2113T-W11-1/tp.git (master)... -Oct 07, 2023 2:36:52 PM reposense.report.RepoCloner waitForCloneProcess +Oct 07, 2023 2:49:20 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S1-CS2113T-W11-2/tp.git completed! +Oct 07, 2023 2:49:20 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S1-CS2113-T17-1/tp.git completed! -Oct 07, 2023 2:36:52 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 07, 2023 2:49:20 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S1-CS2113T-W11-1/tp.git (master)... -Oct 07, 2023 2:36:52 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 07, 2023 2:49:20 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S1-CS2113T-W11-1/tp.git (master)... -Oct 07, 2023 2:36:52 PM reposense.report.ReportGenerator analyzeRepo +Oct 07, 2023 2:49:20 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S1-CS2113T-W11-1/tp.git (master) completed! -Oct 07, 2023 2:36:52 PM reposense.report.ReportGenerator analyzeRepos -INFO: [11/17] Analyzing https://github.com/AY2324S1-CS2113-T18-3/tp.git (master)... -Oct 07, 2023 2:36:52 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S1-CS2113-T18-2/tp.git (master)... -Oct 07, 2023 2:36:52 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S1-CS2113-T18-3/tp.git (master) does not contain a standalone config file. -Oct 07, 2023 2:36:52 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S1-CS2113-T18-3/tp.git (master)... -Oct 07, 2023 2:36:52 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S1-CS2113-T18-2/tp.git (master)... -Oct 07, 2023 2:36:52 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S1-CS2113-T18-2/tp.git (master) completed! -Oct 07, 2023 2:36:52 PM reposense.report.ReportGenerator analyzeRepos +Oct 07, 2023 2:49:20 PM reposense.report.ReportGenerator analyzeRepos INFO: [12/17] Analyzing https://github.com/AY2324S1-CS2113-T18-4/tp.git (master)... -Oct 07, 2023 2:36:52 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S1-CS2113-T18-3/tp.git (master)... -Oct 07, 2023 2:36:52 PM reposense.report.ReportGenerator updateRepoConfig +Oct 07, 2023 2:49:20 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S1-CS2113-T18-4/tp.git (master) does not contain a standalone config file. -Oct 07, 2023 2:36:52 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 07, 2023 2:49:20 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S1-CS2113-T18-4/tp.git (master)... -Oct 07, 2023 2:36:52 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S1-CS2113-T18-3/tp.git (master)... -Oct 07, 2023 2:36:52 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S1-CS2113-T18-3/tp.git (master) completed! -Oct 07, 2023 2:36:52 PM reposense.report.ReportGenerator analyzeRepos -INFO: [13/17] Analyzing https://github.com/AY2324S1-CS2113-F11-1/tp.git (master)... -Oct 07, 2023 2:36:52 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S1-CS2113-F11-1/tp.git (master) does not contain a standalone config file. -Oct 07, 2023 2:36:52 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S1-CS2113-F11-1/tp.git (master)... -Oct 07, 2023 2:36:52 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 07, 2023 2:49:20 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S1-CS2113-T18-2/tp.git (master)... +Oct 07, 2023 2:49:20 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S1-CS2113-T18-2/tp.git (master)... +Oct 07, 2023 2:49:20 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S1-CS2113-T18-4/tp.git (master)... -Oct 07, 2023 2:36:52 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S1-CS2113-F11-1/tp.git (master)... -Oct 07, 2023 2:36:52 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 07, 2023 2:49:20 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S1-CS2113-T18-2/tp.git (master) completed! +Oct 07, 2023 2:49:20 PM reposense.report.ReportGenerator analyzeRepos +INFO: [13/17] Analyzing https://github.com/AY2324S1-CS2113-F11-1/tp.git (master)... +Oct 07, 2023 2:49:20 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S1-CS2113-T18-4/tp.git (master)... -Oct 07, 2023 2:36:52 PM reposense.report.ReportGenerator analyzeRepo +Oct 07, 2023 2:49:20 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S1-CS2113-T18-4/tp.git (master) completed! -Oct 07, 2023 2:36:52 PM reposense.report.ReportGenerator analyzeRepos +Oct 07, 2023 2:49:20 PM reposense.report.ReportGenerator analyzeRepos INFO: [14/17] Analyzing https://github.com/AY2324S1-CS2113-T17-2/tp.git (master)... -Oct 07, 2023 2:36:52 PM reposense.report.ReportGenerator updateRepoConfig +Oct 07, 2023 2:49:20 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S1-CS2113-F11-1/tp.git (master) does not contain a standalone config file. +Oct 07, 2023 2:49:20 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S1-CS2113-F11-1/tp.git (master)... +Oct 07, 2023 2:49:21 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S1-CS2113-T17-2/tp.git (master) does not contain a standalone config file. -Oct 07, 2023 2:36:52 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 07, 2023 2:49:21 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S1-CS2113-T17-2/tp.git (master)... -Oct 07, 2023 2:36:52 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 07, 2023 2:49:21 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S1-CS2113-F11-1/tp.git (master)... +Oct 07, 2023 2:49:21 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S1-CS2113-T17-2/tp.git (master)... +Oct 07, 2023 2:49:21 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S1-CS2113-F11-1/tp.git (master)... -Oct 07, 2023 2:36:52 PM reposense.report.ReportGenerator analyzeRepo +Oct 07, 2023 2:49:21 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S1-CS2113-F11-1/tp.git (master) completed! -Oct 07, 2023 2:36:52 PM reposense.report.ReportGenerator analyzeRepos +Oct 07, 2023 2:49:21 PM reposense.report.ReportGenerator analyzeRepos INFO: [15/17] Analyzing https://github.com/AY2324S1-CS2113T-W11-2/tp.git (master)... -Oct 07, 2023 2:36:52 PM reposense.report.ReportGenerator updateRepoConfig +Oct 07, 2023 2:49:21 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S1-CS2113T-W11-2/tp.git (master) does not contain a standalone config file. -Oct 07, 2023 2:36:52 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 07, 2023 2:49:21 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S1-CS2113T-W11-2/tp.git (master)... -Oct 07, 2023 2:36:52 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S1-CS2113-T17-2/tp.git (master)... -Oct 07, 2023 2:36:52 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S1-CS2113T-W11-2/tp.git (master)... -Oct 07, 2023 2:36:52 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 07, 2023 2:49:21 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S1-CS2113-T17-2/tp.git (master)... -Oct 07, 2023 2:36:52 PM reposense.report.ReportGenerator analyzeRepo +Oct 07, 2023 2:49:21 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S1-CS2113-T17-2/tp.git (master) completed! -Oct 07, 2023 2:36:52 PM reposense.report.ReportGenerator analyzeRepos +Oct 07, 2023 2:49:21 PM reposense.report.ReportGenerator analyzeRepos INFO: [16/17] Analyzing https://github.com/AY2324S1-CS2113-T17-1/tp.git (master)... -Oct 07, 2023 2:36:52 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S1-CS2113T-W11-2/tp.git (master)... -Oct 07, 2023 2:36:52 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S1-CS2113T-W11-2/tp.git (master) completed! -Oct 07, 2023 2:36:52 PM reposense.report.ReportGenerator updateRepoConfig +Oct 07, 2023 2:49:21 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S1-CS2113-T17-1/tp.git (master) does not contain a standalone config file. -Oct 07, 2023 2:36:52 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 07, 2023 2:49:21 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S1-CS2113-T17-1/tp.git (master)... -Oct 07, 2023 2:36:53 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 07, 2023 2:49:21 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S1-CS2113T-W11-2/tp.git (master)... +Oct 07, 2023 2:49:21 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S1-CS2113T-W11-2/tp.git (master)... +Oct 07, 2023 2:49:21 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S1-CS2113T-W11-2/tp.git (master) completed! +Oct 07, 2023 2:49:21 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S1-CS2113-T17-1/tp.git (master)... -Oct 07, 2023 2:36:53 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 07, 2023 2:49:21 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S1-CS2113-T17-1/tp.git (master)... -Oct 07, 2023 2:36:53 PM reposense.report.ReportGenerator analyzeRepo +Oct 07, 2023 2:49:21 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S1-CS2113-T17-1/tp.git (master) completed! -Oct 07, 2023 2:36:53 PM reposense.report.ReportGenerator generateReposReport +Oct 07, 2023 2:49:21 PM reposense.report.ReportGenerator generateReposReport INFO: The report is generated at /home/runner/work/tp-dashboard/tp-dashboard/reposense-report -Oct 07, 2023 2:36:53 PM reposense.RepoSense main -INFO: Elapsed processing time: 5.04 second(s) +Oct 07, 2023 2:49:21 PM reposense.RepoSense main +INFO: Elapsed processing time: 4.84 second(s) diff --git a/summary.json b/summary.json index c80b2df..0e75b43 100644 --- a/summary.json +++ b/summary.json @@ -1 +1 @@ -{"repoSenseVersion":"7bc056ab65","reportGeneratedTime":"Sat Oct 7 22:36:48 2023 UTC+08:00","reportGenerationTime":" 5.01 second(s)","zoneId":"UTC+08:00","reportTitle":"CS2113 tP Code Dashboard","repos":[{"location":{"location":"https://github.com/AY2324S1-CS2113T-W11-1/tp.git","repoName":"tp","organization":"AY2324S1-CS2113T-W11-1","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2113T-W11-1/tp[master]","outputFolderName":"AY2324S1-CS2113T-W11-1_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2113T-W11-2/tp.git","repoName":"tp","organization":"AY2324S1-CS2113T-W11-2","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2113T-W11-2/tp[master]","outputFolderName":"AY2324S1-CS2113T-W11-2_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2113-W12-1/tp.git","repoName":"tp","organization":"AY2324S1-CS2113-W12-1","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2113-W12-1/tp[master]","outputFolderName":"AY2324S1-CS2113-W12-1_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2113-W12-2/tp.git","repoName":"tp","organization":"AY2324S1-CS2113-W12-2","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2113-W12-2/tp[master]","outputFolderName":"AY2324S1-CS2113-W12-2_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2113-W12-3/tp.git","repoName":"tp","organization":"AY2324S1-CS2113-W12-3","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2113-W12-3/tp[master]","outputFolderName":"AY2324S1-CS2113-W12-3_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2113-W12-4/tp.git","repoName":"tp","organization":"AY2324S1-CS2113-W12-4","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2113-W12-4/tp[master]","outputFolderName":"AY2324S1-CS2113-W12-4_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2113-T17-1/tp.git","repoName":"tp","organization":"AY2324S1-CS2113-T17-1","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2113-T17-1/tp[master]","outputFolderName":"AY2324S1-CS2113-T17-1_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2113-T17-2/tp.git","repoName":"tp","organization":"AY2324S1-CS2113-T17-2","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2113-T17-2/tp[master]","outputFolderName":"AY2324S1-CS2113-T17-2_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2113-T17-3/tp.git","repoName":"tp","organization":"AY2324S1-CS2113-T17-3","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2113-T17-3/tp[master]","outputFolderName":"AY2324S1-CS2113-T17-3_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2113-T17-4/tp.git","repoName":"tp","organization":"AY2324S1-CS2113-T17-4","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2113-T17-4/tp[master]","outputFolderName":"AY2324S1-CS2113-T17-4_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2113-T18-1/tp.git","repoName":"tp","organization":"AY2324S1-CS2113-T18-1","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2113-T18-1/tp[master]","outputFolderName":"AY2324S1-CS2113-T18-1_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2113-T18-2/tp.git","repoName":"tp","organization":"AY2324S1-CS2113-T18-2","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2113-T18-2/tp[master]","outputFolderName":"AY2324S1-CS2113-T18-2_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2113-T18-3/tp.git","repoName":"tp","organization":"AY2324S1-CS2113-T18-3","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2113-T18-3/tp[master]","outputFolderName":"AY2324S1-CS2113-T18-3_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2113-T18-4/tp.git","repoName":"tp","organization":"AY2324S1-CS2113-T18-4","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2113-T18-4/tp[master]","outputFolderName":"AY2324S1-CS2113-T18-4_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2113-F11-1/tp.git","repoName":"tp","organization":"AY2324S1-CS2113-F11-1","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2113-F11-1/tp[master]","outputFolderName":"AY2324S1-CS2113-F11-1_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2113-F11-3/tp.git","repoName":"tp","organization":"AY2324S1-CS2113-F11-3","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2113-F11-3/tp[master]","outputFolderName":"AY2324S1-CS2113-F11-3_tp_master"}],"errorSet":[{"repoName":"AY2324S1-CS2113-F11-2/tp[master]","errorMessage":"Failed to clone from https://github.com/AY2324S1-CS2113-F11-2/tp.git"}],"sinceDate":"2023-09-22","untilDate":"2023-10-07","isSinceDateProvided":true,"isUntilDateProvided":false,"supportedDomainUrlMap":{"NOT_RECOGNIZED":{"BRANCH":"","REPO_URL":"UNSUPPORTED","BASE_URL":"UNSUPPORTED","HISTORY_PATH":"","COMMIT_PATH":"","BLAME_PATH":""},"github":{"BRANCH":"tree/$BRANCH","REPO_URL":"https://github.com/$ORGANIZATION/$REPO_NAME/","BASE_URL":"https://github.com/","HISTORY_PATH":"commits/$BRANCH/$FILE_PATH","COMMIT_PATH":"commit/$COMMIT_HASH","BLAME_PATH":"blame/$BRANCH/$FILE_PATH"}}} +{"repoSenseVersion":"7bc056ab65","reportGeneratedTime":"Sat Oct 7 22:49:16 2023 UTC+08:00","reportGenerationTime":" 4.80 second(s)","zoneId":"UTC+08:00","reportTitle":"CS2113 tP Code Dashboard","repos":[{"location":{"location":"https://github.com/AY2324S1-CS2113T-W11-1/tp.git","repoName":"tp","organization":"AY2324S1-CS2113T-W11-1","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2113T-W11-1/tp[master]","outputFolderName":"AY2324S1-CS2113T-W11-1_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2113T-W11-2/tp.git","repoName":"tp","organization":"AY2324S1-CS2113T-W11-2","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2113T-W11-2/tp[master]","outputFolderName":"AY2324S1-CS2113T-W11-2_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2113-W12-1/tp.git","repoName":"tp","organization":"AY2324S1-CS2113-W12-1","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2113-W12-1/tp[master]","outputFolderName":"AY2324S1-CS2113-W12-1_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2113-W12-2/tp.git","repoName":"tp","organization":"AY2324S1-CS2113-W12-2","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2113-W12-2/tp[master]","outputFolderName":"AY2324S1-CS2113-W12-2_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2113-W12-3/tp.git","repoName":"tp","organization":"AY2324S1-CS2113-W12-3","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2113-W12-3/tp[master]","outputFolderName":"AY2324S1-CS2113-W12-3_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2113-W12-4/tp.git","repoName":"tp","organization":"AY2324S1-CS2113-W12-4","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2113-W12-4/tp[master]","outputFolderName":"AY2324S1-CS2113-W12-4_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2113-T17-1/tp.git","repoName":"tp","organization":"AY2324S1-CS2113-T17-1","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2113-T17-1/tp[master]","outputFolderName":"AY2324S1-CS2113-T17-1_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2113-T17-2/tp.git","repoName":"tp","organization":"AY2324S1-CS2113-T17-2","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2113-T17-2/tp[master]","outputFolderName":"AY2324S1-CS2113-T17-2_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2113-T17-3/tp.git","repoName":"tp","organization":"AY2324S1-CS2113-T17-3","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2113-T17-3/tp[master]","outputFolderName":"AY2324S1-CS2113-T17-3_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2113-T17-4/tp.git","repoName":"tp","organization":"AY2324S1-CS2113-T17-4","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2113-T17-4/tp[master]","outputFolderName":"AY2324S1-CS2113-T17-4_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2113-T18-1/tp.git","repoName":"tp","organization":"AY2324S1-CS2113-T18-1","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2113-T18-1/tp[master]","outputFolderName":"AY2324S1-CS2113-T18-1_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2113-T18-2/tp.git","repoName":"tp","organization":"AY2324S1-CS2113-T18-2","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2113-T18-2/tp[master]","outputFolderName":"AY2324S1-CS2113-T18-2_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2113-T18-3/tp.git","repoName":"tp","organization":"AY2324S1-CS2113-T18-3","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2113-T18-3/tp[master]","outputFolderName":"AY2324S1-CS2113-T18-3_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2113-T18-4/tp.git","repoName":"tp","organization":"AY2324S1-CS2113-T18-4","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2113-T18-4/tp[master]","outputFolderName":"AY2324S1-CS2113-T18-4_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2113-F11-1/tp.git","repoName":"tp","organization":"AY2324S1-CS2113-F11-1","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2113-F11-1/tp[master]","outputFolderName":"AY2324S1-CS2113-F11-1_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2113-F11-3/tp.git","repoName":"tp","organization":"AY2324S1-CS2113-F11-3","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2113-F11-3/tp[master]","outputFolderName":"AY2324S1-CS2113-F11-3_tp_master"}],"errorSet":[{"repoName":"AY2324S1-CS2113-F11-2/tp[master]","errorMessage":"Failed to clone from https://github.com/AY2324S1-CS2113-F11-2/tp.git"}],"sinceDate":"2023-09-22","untilDate":"2023-10-07","isSinceDateProvided":true,"isUntilDateProvided":false,"supportedDomainUrlMap":{"NOT_RECOGNIZED":{"BRANCH":"","REPO_URL":"UNSUPPORTED","BASE_URL":"UNSUPPORTED","HISTORY_PATH":"","COMMIT_PATH":"","BLAME_PATH":""},"github":{"BRANCH":"tree/$BRANCH","REPO_URL":"https://github.com/$ORGANIZATION/$REPO_NAME/","BASE_URL":"https://github.com/","HISTORY_PATH":"commits/$BRANCH/$FILE_PATH","COMMIT_PATH":"commit/$COMMIT_HASH","BLAME_PATH":"blame/$BRANCH/$FILE_PATH"}}}