From 0d4945e102fe609948a69f413a3c81289d2cafbb Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Wed, 7 Feb 2024 03:11:42 +0000 Subject: [PATCH] Rebuild pages at 2b99b2fe27aa1c40877db5d8a3987d14f8552ed6 --- Lalelulilulela_ip_master/authorship.json | 2 +- Lalelulilulela_ip_master/commits.json | 2 +- RingoftheKing_ip_master/authorship.json | 2 +- RingoftheKing_ip_master/commits.json | 2 +- archive.zip | Bin 6178887 -> 6189920 bytes reposense-logs/reposense.log.0 | 12980 ++++++++++----------- smolegz_ip_master/authorship.json | 2 +- smolegz_ip_master/commits.json | 2 +- summary.json | 2 +- yuhinarita_ip_master/authorship.json | 2 +- yuhinarita_ip_master/commits.json | 2 +- 11 files changed, 6499 insertions(+), 6499 deletions(-) diff --git a/Lalelulilulela_ip_master/authorship.json b/Lalelulilulela_ip_master/authorship.json index 90f1efb5..40f7373c 100644 --- a/Lalelulilulela_ip_master/authorship.json +++ b/Lalelulilulela_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"README.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"Lalelulilulela"},"content":"# Lelu.Lelu project template","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"Lalelulilulela"},"content":"This is a project template for a greenfield Java project. It\u0027s named after the Java mascot _Lelu_. Given below are instructions on how to use it.","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"## Setting up in Intellij","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"Prerequisites: JDK 11, update Intellij to the most recent version.","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"1. Open Intellij (if you are not in the welcome screen, click `File` \u003e `Close Project` to close the existing project first)","lastModifiedDate":"2021-01-17"},{"lineNumber":10,"author":{"gitId":"-"},"content":"1. Open the project into Intellij as follows:","lastModifiedDate":"2021-01-17"},{"lineNumber":11,"author":{"gitId":"-"},"content":" 1. Click `Open`.","lastModifiedDate":"2021-01-17"},{"lineNumber":12,"author":{"gitId":"-"},"content":" 1. Select the project directory, and click `OK`.","lastModifiedDate":"2021-01-17"},{"lineNumber":13,"author":{"gitId":"-"},"content":" 1. If there are any further prompts, accept the defaults.","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"1. Configure the project to use **JDK 11** (not other versions) as explained in [here](https://www.jetbrains.com/help/idea/sdk.html#set-up-jdk).\u003cbr\u003e","lastModifiedDate":"2021-07-29"},{"lineNumber":15,"author":{"gitId":"-"},"content":" In the same dialog, set the **Project language level** field to the `SDK default` option.","lastModifiedDate":"2021-07-29"},{"lineNumber":16,"author":{"gitId":"Lalelulilulela"},"content":"3. After that, locate the `src/main/java/Lelu.Lelu.java` file, right-click it, and choose `Run Lelu.Lelu.main()` (if the code editor is showing compile errors, try restarting the IDE). If the setup is correct, you should see something like the below as the output:","lastModifiedDate":"2024-02-02"},{"lineNumber":17,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" Hello from","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" ____ _ ","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" | _ \\ _ _| | _____ ","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" | | | | | | | |/ / _ \\","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" | |_| | |_| | \u003c __/","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" |____/ \\__,_|_|\\_\\___|","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"Lalelulilulela":3,"-":21}},{"path":"build.gradle","fileType":"gradle","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"plugins {","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":" id \u0027java\u0027","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":" id \u0027application\u0027","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":" id \u0027com.github.johnrengelman.shadow\u0027 version \u00277.1.2\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"repositories {","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":" mavenCentral()","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"dependencies {","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":" testImplementation group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-api\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":" testRuntimeOnly group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-engine\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"Lalelulilulela"},"content":" mainClass.set(\"Lelu.Lelu\")","lastModifiedDate":"2024-02-04"},{"lineNumber":32,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"Lalelulilulela"},"content":" archiveBaseName \u003d \"lelu\"","lastModifiedDate":"2024-02-04"},{"lineNumber":36,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":"run{","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"Lalelulilulela":2,"-":40}},{"path":"data/lelu.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"Lalelulilulela"},"content":"T | 0 | sleep ","lastModifiedDate":"2024-02-04"},{"lineNumber":2,"author":{"gitId":"Lalelulilulela"},"content":"T | 0 | wake up ","lastModifiedDate":"2024-02-04"}],"authorContributionMap":{"Lalelulilulela":2}},{"path":"settings.gradle","fileType":"gradle","lines":[{"lineNumber":1,"author":{"gitId":"Lalelulilulela"},"content":"include \u0027src:test\u0027","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"Lalelulilulela"},"content":"findProject(\u0027:src:test\u0027)?.name \u003d \u0027test\u0027","lastModifiedDate":"2024-02-06"},{"lineNumber":3,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-02-06"}],"authorContributionMap":{"Lalelulilulela":3}},{"path":"src/main/java/Commands/AddDeadlineCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Lalelulilulela"},"content":"package Commands;","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"Lalelulilulela"},"content":"import Exceptions.LeluException;","lastModifiedDate":"2024-02-02"},{"lineNumber":4,"author":{"gitId":"Lalelulilulela"},"content":"import Tasks.Deadline;","lastModifiedDate":"2024-02-02"},{"lineNumber":5,"author":{"gitId":"Lalelulilulela"},"content":"import Tasks.Task;","lastModifiedDate":"2024-02-02"},{"lineNumber":6,"author":{"gitId":"Lalelulilulela"},"content":"import TasksStorage.Storage;","lastModifiedDate":"2024-02-02"},{"lineNumber":7,"author":{"gitId":"Lalelulilulela"},"content":"import TasksStorage.TaskList;","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"Lalelulilulela"},"content":"import Ui.Ui;","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":10,"author":{"gitId":"Lalelulilulela"},"content":"public class AddDeadlineCommand extends Command {","lastModifiedDate":"2024-02-02"},{"lineNumber":11,"author":{"gitId":"Lalelulilulela"},"content":" @Override","lastModifiedDate":"2024-02-02"},{"lineNumber":12,"author":{"gitId":"Lalelulilulela"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage, String message) throws LeluException {","lastModifiedDate":"2024-02-02"},{"lineNumber":13,"author":{"gitId":"Lalelulilulela"},"content":" Task t \u003d Deadline.DeadlineOf(message);","lastModifiedDate":"2024-02-02"},{"lineNumber":14,"author":{"gitId":"Lalelulilulela"},"content":" tasks.addTask(t);","lastModifiedDate":"2024-02-02"},{"lineNumber":15,"author":{"gitId":"Lalelulilulela"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":16,"author":{"gitId":"Lalelulilulela"},"content":"}","lastModifiedDate":"2024-02-02"}],"authorContributionMap":{"Lalelulilulela":16}},{"path":"src/main/java/Commands/AddEventCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Lalelulilulela"},"content":"package Commands;","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"Lalelulilulela"},"content":"import Exceptions.LeluException;","lastModifiedDate":"2024-02-02"},{"lineNumber":4,"author":{"gitId":"Lalelulilulela"},"content":"import Tasks.Event;","lastModifiedDate":"2024-02-02"},{"lineNumber":5,"author":{"gitId":"Lalelulilulela"},"content":"import Tasks.Task;","lastModifiedDate":"2024-02-02"},{"lineNumber":6,"author":{"gitId":"Lalelulilulela"},"content":"import TasksStorage.Storage;","lastModifiedDate":"2024-02-02"},{"lineNumber":7,"author":{"gitId":"Lalelulilulela"},"content":"import TasksStorage.TaskList;","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"Lalelulilulela"},"content":"import Ui.Ui;","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":10,"author":{"gitId":"Lalelulilulela"},"content":"public class AddEventCommand extends Command {","lastModifiedDate":"2024-02-02"},{"lineNumber":11,"author":{"gitId":"Lalelulilulela"},"content":" @Override","lastModifiedDate":"2024-02-02"},{"lineNumber":12,"author":{"gitId":"Lalelulilulela"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage, String message) throws LeluException {","lastModifiedDate":"2024-02-02"},{"lineNumber":13,"author":{"gitId":"Lalelulilulela"},"content":" Task t \u003d Event.EventOf(message);","lastModifiedDate":"2024-02-02"},{"lineNumber":14,"author":{"gitId":"Lalelulilulela"},"content":" tasks.addTask(t);","lastModifiedDate":"2024-02-02"},{"lineNumber":15,"author":{"gitId":"Lalelulilulela"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":16,"author":{"gitId":"Lalelulilulela"},"content":"}","lastModifiedDate":"2024-02-02"}],"authorContributionMap":{"Lalelulilulela":16}},{"path":"src/main/java/Commands/AddToDoCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Lalelulilulela"},"content":"package Commands;","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"Lalelulilulela"},"content":"import Exceptions.LeluException;","lastModifiedDate":"2024-02-02"},{"lineNumber":4,"author":{"gitId":"Lalelulilulela"},"content":"import Tasks.Task;","lastModifiedDate":"2024-02-02"},{"lineNumber":5,"author":{"gitId":"Lalelulilulela"},"content":"import Tasks.ToDo;","lastModifiedDate":"2024-02-02"},{"lineNumber":6,"author":{"gitId":"Lalelulilulela"},"content":"import TasksStorage.Storage;","lastModifiedDate":"2024-02-02"},{"lineNumber":7,"author":{"gitId":"Lalelulilulela"},"content":"import TasksStorage.TaskList;","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"Lalelulilulela"},"content":"import Ui.Ui;","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":10,"author":{"gitId":"Lalelulilulela"},"content":"public class AddToDoCommand extends Command {","lastModifiedDate":"2024-02-02"},{"lineNumber":11,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":12,"author":{"gitId":"Lalelulilulela"},"content":" @Override","lastModifiedDate":"2024-02-02"},{"lineNumber":13,"author":{"gitId":"Lalelulilulela"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage, String message) throws LeluException {","lastModifiedDate":"2024-02-02"},{"lineNumber":14,"author":{"gitId":"Lalelulilulela"},"content":" Task t \u003d ToDo.ToDoOf(message);","lastModifiedDate":"2024-02-02"},{"lineNumber":15,"author":{"gitId":"Lalelulilulela"},"content":" tasks.addTask(t);","lastModifiedDate":"2024-02-02"},{"lineNumber":16,"author":{"gitId":"Lalelulilulela"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":17,"author":{"gitId":"Lalelulilulela"},"content":"}","lastModifiedDate":"2024-02-02"}],"authorContributionMap":{"Lalelulilulela":17}},{"path":"src/main/java/Commands/ByeCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Lalelulilulela"},"content":"package Commands;","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"Lalelulilulela"},"content":"import Exceptions.LeluException;","lastModifiedDate":"2024-02-02"},{"lineNumber":4,"author":{"gitId":"Lalelulilulela"},"content":"import TasksStorage.Storage;","lastModifiedDate":"2024-02-02"},{"lineNumber":5,"author":{"gitId":"Lalelulilulela"},"content":"import TasksStorage.TaskList;","lastModifiedDate":"2024-02-02"},{"lineNumber":6,"author":{"gitId":"Lalelulilulela"},"content":"import Ui.Ui;","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"Lalelulilulela"},"content":"public class ByeCommand extends Command {","lastModifiedDate":"2024-02-02"},{"lineNumber":9,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":10,"author":{"gitId":"Lalelulilulela"},"content":" @Override","lastModifiedDate":"2024-02-02"},{"lineNumber":11,"author":{"gitId":"Lalelulilulela"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage, String message) throws LeluException {","lastModifiedDate":"2024-02-02"},{"lineNumber":12,"author":{"gitId":"Lalelulilulela"},"content":" ui.exit();","lastModifiedDate":"2024-02-02"},{"lineNumber":13,"author":{"gitId":"Lalelulilulela"},"content":" storage.save(tasks);","lastModifiedDate":"2024-02-02"},{"lineNumber":14,"author":{"gitId":"Lalelulilulela"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":15,"author":{"gitId":"Lalelulilulela"},"content":"}","lastModifiedDate":"2024-02-02"}],"authorContributionMap":{"Lalelulilulela":15}},{"path":"src/main/java/Commands/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Lalelulilulela"},"content":"package Commands;","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"Lalelulilulela"},"content":"import Exceptions.LeluException;","lastModifiedDate":"2024-02-02"},{"lineNumber":4,"author":{"gitId":"Lalelulilulela"},"content":"import TasksStorage.Storage;","lastModifiedDate":"2024-02-02"},{"lineNumber":5,"author":{"gitId":"Lalelulilulela"},"content":"import TasksStorage.TaskList;","lastModifiedDate":"2024-02-02"},{"lineNumber":6,"author":{"gitId":"Lalelulilulela"},"content":"import Ui.Ui;","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"Lalelulilulela"},"content":"public abstract class Command {","lastModifiedDate":"2024-02-02"},{"lineNumber":9,"author":{"gitId":"Lalelulilulela"},"content":" public abstract void execute(TaskList tasks, Ui ui, Storage storage, String message) throws LeluException;","lastModifiedDate":"2024-02-02"},{"lineNumber":10,"author":{"gitId":"Lalelulilulela"},"content":"}","lastModifiedDate":"2024-02-02"}],"authorContributionMap":{"Lalelulilulela":10}},{"path":"src/main/java/Commands/DeleteCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Lalelulilulela"},"content":"package Commands;","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"Lalelulilulela"},"content":"import Exceptions.LeluException;","lastModifiedDate":"2024-02-02"},{"lineNumber":4,"author":{"gitId":"Lalelulilulela"},"content":"import TasksStorage.Storage;","lastModifiedDate":"2024-02-02"},{"lineNumber":5,"author":{"gitId":"Lalelulilulela"},"content":"import TasksStorage.TaskList;","lastModifiedDate":"2024-02-02"},{"lineNumber":6,"author":{"gitId":"Lalelulilulela"},"content":"import Ui.Ui;","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":9,"author":{"gitId":"Lalelulilulela"},"content":"public class DeleteCommand extends Command {","lastModifiedDate":"2024-02-02"},{"lineNumber":10,"author":{"gitId":"Lalelulilulela"},"content":" @Override","lastModifiedDate":"2024-02-02"},{"lineNumber":11,"author":{"gitId":"Lalelulilulela"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage, String message) throws LeluException {","lastModifiedDate":"2024-02-02"},{"lineNumber":12,"author":{"gitId":"Lalelulilulela"},"content":" int i \u003d Integer.parseInt(message.split(\" \")[1]) - 1;","lastModifiedDate":"2024-02-02"},{"lineNumber":13,"author":{"gitId":"Lalelulilulela"},"content":" tasks.removeTask(i);","lastModifiedDate":"2024-02-02"},{"lineNumber":14,"author":{"gitId":"Lalelulilulela"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":15,"author":{"gitId":"Lalelulilulela"},"content":"}","lastModifiedDate":"2024-02-02"}],"authorContributionMap":{"Lalelulilulela":15}},{"path":"src/main/java/Commands/ListCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Lalelulilulela"},"content":"package Commands;","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"Lalelulilulela"},"content":"import Exceptions.LeluException;","lastModifiedDate":"2024-02-02"},{"lineNumber":4,"author":{"gitId":"Lalelulilulela"},"content":"import TasksStorage.Storage;","lastModifiedDate":"2024-02-02"},{"lineNumber":5,"author":{"gitId":"Lalelulilulela"},"content":"import TasksStorage.TaskList;","lastModifiedDate":"2024-02-02"},{"lineNumber":6,"author":{"gitId":"Lalelulilulela"},"content":"import Ui.Ui;","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"Lalelulilulela"},"content":"public class ListCommand extends Command {","lastModifiedDate":"2024-02-02"},{"lineNumber":9,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":10,"author":{"gitId":"Lalelulilulela"},"content":" @Override","lastModifiedDate":"2024-02-02"},{"lineNumber":11,"author":{"gitId":"Lalelulilulela"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage, String message) throws LeluException {","lastModifiedDate":"2024-02-02"},{"lineNumber":12,"author":{"gitId":"Lalelulilulela"},"content":" System.out.println(tasks.toString());","lastModifiedDate":"2024-02-02"},{"lineNumber":13,"author":{"gitId":"Lalelulilulela"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":14,"author":{"gitId":"Lalelulilulela"},"content":"}","lastModifiedDate":"2024-02-02"}],"authorContributionMap":{"Lalelulilulela":14}},{"path":"src/main/java/Commands/MarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Lalelulilulela"},"content":"package Commands;","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"Lalelulilulela"},"content":"import Exceptions.LeluException;","lastModifiedDate":"2024-02-02"},{"lineNumber":4,"author":{"gitId":"Lalelulilulela"},"content":"import TasksStorage.Storage;","lastModifiedDate":"2024-02-02"},{"lineNumber":5,"author":{"gitId":"Lalelulilulela"},"content":"import TasksStorage.TaskList;","lastModifiedDate":"2024-02-02"},{"lineNumber":6,"author":{"gitId":"Lalelulilulela"},"content":"import Ui.Ui;","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"Lalelulilulela"},"content":"public class MarkCommand extends Command {","lastModifiedDate":"2024-02-02"},{"lineNumber":9,"author":{"gitId":"Lalelulilulela"},"content":" @Override","lastModifiedDate":"2024-02-02"},{"lineNumber":10,"author":{"gitId":"Lalelulilulela"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage, String message) throws LeluException {","lastModifiedDate":"2024-02-02"},{"lineNumber":11,"author":{"gitId":"Lalelulilulela"},"content":" int i \u003d Integer.parseInt(message.split(\" \")[1]) - 1;","lastModifiedDate":"2024-02-02"},{"lineNumber":12,"author":{"gitId":"Lalelulilulela"},"content":" tasks.markTask(i);","lastModifiedDate":"2024-02-02"},{"lineNumber":13,"author":{"gitId":"Lalelulilulela"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":14,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":15,"author":{"gitId":"Lalelulilulela"},"content":"}","lastModifiedDate":"2024-02-02"}],"authorContributionMap":{"Lalelulilulela":15}},{"path":"src/main/java/Commands/UnmarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Lalelulilulela"},"content":"package Commands;","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"Lalelulilulela"},"content":"import Exceptions.LeluException;","lastModifiedDate":"2024-02-02"},{"lineNumber":4,"author":{"gitId":"Lalelulilulela"},"content":"import TasksStorage.Storage;","lastModifiedDate":"2024-02-02"},{"lineNumber":5,"author":{"gitId":"Lalelulilulela"},"content":"import TasksStorage.TaskList;","lastModifiedDate":"2024-02-02"},{"lineNumber":6,"author":{"gitId":"Lalelulilulela"},"content":"import Ui.Ui;","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"Lalelulilulela"},"content":"public class UnmarkCommand extends Command {","lastModifiedDate":"2024-02-02"},{"lineNumber":9,"author":{"gitId":"Lalelulilulela"},"content":" @Override","lastModifiedDate":"2024-02-02"},{"lineNumber":10,"author":{"gitId":"Lalelulilulela"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage, String message) throws LeluException {","lastModifiedDate":"2024-02-02"},{"lineNumber":11,"author":{"gitId":"Lalelulilulela"},"content":" int i \u003d Integer.parseInt(message.split(\" \")[1]) - 1;","lastModifiedDate":"2024-02-02"},{"lineNumber":12,"author":{"gitId":"Lalelulilulela"},"content":" tasks.unmarkTask(i);","lastModifiedDate":"2024-02-02"},{"lineNumber":13,"author":{"gitId":"Lalelulilulela"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":14,"author":{"gitId":"Lalelulilulela"},"content":"}","lastModifiedDate":"2024-02-02"}],"authorContributionMap":{"Lalelulilulela":14}},{"path":"src/main/java/Exceptions/InvalidFormatException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Lalelulilulela"},"content":"package Exceptions;","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"Lalelulilulela"},"content":"public class InvalidFormatException extends InvalidInputException {","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"Lalelulilulela"},"content":" public InvalidFormatException(String message) {","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"Lalelulilulela"},"content":" super(message);","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"Lalelulilulela"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"Lalelulilulela"},"content":" public static void callInvalidFormatException(ErrorType task) throws InvalidFormatException {","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"Lalelulilulela"},"content":" switch (task) {","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"Lalelulilulela"},"content":" case TODO:","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"Lalelulilulela"},"content":" throw new InvalidFormatException(\" To record your task, enter:\\n\" +","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"Lalelulilulela"},"content":" \" todo \u003ctask\u003e\");","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"Lalelulilulela"},"content":" case DEADLINE:","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"Lalelulilulela"},"content":" throw new InvalidFormatException(\" To set a deadline, enter:\\n\" +","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"Lalelulilulela"},"content":" \" deadline \u003ctask\u003e /by \u003cYYYY-MM-DD HH:mm\u003e\\n\");","lastModifiedDate":"2024-02-06"},{"lineNumber":15,"author":{"gitId":"Lalelulilulela"},"content":" case EVENT:","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"Lalelulilulela"},"content":" throw new InvalidFormatException(\" To record an event, enter:\\n\" +","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"Lalelulilulela"},"content":" \" event \u003cevent\u003e /from \u003cdate and time\u003e /to \u003cdate and time\u003e\\n\");","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"Lalelulilulela"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"Lalelulilulela"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"Lalelulilulela"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"Lalelulilulela":21}},{"path":"src/main/java/Exceptions/InvalidInputException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Lalelulilulela"},"content":"package Exceptions;","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"Lalelulilulela"},"content":"public class InvalidInputException extends LeluException{","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"Lalelulilulela"},"content":" public InvalidInputException(String message) {","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"Lalelulilulela"},"content":" super(message);","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"Lalelulilulela"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"Lalelulilulela"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"Lalelulilulela":7}},{"path":"src/main/java/Exceptions/LeluException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Lalelulilulela"},"content":"package Exceptions;","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"Lalelulilulela"},"content":"public class LeluException extends Exception {","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"Lalelulilulela"},"content":" public enum ErrorType {","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"Lalelulilulela"},"content":" TODO,","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"Lalelulilulela"},"content":" EVENT,","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"Lalelulilulela"},"content":" DEADLINE","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"Lalelulilulela"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"Lalelulilulela"},"content":" public LeluException(String message) {","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"Lalelulilulela"},"content":" super(message);","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"Lalelulilulela"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"Lalelulilulela"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"Lalelulilulela":12}},{"path":"src/main/java/Lelu/Lelu.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Lalelulilulela"},"content":"package Lelu;","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"Lalelulilulela"},"content":"import TasksStorage.Storage;","lastModifiedDate":"2024-02-02"},{"lineNumber":4,"author":{"gitId":"Lalelulilulela"},"content":"import TasksStorage.TaskList;","lastModifiedDate":"2024-02-02"},{"lineNumber":5,"author":{"gitId":"Lalelulilulela"},"content":"import Ui.Ui;","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"Lalelulilulela"},"content":"import Exceptions.*;","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"Lalelulilulela"},"content":"import Commands.ByeCommand;","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"Lalelulilulela"},"content":"import Commands.Command;","lastModifiedDate":"2024-02-02"},{"lineNumber":9,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"Lalelulilulela"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-02-01"},{"lineNumber":12,"author":{"gitId":"Lalelulilulela"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-21"},{"lineNumber":13,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":14,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":15,"author":{"gitId":"Lalelulilulela"},"content":"public class Lelu {","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":17,"author":{"gitId":"Lalelulilulela"},"content":" private static TaskList tasks;","lastModifiedDate":"2024-02-02"},{"lineNumber":18,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":19,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":20,"author":{"gitId":"Lalelulilulela"},"content":" private Lelu(String filePath) {","lastModifiedDate":"2024-02-02"},{"lineNumber":21,"author":{"gitId":"Lalelulilulela"},"content":" Ui ui \u003d new Ui();","lastModifiedDate":"2024-02-02"},{"lineNumber":22,"author":{"gitId":"Lalelulilulela"},"content":" ui.greet();","lastModifiedDate":"2024-02-01"},{"lineNumber":23,"author":{"gitId":"Lalelulilulela"},"content":" Lelu.tasks \u003d new TaskList();","lastModifiedDate":"2024-02-02"},{"lineNumber":24,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":25,"author":{"gitId":"Lalelulilulela"},"content":" Storage store \u003d new Storage(filePath);","lastModifiedDate":"2024-02-01"},{"lineNumber":26,"author":{"gitId":"Lalelulilulela"},"content":" while (true) {","lastModifiedDate":"2024-02-01"},{"lineNumber":27,"author":{"gitId":"Lalelulilulela"},"content":" try {","lastModifiedDate":"2024-02-01"},{"lineNumber":28,"author":{"gitId":"Lalelulilulela"},"content":" store.load(Lelu.tasks);","lastModifiedDate":"2024-02-01"},{"lineNumber":29,"author":{"gitId":"Lalelulilulela"},"content":" this.listen(ui, store);","lastModifiedDate":"2024-02-02"},{"lineNumber":30,"author":{"gitId":"Lalelulilulela"},"content":" store.save(Lelu.tasks);","lastModifiedDate":"2024-02-01"},{"lineNumber":31,"author":{"gitId":"Lalelulilulela"},"content":" break;","lastModifiedDate":"2024-02-01"},{"lineNumber":32,"author":{"gitId":"Lalelulilulela"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-02-01"},{"lineNumber":33,"author":{"gitId":"Lalelulilulela"},"content":" ui.dateFormatInstructions();","lastModifiedDate":"2024-02-01"},{"lineNumber":34,"author":{"gitId":"Lalelulilulela"},"content":" } catch (LeluException e) {","lastModifiedDate":"2024-02-01"},{"lineNumber":35,"author":{"gitId":"Lalelulilulela"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-02-01"},{"lineNumber":36,"author":{"gitId":"Lalelulilulela"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":37,"author":{"gitId":"Lalelulilulela"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":38,"author":{"gitId":"Lalelulilulela"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":39,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":40,"author":{"gitId":"Lalelulilulela"},"content":" public void listen(Ui ui, Storage store) throws LeluException {","lastModifiedDate":"2024-02-02"},{"lineNumber":41,"author":{"gitId":"Lalelulilulela"},"content":" Scanner sc \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-22"},{"lineNumber":42,"author":{"gitId":"Lalelulilulela"},"content":" while (true) {","lastModifiedDate":"2024-01-22"},{"lineNumber":43,"author":{"gitId":"Lalelulilulela"},"content":" String message \u003d sc.nextLine();","lastModifiedDate":"2024-02-02"},{"lineNumber":44,"author":{"gitId":"Lalelulilulela"},"content":" Command command \u003d Parser.parse(message, ui);","lastModifiedDate":"2024-02-02"},{"lineNumber":45,"author":{"gitId":"Lalelulilulela"},"content":" command.execute(tasks, ui, store, message);","lastModifiedDate":"2024-02-02"},{"lineNumber":46,"author":{"gitId":"Lalelulilulela"},"content":" if (command instanceof ByeCommand) {","lastModifiedDate":"2024-02-02"},{"lineNumber":47,"author":{"gitId":"Lalelulilulela"},"content":" break;","lastModifiedDate":"2024-01-22"},{"lineNumber":48,"author":{"gitId":"Lalelulilulela"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":49,"author":{"gitId":"Lalelulilulela"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":50,"author":{"gitId":"Lalelulilulela"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":51,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":52,"author":{"gitId":"Lalelulilulela"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-01-24"},{"lineNumber":53,"author":{"gitId":"Lalelulilulela"},"content":" new Lelu(\"./data/lelu.txt\");","lastModifiedDate":"2024-02-01"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":55,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":56,"author":{"gitId":"Lalelulilulela"},"content":"}","lastModifiedDate":"2024-01-24"},{"lineNumber":57,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"Lalelulilulela":56,"-":1}},{"path":"src/main/java/Lelu/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Lalelulilulela"},"content":"package Lelu;","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"Lalelulilulela"},"content":"import Exceptions.InvalidInputException;","lastModifiedDate":"2024-02-02"},{"lineNumber":4,"author":{"gitId":"Lalelulilulela"},"content":"import Exceptions.LeluException;","lastModifiedDate":"2024-02-02"},{"lineNumber":5,"author":{"gitId":"Lalelulilulela"},"content":"import Ui.Ui;","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"Lalelulilulela"},"content":"import Commands.*;","lastModifiedDate":"2024-02-02"},{"lineNumber":7,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"Lalelulilulela"},"content":"public class Parser {","lastModifiedDate":"2024-02-02"},{"lineNumber":9,"author":{"gitId":"Lalelulilulela"},"content":" public static Command parse(String message, Ui ui) throws LeluException {","lastModifiedDate":"2024-02-02"},{"lineNumber":10,"author":{"gitId":"Lalelulilulela"},"content":" if (message.equals(\"bye\")) {","lastModifiedDate":"2024-02-02"},{"lineNumber":11,"author":{"gitId":"Lalelulilulela"},"content":" return new ByeCommand();","lastModifiedDate":"2024-02-02"},{"lineNumber":12,"author":{"gitId":"Lalelulilulela"},"content":" } else if (message.equals(\"list\")) {","lastModifiedDate":"2024-02-02"},{"lineNumber":13,"author":{"gitId":"Lalelulilulela"},"content":" return new ListCommand();","lastModifiedDate":"2024-02-02"},{"lineNumber":14,"author":{"gitId":"Lalelulilulela"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":15,"author":{"gitId":"Lalelulilulela"},"content":" switch (message.split(\" \")[0]) {","lastModifiedDate":"2024-02-02"},{"lineNumber":16,"author":{"gitId":"Lalelulilulela"},"content":" case \"mark\":","lastModifiedDate":"2024-02-02"},{"lineNumber":17,"author":{"gitId":"Lalelulilulela"},"content":" return new MarkCommand();","lastModifiedDate":"2024-02-02"},{"lineNumber":18,"author":{"gitId":"Lalelulilulela"},"content":" case \"unmark\":","lastModifiedDate":"2024-02-02"},{"lineNumber":19,"author":{"gitId":"Lalelulilulela"},"content":" return new UnmarkCommand();","lastModifiedDate":"2024-02-02"},{"lineNumber":20,"author":{"gitId":"Lalelulilulela"},"content":" case \"delete\":","lastModifiedDate":"2024-02-02"},{"lineNumber":21,"author":{"gitId":"Lalelulilulela"},"content":" return new DeleteCommand();","lastModifiedDate":"2024-02-02"},{"lineNumber":22,"author":{"gitId":"Lalelulilulela"},"content":" case \"todo\":","lastModifiedDate":"2024-02-02"},{"lineNumber":23,"author":{"gitId":"Lalelulilulela"},"content":" return new AddToDoCommand();","lastModifiedDate":"2024-02-02"},{"lineNumber":24,"author":{"gitId":"Lalelulilulela"},"content":" case \"deadline\":","lastModifiedDate":"2024-02-02"},{"lineNumber":25,"author":{"gitId":"Lalelulilulela"},"content":" return new AddDeadlineCommand();","lastModifiedDate":"2024-02-02"},{"lineNumber":26,"author":{"gitId":"Lalelulilulela"},"content":" case \"event\":","lastModifiedDate":"2024-02-02"},{"lineNumber":27,"author":{"gitId":"Lalelulilulela"},"content":" return new AddEventCommand();","lastModifiedDate":"2024-02-02"},{"lineNumber":28,"author":{"gitId":"Lalelulilulela"},"content":" default:","lastModifiedDate":"2024-02-02"},{"lineNumber":29,"author":{"gitId":"Lalelulilulela"},"content":" throw new InvalidInputException(ui.showInstructions());","lastModifiedDate":"2024-02-02"},{"lineNumber":30,"author":{"gitId":"Lalelulilulela"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":31,"author":{"gitId":"Lalelulilulela"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":32,"author":{"gitId":"Lalelulilulela"},"content":"}","lastModifiedDate":"2024-02-02"}],"authorContributionMap":{"Lalelulilulela":32}},{"path":"src/main/java/Tasks/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Lalelulilulela"},"content":"package Tasks;","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"Lalelulilulela"},"content":"import Exceptions.InvalidFormatException;","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"Lalelulilulela"},"content":"import Exceptions.InvalidInputException;","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"Lalelulilulela"},"content":"import Exceptions.LeluException;","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"Lalelulilulela"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-02-01"},{"lineNumber":8,"author":{"gitId":"Lalelulilulela"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-02-01"},{"lineNumber":9,"author":{"gitId":"Lalelulilulela"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-02-01"},{"lineNumber":10,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":11,"author":{"gitId":"Lalelulilulela"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"Lalelulilulela"},"content":" protected LocalDateTime deadline;","lastModifiedDate":"2024-02-01"},{"lineNumber":13,"author":{"gitId":"Lalelulilulela"},"content":" private DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd HH:mm\");","lastModifiedDate":"2024-02-01"},{"lineNumber":14,"author":{"gitId":"Lalelulilulela"},"content":" public Deadline(String taskName, String deadline) throws DateTimeParseException {","lastModifiedDate":"2024-02-01"},{"lineNumber":15,"author":{"gitId":"Lalelulilulela"},"content":" super(taskName);","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"Lalelulilulela"},"content":" this.deadline \u003d LocalDateTime.parse(deadline, formatter);","lastModifiedDate":"2024-02-01"},{"lineNumber":17,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":18,"author":{"gitId":"Lalelulilulela"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"Lalelulilulela"},"content":" public static Deadline DeadlineOf(String input) throws InvalidInputException {","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"Lalelulilulela"},"content":" if (input.replaceAll(\" \", \"\").equals(\"deadline\")) {","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"Lalelulilulela"},"content":" InvalidFormatException.callInvalidFormatException(LeluException.ErrorType.DEADLINE);","lastModifiedDate":"2024-01-24"},{"lineNumber":23,"author":{"gitId":"Lalelulilulela"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"Lalelulilulela"},"content":" String[] t \u003d input.replaceFirst(\"deadline \", \"\").split(\"/by \");","lastModifiedDate":"2024-01-24"},{"lineNumber":25,"author":{"gitId":"Lalelulilulela"},"content":" if (t.length \u003c 2) {","lastModifiedDate":"2024-01-24"},{"lineNumber":26,"author":{"gitId":"Lalelulilulela"},"content":" InvalidFormatException.callInvalidFormatException(LeluException.ErrorType.DEADLINE);","lastModifiedDate":"2024-01-24"},{"lineNumber":27,"author":{"gitId":"Lalelulilulela"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":28,"author":{"gitId":"Lalelulilulela"},"content":" return new Deadline(t[0].replaceAll(\"\\\\s+$\", \"\"), t[1]);","lastModifiedDate":"2024-02-06"},{"lineNumber":29,"author":{"gitId":"Lalelulilulela"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":30,"author":{"gitId":"Lalelulilulela"},"content":" @Override","lastModifiedDate":"2024-01-31"},{"lineNumber":31,"author":{"gitId":"Lalelulilulela"},"content":" public String saveFormat() {","lastModifiedDate":"2024-01-31"},{"lineNumber":32,"author":{"gitId":"Lalelulilulela"},"content":" int check \u003d this.completed ? 1 : 0;","lastModifiedDate":"2024-01-31"},{"lineNumber":33,"author":{"gitId":"Lalelulilulela"},"content":" return String.format(\"D | %d | %s | %s\\n\", check, this.taskName,","lastModifiedDate":"2024-02-01"},{"lineNumber":34,"author":{"gitId":"Lalelulilulela"},"content":" this.deadline.format(formatter));","lastModifiedDate":"2024-02-01"},{"lineNumber":35,"author":{"gitId":"Lalelulilulela"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":36,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":37,"author":{"gitId":"Lalelulilulela"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":38,"author":{"gitId":"Lalelulilulela"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":39,"author":{"gitId":"Lalelulilulela"},"content":" return String.format(\"[D]%s (by: %s)\", super.toString(),","lastModifiedDate":"2024-02-01"},{"lineNumber":40,"author":{"gitId":"Lalelulilulela"},"content":" this.deadline.format(DateTimeFormatter.ofPattern(\"d MMM yyyy hh:mma\")));","lastModifiedDate":"2024-02-01"},{"lineNumber":41,"author":{"gitId":"Lalelulilulela"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":42,"author":{"gitId":"Lalelulilulela"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"Lalelulilulela":42}},{"path":"src/main/java/Tasks/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Lalelulilulela"},"content":"package Tasks;","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"Lalelulilulela"},"content":"import Exceptions.InvalidFormatException;","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"Lalelulilulela"},"content":"import Exceptions.LeluException;","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"Lalelulilulela"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"Lalelulilulela"},"content":" protected String from;","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"Lalelulilulela"},"content":" protected String to;","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"Lalelulilulela"},"content":" public Event(String taskName, String from, String to) {","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"Lalelulilulela"},"content":" super(taskName);","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"Lalelulilulela"},"content":" this.from \u003d from;","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"Lalelulilulela"},"content":" this.to \u003d to;","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"Lalelulilulela"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"Lalelulilulela"},"content":" public static Event EventOf(String input) throws InvalidFormatException {","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"Lalelulilulela"},"content":" if (input.replaceAll(\" \", \"\").equals(\"event\")) {","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"Lalelulilulela"},"content":" InvalidFormatException.callInvalidFormatException(LeluException.ErrorType.EVENT);","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"Lalelulilulela"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"Lalelulilulela"},"content":" String[] t \u003d input.replaceFirst(\"event \", \"\").split(\"/from \");","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"Lalelulilulela"},"content":" if (t.length \u003c 2) {","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"Lalelulilulela"},"content":" InvalidFormatException.callInvalidFormatException(LeluException.ErrorType.EVENT);","lastModifiedDate":"2024-01-24"},{"lineNumber":23,"author":{"gitId":"Lalelulilulela"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"Lalelulilulela"},"content":" String[] frTo \u003d t[1].split(\"/to \");","lastModifiedDate":"2024-01-24"},{"lineNumber":25,"author":{"gitId":"Lalelulilulela"},"content":" if (frTo.length \u003c 2) {","lastModifiedDate":"2024-01-24"},{"lineNumber":26,"author":{"gitId":"Lalelulilulela"},"content":" InvalidFormatException.callInvalidFormatException(LeluException.ErrorType.EVENT);","lastModifiedDate":"2024-01-24"},{"lineNumber":27,"author":{"gitId":"Lalelulilulela"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":28,"author":{"gitId":"Lalelulilulela"},"content":" return new Event(t[0], frTo[0], frTo[1]);","lastModifiedDate":"2024-01-24"},{"lineNumber":29,"author":{"gitId":"Lalelulilulela"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":30,"author":{"gitId":"Lalelulilulela"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":31,"author":{"gitId":"Lalelulilulela"},"content":" public String saveFormat() {","lastModifiedDate":"2024-01-31"},{"lineNumber":32,"author":{"gitId":"Lalelulilulela"},"content":" int check \u003d this.completed ? 1 : 0;","lastModifiedDate":"2024-01-31"},{"lineNumber":33,"author":{"gitId":"Lalelulilulela"},"content":" return String.format(\"E | %d | %s | %s | %s\\n\", check, this.taskName, this.from, this.to);","lastModifiedDate":"2024-01-31"},{"lineNumber":34,"author":{"gitId":"Lalelulilulela"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":35,"author":{"gitId":"Lalelulilulela"},"content":" @Override","lastModifiedDate":"2024-01-31"},{"lineNumber":36,"author":{"gitId":"Lalelulilulela"},"content":" public String toString () {","lastModifiedDate":"2024-01-24"},{"lineNumber":37,"author":{"gitId":"Lalelulilulela"},"content":" return String.format(\"[E]%s (From: %s To: %s)\", super.toString(), this.from, this.to);","lastModifiedDate":"2024-01-24"},{"lineNumber":38,"author":{"gitId":"Lalelulilulela"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":39,"author":{"gitId":"Lalelulilulela"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"Lalelulilulela":39}},{"path":"src/main/java/Tasks/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Lalelulilulela"},"content":"package Tasks;","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"Lalelulilulela"},"content":"public abstract class Task {","lastModifiedDate":"2024-01-31"},{"lineNumber":4,"author":{"gitId":"Lalelulilulela"},"content":" protected String taskName;","lastModifiedDate":"2024-01-31"},{"lineNumber":5,"author":{"gitId":"Lalelulilulela"},"content":" protected boolean completed;","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"Lalelulilulela"},"content":" public Task(String task) {","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"Lalelulilulela"},"content":" this.taskName \u003d task;","lastModifiedDate":"2024-01-31"},{"lineNumber":9,"author":{"gitId":"Lalelulilulela"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"Lalelulilulela"},"content":" public void markTask() {","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"Lalelulilulela"},"content":" this.completed \u003d true;","lastModifiedDate":"2024-01-22"},{"lineNumber":13,"author":{"gitId":"Lalelulilulela"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":14,"author":{"gitId":"Lalelulilulela"},"content":" public void unmarkTask() {","lastModifiedDate":"2024-01-22"},{"lineNumber":15,"author":{"gitId":"Lalelulilulela"},"content":" this.completed \u003d false;","lastModifiedDate":"2024-01-22"},{"lineNumber":16,"author":{"gitId":"Lalelulilulela"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":17,"author":{"gitId":"Lalelulilulela"},"content":" public abstract String saveFormat();","lastModifiedDate":"2024-01-31"},{"lineNumber":18,"author":{"gitId":"Lalelulilulela"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":19,"author":{"gitId":"Lalelulilulela"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":20,"author":{"gitId":"Lalelulilulela"},"content":" String check \u003d completed ? \"[X]\" : \"[ ]\";","lastModifiedDate":"2024-01-22"},{"lineNumber":21,"author":{"gitId":"Lalelulilulela"},"content":" return check + \" \" + this.taskName;","lastModifiedDate":"2024-01-31"},{"lineNumber":22,"author":{"gitId":"Lalelulilulela"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":23,"author":{"gitId":"Lalelulilulela"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"Lalelulilulela":23}},{"path":"src/main/java/Tasks/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Lalelulilulela"},"content":"package Tasks;","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"Lalelulilulela"},"content":"import Exceptions.InvalidFormatException;","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"Lalelulilulela"},"content":"import Exceptions.LeluException;","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"Lalelulilulela"},"content":"public class ToDo extends Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"Lalelulilulela"},"content":" public ToDo(String taskName) {","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"Lalelulilulela"},"content":" super(taskName);","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"Lalelulilulela"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"Lalelulilulela"},"content":" public static ToDo ToDoOf(String input) throws InvalidFormatException {","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"Lalelulilulela"},"content":" if (input.replaceAll(\" \", \"\").equals(\"todo\")) {","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"Lalelulilulela"},"content":" InvalidFormatException.callInvalidFormatException(LeluException.ErrorType.TODO);","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"Lalelulilulela"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"Lalelulilulela"},"content":" String t \u003d input.replaceFirst(\"todo \", \"\");","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"Lalelulilulela"},"content":" return new ToDo(t);","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"Lalelulilulela"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"Lalelulilulela"},"content":" public String saveFormat() {","lastModifiedDate":"2024-01-31"},{"lineNumber":19,"author":{"gitId":"Lalelulilulela"},"content":" int check \u003d this.completed ? 1 : 0;","lastModifiedDate":"2024-01-31"},{"lineNumber":20,"author":{"gitId":"Lalelulilulela"},"content":" return String.format(\"T | %d | %s \\n\", check, this.taskName);","lastModifiedDate":"2024-01-31"},{"lineNumber":21,"author":{"gitId":"Lalelulilulela"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":22,"author":{"gitId":"Lalelulilulela"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":23,"author":{"gitId":"Lalelulilulela"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"Lalelulilulela"},"content":" return String.format(\"[T]%s\", super.toString());","lastModifiedDate":"2024-01-24"},{"lineNumber":25,"author":{"gitId":"Lalelulilulela"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":26,"author":{"gitId":"Lalelulilulela"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"Lalelulilulela":26}},{"path":"src/main/java/TasksStorage/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Lalelulilulela"},"content":"package TasksStorage;","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"Lalelulilulela"},"content":"import Tasks.Deadline;","lastModifiedDate":"2024-01-31"},{"lineNumber":4,"author":{"gitId":"Lalelulilulela"},"content":"import Tasks.Event;","lastModifiedDate":"2024-01-31"},{"lineNumber":5,"author":{"gitId":"Lalelulilulela"},"content":"import Tasks.Task;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"Lalelulilulela"},"content":"import Tasks.ToDo;","lastModifiedDate":"2024-01-31"},{"lineNumber":7,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"Lalelulilulela"},"content":"import java.io.File;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"Lalelulilulela"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"Lalelulilulela"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"Lalelulilulela"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"Lalelulilulela"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"Lalelulilulela"},"content":"public class Storage {","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"Lalelulilulela"},"content":" private File file;","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"Lalelulilulela"},"content":" public Storage(String filePath) {","lastModifiedDate":"2024-02-02"},{"lineNumber":17,"author":{"gitId":"Lalelulilulela"},"content":" this.file \u003d new File(filePath);","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"Lalelulilulela"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"Lalelulilulela"},"content":" if (!file.exists()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"Lalelulilulela"},"content":" file.getParentFile().mkdirs();","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"Lalelulilulela"},"content":" file.createNewFile();","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"Lalelulilulela"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"Lalelulilulela"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"Lalelulilulela"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"Lalelulilulela"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"Lalelulilulela"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"Lalelulilulela"},"content":" public void save(TaskList tasks) {","lastModifiedDate":"2024-02-02"},{"lineNumber":29,"author":{"gitId":"Lalelulilulela"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"Lalelulilulela"},"content":" tasks.writeToFile(this.file);","lastModifiedDate":"2024-02-02"},{"lineNumber":31,"author":{"gitId":"Lalelulilulela"},"content":" } catch (IOException ioException) {","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"Lalelulilulela"},"content":" System.out.println(ioException.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"Lalelulilulela"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"Lalelulilulela"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"Lalelulilulela"},"content":" public void load(TaskList tasks) {","lastModifiedDate":"2024-02-02"},{"lineNumber":37,"author":{"gitId":"Lalelulilulela"},"content":" try {","lastModifiedDate":"2024-01-31"},{"lineNumber":38,"author":{"gitId":"Lalelulilulela"},"content":" Scanner sc \u003d new Scanner(this.file);","lastModifiedDate":"2024-01-31"},{"lineNumber":39,"author":{"gitId":"Lalelulilulela"},"content":" while(sc.hasNext()) {","lastModifiedDate":"2024-01-31"},{"lineNumber":40,"author":{"gitId":"Lalelulilulela"},"content":" String s \u003d sc.nextLine();","lastModifiedDate":"2024-01-31"},{"lineNumber":41,"author":{"gitId":"Lalelulilulela"},"content":" String[] task \u003d s.split(\" \\\\| \");","lastModifiedDate":"2024-01-31"},{"lineNumber":42,"author":{"gitId":"Lalelulilulela"},"content":" Task t;","lastModifiedDate":"2024-02-02"},{"lineNumber":43,"author":{"gitId":"Lalelulilulela"},"content":" switch(task[0]) {","lastModifiedDate":"2024-01-31"},{"lineNumber":44,"author":{"gitId":"Lalelulilulela"},"content":" case \"T\":","lastModifiedDate":"2024-01-31"},{"lineNumber":45,"author":{"gitId":"Lalelulilulela"},"content":" t \u003d new ToDo(task[2]);","lastModifiedDate":"2024-01-31"},{"lineNumber":46,"author":{"gitId":"Lalelulilulela"},"content":" break;","lastModifiedDate":"2024-01-31"},{"lineNumber":47,"author":{"gitId":"Lalelulilulela"},"content":" case \"D\":","lastModifiedDate":"2024-01-31"},{"lineNumber":48,"author":{"gitId":"Lalelulilulela"},"content":" t \u003d new Deadline(task[2], task[3]);","lastModifiedDate":"2024-01-31"},{"lineNumber":49,"author":{"gitId":"Lalelulilulela"},"content":" break;","lastModifiedDate":"2024-01-31"},{"lineNumber":50,"author":{"gitId":"Lalelulilulela"},"content":" default:","lastModifiedDate":"2024-01-31"},{"lineNumber":51,"author":{"gitId":"Lalelulilulela"},"content":" t \u003d new Event(task[2], task[3], task[4]);","lastModifiedDate":"2024-01-31"},{"lineNumber":52,"author":{"gitId":"Lalelulilulela"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":53,"author":{"gitId":"Lalelulilulela"},"content":" if (task[1].equals(\"1\")) {","lastModifiedDate":"2024-01-31"},{"lineNumber":54,"author":{"gitId":"Lalelulilulela"},"content":" t.markTask();","lastModifiedDate":"2024-01-31"},{"lineNumber":55,"author":{"gitId":"Lalelulilulela"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":56,"author":{"gitId":"Lalelulilulela"},"content":" tasks.loadTask(t);","lastModifiedDate":"2024-02-04"},{"lineNumber":57,"author":{"gitId":"Lalelulilulela"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":58,"author":{"gitId":"Lalelulilulela"},"content":" FileWriter fw \u003d new FileWriter(this.file);","lastModifiedDate":"2024-01-31"},{"lineNumber":59,"author":{"gitId":"Lalelulilulela"},"content":" fw.close();","lastModifiedDate":"2024-01-31"},{"lineNumber":60,"author":{"gitId":"Lalelulilulela"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-31"},{"lineNumber":61,"author":{"gitId":"Lalelulilulela"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-31"},{"lineNumber":62,"author":{"gitId":"Lalelulilulela"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":63,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":64,"author":{"gitId":"Lalelulilulela"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":65,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":66,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":67,"author":{"gitId":"Lalelulilulela"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":68,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":69,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"Lalelulilulela":69}},{"path":"src/main/java/TasksStorage/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Lalelulilulela"},"content":"package TasksStorage;","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"Lalelulilulela"},"content":"import Tasks.Task;","lastModifiedDate":"2024-02-02"},{"lineNumber":4,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":5,"author":{"gitId":"Lalelulilulela"},"content":"import java.io.File;","lastModifiedDate":"2024-02-02"},{"lineNumber":6,"author":{"gitId":"Lalelulilulela"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-02-02"},{"lineNumber":7,"author":{"gitId":"Lalelulilulela"},"content":"import java.io.IOException;","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"Lalelulilulela"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-02-02"},{"lineNumber":9,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":10,"author":{"gitId":"Lalelulilulela"},"content":"public class TaskList {","lastModifiedDate":"2024-02-02"},{"lineNumber":11,"author":{"gitId":"Lalelulilulela"},"content":" private ArrayList\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-02-02"},{"lineNumber":12,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":13,"author":{"gitId":"Lalelulilulela"},"content":" public void addTask(Task t) {","lastModifiedDate":"2024-02-02"},{"lineNumber":14,"author":{"gitId":"Lalelulilulela"},"content":" this.tasks.add(t);","lastModifiedDate":"2024-02-02"},{"lineNumber":15,"author":{"gitId":"Lalelulilulela"},"content":" System.out.printf(\" Ok! I have added your task:\\n %s\\n You have %d task(s) in the \" +","lastModifiedDate":"2024-02-02"},{"lineNumber":16,"author":{"gitId":"Lalelulilulela"},"content":" \"list now.\\n\\n\", t.toString(), this.tasks.size());","lastModifiedDate":"2024-02-02"},{"lineNumber":17,"author":{"gitId":"Lalelulilulela"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":18,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":19,"author":{"gitId":"Lalelulilulela"},"content":" public void loadTask(Task t) {","lastModifiedDate":"2024-02-04"},{"lineNumber":20,"author":{"gitId":"Lalelulilulela"},"content":" this.tasks.add(t);","lastModifiedDate":"2024-02-04"},{"lineNumber":21,"author":{"gitId":"Lalelulilulela"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":22,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":23,"author":{"gitId":"Lalelulilulela"},"content":" public void removeTask(int i) {","lastModifiedDate":"2024-02-02"},{"lineNumber":24,"author":{"gitId":"Lalelulilulela"},"content":" Task t \u003d this.tasks.get(i);","lastModifiedDate":"2024-02-02"},{"lineNumber":25,"author":{"gitId":"Lalelulilulela"},"content":" this.tasks.remove(i);","lastModifiedDate":"2024-02-02"},{"lineNumber":26,"author":{"gitId":"Lalelulilulela"},"content":" System.out.printf(\" Ok, I have removed your task:\\n %s\\n You have %d task(s) in the \" +","lastModifiedDate":"2024-02-02"},{"lineNumber":27,"author":{"gitId":"Lalelulilulela"},"content":" \"list now.\\n\\n\", t.toString(), this.tasks.size());","lastModifiedDate":"2024-02-02"},{"lineNumber":28,"author":{"gitId":"Lalelulilulela"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":29,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":30,"author":{"gitId":"Lalelulilulela"},"content":" public void markTask(int i) {","lastModifiedDate":"2024-02-02"},{"lineNumber":31,"author":{"gitId":"Lalelulilulela"},"content":" this.tasks.get(i).markTask();","lastModifiedDate":"2024-02-02"},{"lineNumber":32,"author":{"gitId":"Lalelulilulela"},"content":" System.out.printf(\" Great job completing your task!\\n %s\\n\\n\",","lastModifiedDate":"2024-02-02"},{"lineNumber":33,"author":{"gitId":"Lalelulilulela"},"content":" this.tasks.get(i).toString());","lastModifiedDate":"2024-02-02"},{"lineNumber":34,"author":{"gitId":"Lalelulilulela"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":35,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":36,"author":{"gitId":"Lalelulilulela"},"content":" public void unmarkTask(int i) {","lastModifiedDate":"2024-02-02"},{"lineNumber":37,"author":{"gitId":"Lalelulilulela"},"content":" this.tasks.get(i).unmarkTask();","lastModifiedDate":"2024-02-02"},{"lineNumber":38,"author":{"gitId":"Lalelulilulela"},"content":" System.out.printf(\" Don\u0027t forget to complete your task soon...\\n %s\\n\\n\",","lastModifiedDate":"2024-02-02"},{"lineNumber":39,"author":{"gitId":"Lalelulilulela"},"content":" this.tasks.get(i).toString());","lastModifiedDate":"2024-02-02"},{"lineNumber":40,"author":{"gitId":"Lalelulilulela"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":41,"author":{"gitId":"Lalelulilulela"},"content":" public void writeToFile(File file) throws IOException {","lastModifiedDate":"2024-02-02"},{"lineNumber":42,"author":{"gitId":"Lalelulilulela"},"content":" FileWriter fw \u003d new FileWriter(file);","lastModifiedDate":"2024-02-02"},{"lineNumber":43,"author":{"gitId":"Lalelulilulela"},"content":" for (Task task : this.tasks) {","lastModifiedDate":"2024-02-02"},{"lineNumber":44,"author":{"gitId":"Lalelulilulela"},"content":" fw.write(task.saveFormat());","lastModifiedDate":"2024-02-02"},{"lineNumber":45,"author":{"gitId":"Lalelulilulela"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":46,"author":{"gitId":"Lalelulilulela"},"content":" fw.close();","lastModifiedDate":"2024-02-02"},{"lineNumber":47,"author":{"gitId":"Lalelulilulela"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":48,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":49,"author":{"gitId":"Lalelulilulela"},"content":" @Override","lastModifiedDate":"2024-02-02"},{"lineNumber":50,"author":{"gitId":"Lalelulilulela"},"content":" public String toString() {","lastModifiedDate":"2024-02-02"},{"lineNumber":51,"author":{"gitId":"Lalelulilulela"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2024-02-02"},{"lineNumber":52,"author":{"gitId":"Lalelulilulela"},"content":" for (int i \u003d 0; i \u003c this.tasks.size(); i++) {","lastModifiedDate":"2024-02-02"},{"lineNumber":53,"author":{"gitId":"Lalelulilulela"},"content":" sb.append(String.format(\" %d.%s\\n\", i + 1, this.tasks.get(i).toString()));","lastModifiedDate":"2024-02-02"},{"lineNumber":54,"author":{"gitId":"Lalelulilulela"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":55,"author":{"gitId":"Lalelulilulela"},"content":" return sb.toString();","lastModifiedDate":"2024-02-02"},{"lineNumber":56,"author":{"gitId":"Lalelulilulela"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":57,"author":{"gitId":"Lalelulilulela"},"content":"}","lastModifiedDate":"2024-02-02"}],"authorContributionMap":{"Lalelulilulela":57}},{"path":"src/main/java/Ui/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Lalelulilulela"},"content":"package Ui;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":3,"author":{"gitId":"Lalelulilulela"},"content":"public class Ui {","lastModifiedDate":"2024-02-02"},{"lineNumber":4,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":5,"author":{"gitId":"Lalelulilulela"},"content":" public String showInstructions() {","lastModifiedDate":"2024-02-01"},{"lineNumber":6,"author":{"gitId":"Lalelulilulela"},"content":" return \"Please type in:\\n\" +","lastModifiedDate":"2024-02-01"},{"lineNumber":7,"author":{"gitId":"Lalelulilulela"},"content":" \"------------------------\\n\" +","lastModifiedDate":"2024-02-01"},{"lineNumber":8,"author":{"gitId":"Lalelulilulela"},"content":" \"[to record your task(s)/ events]\\n\" +","lastModifiedDate":"2024-02-01"},{"lineNumber":9,"author":{"gitId":"Lalelulilulela"},"content":" \"- todo \u003ctask\u003e\\n\" +","lastModifiedDate":"2024-02-01"},{"lineNumber":10,"author":{"gitId":"Lalelulilulela"},"content":" \"- deadline \u003ctask\u003e /by \u003cdate\u003e\\n\" +","lastModifiedDate":"2024-02-01"},{"lineNumber":11,"author":{"gitId":"Lalelulilulela"},"content":" \"- event \u003cevent\u003e /from \u003cdate and time\u003e /to \u003cdate and time\u003e\\n\\n\" +","lastModifiedDate":"2024-02-01"},{"lineNumber":12,"author":{"gitId":"Lalelulilulela"},"content":" \"[to view your task(s)]\\n\" +","lastModifiedDate":"2024-02-01"},{"lineNumber":13,"author":{"gitId":"Lalelulilulela"},"content":" \"- list\\n\\n\" +","lastModifiedDate":"2024-02-01"},{"lineNumber":14,"author":{"gitId":"Lalelulilulela"},"content":" \"[to mark or unmark your task as done]\\n\" +","lastModifiedDate":"2024-02-01"},{"lineNumber":15,"author":{"gitId":"Lalelulilulela"},"content":" \"- mark \u003ctask number in list\u003e\\n\" +","lastModifiedDate":"2024-02-01"},{"lineNumber":16,"author":{"gitId":"Lalelulilulela"},"content":" \"- unmark \u003ctask number in list\u003e\\n\" +","lastModifiedDate":"2024-02-01"},{"lineNumber":17,"author":{"gitId":"Lalelulilulela"},"content":" \"-------------------------------------\\n\";","lastModifiedDate":"2024-02-01"},{"lineNumber":18,"author":{"gitId":"Lalelulilulela"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":19,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":20,"author":{"gitId":"Lalelulilulela"},"content":" public void greet() {","lastModifiedDate":"2024-02-01"},{"lineNumber":21,"author":{"gitId":"Lalelulilulela"},"content":" String greet \u003d \" Hi! I am your favourite friend, Lelu :)\\n What can I do for you?\\n\";","lastModifiedDate":"2024-02-04"},{"lineNumber":22,"author":{"gitId":"Lalelulilulela"},"content":" System.out.println(greet);","lastModifiedDate":"2024-02-01"},{"lineNumber":23,"author":{"gitId":"Lalelulilulela"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":24,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":25,"author":{"gitId":"Lalelulilulela"},"content":" public void exit() {","lastModifiedDate":"2024-02-01"},{"lineNumber":26,"author":{"gitId":"Lalelulilulela"},"content":" String exit \u003d \" Ok bye, you shall be missed :(\";","lastModifiedDate":"2024-02-01"},{"lineNumber":27,"author":{"gitId":"Lalelulilulela"},"content":" System.out.println(exit);","lastModifiedDate":"2024-02-01"},{"lineNumber":28,"author":{"gitId":"Lalelulilulela"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":29,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":30,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":31,"author":{"gitId":"Lalelulilulela"},"content":" public void dateFormatInstructions() {","lastModifiedDate":"2024-02-01"},{"lineNumber":32,"author":{"gitId":"Lalelulilulela"},"content":" System.out.printf(\" Your date should be in this format:\\n \u003cYYYY-MM-DD HH:mm\u003e e.g. 2024-02-03 15:25\\n\\n\");","lastModifiedDate":"2024-02-04"},{"lineNumber":33,"author":{"gitId":"Lalelulilulela"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":34,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":35,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":36,"author":{"gitId":"Lalelulilulela"},"content":"}","lastModifiedDate":"2024-02-01"}],"authorContributionMap":{"Lalelulilulela":36}},{"path":"src/test/java/Tasks/DeadlineTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Lalelulilulela"},"content":"package Tasks;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":3,"author":{"gitId":"Lalelulilulela"},"content":"import Exceptions.InvalidFormatException;","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"Lalelulilulela"},"content":"import Exceptions.InvalidInputException;","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"Lalelulilulela"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"Lalelulilulela"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-02-06"},{"lineNumber":8,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"Lalelulilulela"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"Lalelulilulela"},"content":"import static org.junit.jupiter.api.Assertions.fail;","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":12,"author":{"gitId":"Lalelulilulela"},"content":"public class DeadlineTest {","lastModifiedDate":"2024-02-06"},{"lineNumber":13,"author":{"gitId":"Lalelulilulela"},"content":" @Test","lastModifiedDate":"2024-02-06"},{"lineNumber":14,"author":{"gitId":"Lalelulilulela"},"content":" public void testDeadline_DateTimeParseExceptionThrown() {","lastModifiedDate":"2024-02-06"},{"lineNumber":15,"author":{"gitId":"Lalelulilulela"},"content":" try {","lastModifiedDate":"2024-02-06"},{"lineNumber":16,"author":{"gitId":"Lalelulilulela"},"content":" new Deadline(\"go home\", \"2023/09/02 1000\");","lastModifiedDate":"2024-02-06"},{"lineNumber":17,"author":{"gitId":"Lalelulilulela"},"content":" fail(\"Expected DateTimeParseException to be thrown\");","lastModifiedDate":"2024-02-06"},{"lineNumber":18,"author":{"gitId":"Lalelulilulela"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-02-06"},{"lineNumber":19,"author":{"gitId":"Lalelulilulela"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":20,"author":{"gitId":"Lalelulilulela"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":21,"author":{"gitId":"Lalelulilulela"},"content":" @Test","lastModifiedDate":"2024-02-06"},{"lineNumber":22,"author":{"gitId":"Lalelulilulela"},"content":" public void testDeadlineOf_success() throws InvalidInputException {","lastModifiedDate":"2024-02-06"},{"lineNumber":23,"author":{"gitId":"Lalelulilulela"},"content":" Deadline d1 \u003d new Deadline(\"Submit assignment\", \"2025-05-20 23:59\");","lastModifiedDate":"2024-02-06"},{"lineNumber":24,"author":{"gitId":"Lalelulilulela"},"content":" assertEquals(d1.toString(),","lastModifiedDate":"2024-02-06"},{"lineNumber":25,"author":{"gitId":"Lalelulilulela"},"content":" Deadline.DeadlineOf(\"deadline Submit assignment /by 2025-05-20 23:59\").toString());","lastModifiedDate":"2024-02-06"},{"lineNumber":26,"author":{"gitId":"Lalelulilulela"},"content":" Deadline d2 \u003d new Deadline(\"chop cucumber\", \"2026-11-18 01:43\");","lastModifiedDate":"2024-02-06"},{"lineNumber":27,"author":{"gitId":"Lalelulilulela"},"content":" assertEquals(d2.toString(),","lastModifiedDate":"2024-02-06"},{"lineNumber":28,"author":{"gitId":"Lalelulilulela"},"content":" Deadline.DeadlineOf(\"deadline chop cucumber /by 2026-11-18 01:43\").toString());","lastModifiedDate":"2024-02-06"},{"lineNumber":29,"author":{"gitId":"Lalelulilulela"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":30,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":31,"author":{"gitId":"Lalelulilulela"},"content":" @Test","lastModifiedDate":"2024-02-06"},{"lineNumber":32,"author":{"gitId":"Lalelulilulela"},"content":" public void testDeadlineOf_exceptionThrown() throws InvalidInputException {","lastModifiedDate":"2024-02-06"},{"lineNumber":33,"author":{"gitId":"Lalelulilulela"},"content":" try {","lastModifiedDate":"2024-02-06"},{"lineNumber":34,"author":{"gitId":"Lalelulilulela"},"content":" Deadline.DeadlineOf(\"deadline \");","lastModifiedDate":"2024-02-06"},{"lineNumber":35,"author":{"gitId":"Lalelulilulela"},"content":" fail(\"Expected InvalidFormatException to be thrown\");","lastModifiedDate":"2024-02-06"},{"lineNumber":36,"author":{"gitId":"Lalelulilulela"},"content":" } catch (InvalidFormatException e) {","lastModifiedDate":"2024-02-06"},{"lineNumber":37,"author":{"gitId":"Lalelulilulela"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":38,"author":{"gitId":"Lalelulilulela"},"content":" try {","lastModifiedDate":"2024-02-06"},{"lineNumber":39,"author":{"gitId":"Lalelulilulela"},"content":" Deadline.DeadlineOf(\"deadline play games by tmr\");","lastModifiedDate":"2024-02-06"},{"lineNumber":40,"author":{"gitId":"Lalelulilulela"},"content":" fail(\"Expected InvalidFormatException to be thrown\");","lastModifiedDate":"2024-02-06"},{"lineNumber":41,"author":{"gitId":"Lalelulilulela"},"content":" } catch (InvalidFormatException e) {","lastModifiedDate":"2024-02-06"},{"lineNumber":42,"author":{"gitId":"Lalelulilulela"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":43,"author":{"gitId":"Lalelulilulela"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":44,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":45,"author":{"gitId":"Lalelulilulela"},"content":" @Test","lastModifiedDate":"2024-02-06"},{"lineNumber":46,"author":{"gitId":"Lalelulilulela"},"content":" public void testSaveFormat() {","lastModifiedDate":"2024-02-06"},{"lineNumber":47,"author":{"gitId":"Lalelulilulela"},"content":" Deadline d1 \u003d new Deadline(\"go to school\", \"2021-12-14 08:00\");","lastModifiedDate":"2024-02-06"},{"lineNumber":48,"author":{"gitId":"Lalelulilulela"},"content":" d1.markTask();","lastModifiedDate":"2024-02-06"},{"lineNumber":49,"author":{"gitId":"Lalelulilulela"},"content":" assertEquals(\"D | 1 | go to school | 2021-12-14 08:00\\n\", d1.saveFormat());","lastModifiedDate":"2024-02-06"},{"lineNumber":50,"author":{"gitId":"Lalelulilulela"},"content":" d1.unmarkTask();","lastModifiedDate":"2024-02-06"},{"lineNumber":51,"author":{"gitId":"Lalelulilulela"},"content":" assertEquals(\"D | 0 | go to school | 2021-12-14 08:00\\n\", d1.saveFormat());","lastModifiedDate":"2024-02-06"},{"lineNumber":52,"author":{"gitId":"Lalelulilulela"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":53,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":54,"author":{"gitId":"Lalelulilulela"},"content":" @Test","lastModifiedDate":"2024-02-06"},{"lineNumber":55,"author":{"gitId":"Lalelulilulela"},"content":" public void testToString() {","lastModifiedDate":"2024-02-06"},{"lineNumber":56,"author":{"gitId":"Lalelulilulela"},"content":" Deadline d \u003d new Deadline(\"sleep\", \"2023-10-02 23:00\");","lastModifiedDate":"2024-02-06"},{"lineNumber":57,"author":{"gitId":"Lalelulilulela"},"content":" assertEquals(\"[D][ ] sleep (by: 2 Oct 2023 11:00pm)\", d.toString());","lastModifiedDate":"2024-02-06"},{"lineNumber":58,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":59,"author":{"gitId":"Lalelulilulela"},"content":" Deadline d1 \u003d new Deadline(\"wake up\", \"2024-09-08 14:38\");","lastModifiedDate":"2024-02-06"},{"lineNumber":60,"author":{"gitId":"Lalelulilulela"},"content":" assertEquals(\"[D][ ] wake up (by: 8 Sept 2024 02:38pm)\", d1.toString());","lastModifiedDate":"2024-02-06"},{"lineNumber":61,"author":{"gitId":"Lalelulilulela"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":62,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":63,"author":{"gitId":"Lalelulilulela"},"content":"}","lastModifiedDate":"2024-02-06"}],"authorContributionMap":{"Lalelulilulela":63}},{"path":"src/test/java/TasksStorage/TaskListTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Lalelulilulela"},"content":"package TasksStorage;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"Lalelulilulela"},"content":"import Tasks.Deadline;","lastModifiedDate":"2024-02-06"},{"lineNumber":3,"author":{"gitId":"Lalelulilulela"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"Lalelulilulela"},"content":"import java.io.ByteArrayOutputStream;","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"Lalelulilulela"},"content":"import java.io.PrintStream;","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":8,"author":{"gitId":"Lalelulilulela"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"Lalelulilulela"},"content":"public class TaskListTest {","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"Lalelulilulela"},"content":" @Test","lastModifiedDate":"2024-02-06"},{"lineNumber":12,"author":{"gitId":"Lalelulilulela"},"content":" public void testAddTask() {","lastModifiedDate":"2024-02-06"},{"lineNumber":13,"author":{"gitId":"Lalelulilulela"},"content":" TaskList t \u003d new TaskList();","lastModifiedDate":"2024-02-06"},{"lineNumber":14,"author":{"gitId":"Lalelulilulela"},"content":" assertEquals(\"\", t.toString());","lastModifiedDate":"2024-02-06"},{"lineNumber":15,"author":{"gitId":"Lalelulilulela"},"content":" Deadline d \u003d new Deadline(\"sleep\", \"2024-10-10 21:00\");","lastModifiedDate":"2024-02-06"},{"lineNumber":16,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":17,"author":{"gitId":"Lalelulilulela"},"content":" ByteArrayOutputStream outContent \u003d new ByteArrayOutputStream();","lastModifiedDate":"2024-02-06"},{"lineNumber":18,"author":{"gitId":"Lalelulilulela"},"content":" System.setOut(new PrintStream(outContent));","lastModifiedDate":"2024-02-06"},{"lineNumber":19,"author":{"gitId":"Lalelulilulela"},"content":" t.addTask(d);","lastModifiedDate":"2024-02-06"},{"lineNumber":20,"author":{"gitId":"Lalelulilulela"},"content":" System.setOut(System.out);","lastModifiedDate":"2024-02-06"},{"lineNumber":21,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":22,"author":{"gitId":"Lalelulilulela"},"content":" assertEquals(String.format(\" Ok! I have added your task:\\n %s\\n You have %d task(s) in the \" +","lastModifiedDate":"2024-02-06"},{"lineNumber":23,"author":{"gitId":"Lalelulilulela"},"content":" \"list now.\\n\\n\", d.toString(), 1), outContent.toString());","lastModifiedDate":"2024-02-06"},{"lineNumber":24,"author":{"gitId":"Lalelulilulela"},"content":" assertEquals(String.format(\" 1.%s\\n\", d.toString()), t.toString());","lastModifiedDate":"2024-02-06"},{"lineNumber":25,"author":{"gitId":"Lalelulilulela"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":26,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":27,"author":{"gitId":"Lalelulilulela"},"content":" @Test","lastModifiedDate":"2024-02-06"},{"lineNumber":28,"author":{"gitId":"Lalelulilulela"},"content":" public void testRemoveTask() {","lastModifiedDate":"2024-02-06"},{"lineNumber":29,"author":{"gitId":"Lalelulilulela"},"content":" TaskList t \u003d new TaskList();","lastModifiedDate":"2024-02-06"},{"lineNumber":30,"author":{"gitId":"Lalelulilulela"},"content":" Deadline d \u003d new Deadline(\"Finish assignment\", \"2023-11-30 22:59\");","lastModifiedDate":"2024-02-06"},{"lineNumber":31,"author":{"gitId":"Lalelulilulela"},"content":" t.addTask(d);","lastModifiedDate":"2024-02-06"},{"lineNumber":32,"author":{"gitId":"Lalelulilulela"},"content":" ByteArrayOutputStream outContent \u003d new ByteArrayOutputStream();","lastModifiedDate":"2024-02-06"},{"lineNumber":33,"author":{"gitId":"Lalelulilulela"},"content":" System.setOut(new PrintStream(outContent));","lastModifiedDate":"2024-02-06"},{"lineNumber":34,"author":{"gitId":"Lalelulilulela"},"content":" t.removeTask(0);","lastModifiedDate":"2024-02-06"},{"lineNumber":35,"author":{"gitId":"Lalelulilulela"},"content":" System.setOut(System.out);","lastModifiedDate":"2024-02-06"},{"lineNumber":36,"author":{"gitId":"Lalelulilulela"},"content":" assertEquals(String.format(\" Ok, I have removed your task:\\n %s\\n You have %d task(s) in the \" +","lastModifiedDate":"2024-02-06"},{"lineNumber":37,"author":{"gitId":"Lalelulilulela"},"content":" \"list now.\\n\\n\", d.toString(), 0), outContent.toString());","lastModifiedDate":"2024-02-06"},{"lineNumber":38,"author":{"gitId":"Lalelulilulela"},"content":" assertEquals(\"\", t.toString());","lastModifiedDate":"2024-02-06"},{"lineNumber":39,"author":{"gitId":"Lalelulilulela"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":40,"author":{"gitId":"Lalelulilulela"},"content":"}","lastModifiedDate":"2024-02-06"}],"authorContributionMap":{"Lalelulilulela":40}},{"path":"src/test/java/Ui/UiTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Lalelulilulela"},"content":"package Ui;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":3,"author":{"gitId":"Lalelulilulela"},"content":"import org.junit.jupiter.api.AfterEach;","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"Lalelulilulela"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"Lalelulilulela"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"Lalelulilulela"},"content":"import java.io.ByteArrayOutputStream;","lastModifiedDate":"2024-02-06"},{"lineNumber":8,"author":{"gitId":"Lalelulilulela"},"content":"import java.io.PrintStream;","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"Lalelulilulela"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":12,"author":{"gitId":"Lalelulilulela"},"content":"public class UiTest {","lastModifiedDate":"2024-02-06"},{"lineNumber":13,"author":{"gitId":"Lalelulilulela"},"content":" private ByteArrayOutputStream outContent \u003d new ByteArrayOutputStream();","lastModifiedDate":"2024-02-06"},{"lineNumber":14,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":15,"author":{"gitId":"Lalelulilulela"},"content":" @BeforeEach","lastModifiedDate":"2024-02-06"},{"lineNumber":16,"author":{"gitId":"Lalelulilulela"},"content":" public void redirect() {","lastModifiedDate":"2024-02-06"},{"lineNumber":17,"author":{"gitId":"Lalelulilulela"},"content":" System.setOut(new PrintStream(outContent));","lastModifiedDate":"2024-02-06"},{"lineNumber":18,"author":{"gitId":"Lalelulilulela"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":19,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":20,"author":{"gitId":"Lalelulilulela"},"content":" @AfterEach","lastModifiedDate":"2024-02-06"},{"lineNumber":21,"author":{"gitId":"Lalelulilulela"},"content":" public void restore() {","lastModifiedDate":"2024-02-06"},{"lineNumber":22,"author":{"gitId":"Lalelulilulela"},"content":" System.setOut(System.out);","lastModifiedDate":"2024-02-06"},{"lineNumber":23,"author":{"gitId":"Lalelulilulela"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":24,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":25,"author":{"gitId":"Lalelulilulela"},"content":" @Test","lastModifiedDate":"2024-02-06"},{"lineNumber":26,"author":{"gitId":"Lalelulilulela"},"content":" public void testGreet() {","lastModifiedDate":"2024-02-06"},{"lineNumber":27,"author":{"gitId":"Lalelulilulela"},"content":" Ui ui \u003d new Ui();","lastModifiedDate":"2024-02-06"},{"lineNumber":28,"author":{"gitId":"Lalelulilulela"},"content":" ui.greet();","lastModifiedDate":"2024-02-06"},{"lineNumber":29,"author":{"gitId":"Lalelulilulela"},"content":" assertEquals(\" Hi! I am your favourite friend, Lelu :)\\n What can I do for you?\\n\\n\",","lastModifiedDate":"2024-02-06"},{"lineNumber":30,"author":{"gitId":"Lalelulilulela"},"content":" outContent.toString());","lastModifiedDate":"2024-02-06"},{"lineNumber":31,"author":{"gitId":"Lalelulilulela"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":32,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":33,"author":{"gitId":"Lalelulilulela"},"content":" @Test","lastModifiedDate":"2024-02-06"},{"lineNumber":34,"author":{"gitId":"Lalelulilulela"},"content":" public void testExit() {","lastModifiedDate":"2024-02-06"},{"lineNumber":35,"author":{"gitId":"Lalelulilulela"},"content":" Ui ui \u003d new Ui();","lastModifiedDate":"2024-02-06"},{"lineNumber":36,"author":{"gitId":"Lalelulilulela"},"content":" ui.exit();","lastModifiedDate":"2024-02-06"},{"lineNumber":37,"author":{"gitId":"Lalelulilulela"},"content":" assertEquals(\" Ok bye, you shall be missed :(\\n\",","lastModifiedDate":"2024-02-06"},{"lineNumber":38,"author":{"gitId":"Lalelulilulela"},"content":" outContent.toString());","lastModifiedDate":"2024-02-06"},{"lineNumber":39,"author":{"gitId":"Lalelulilulela"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":40,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":41,"author":{"gitId":"Lalelulilulela"},"content":" @Test","lastModifiedDate":"2024-02-06"},{"lineNumber":42,"author":{"gitId":"Lalelulilulela"},"content":" public void testDateFormatInstructions() {","lastModifiedDate":"2024-02-06"},{"lineNumber":43,"author":{"gitId":"Lalelulilulela"},"content":" Ui ui \u003d new Ui();","lastModifiedDate":"2024-02-06"},{"lineNumber":44,"author":{"gitId":"Lalelulilulela"},"content":" ui.dateFormatInstructions();","lastModifiedDate":"2024-02-06"},{"lineNumber":45,"author":{"gitId":"Lalelulilulela"},"content":" assertEquals(\" Your date should be in this format:\\n \u003cYYYY-MM-DD HH:mm\u003e e.g. 2024-02-03 15:25\\n\\n\",","lastModifiedDate":"2024-02-06"},{"lineNumber":46,"author":{"gitId":"Lalelulilulela"},"content":" outContent.toString());","lastModifiedDate":"2024-02-06"},{"lineNumber":47,"author":{"gitId":"Lalelulilulela"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":48,"author":{"gitId":"Lalelulilulela"},"content":"}","lastModifiedDate":"2024-02-06"}],"authorContributionMap":{"Lalelulilulela":48}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"Lalelulilulela"},"content":"event play /from 10am /to 10pm","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"Lalelulilulela"},"content":"deadline sleep /by 2023-09-08 11:59","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"Lalelulilulela"},"content":"mark 2","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"Lalelulilulela"},"content":"list","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"Lalelulilulela"},"content":"unmark 2","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"Lalelulilulela"},"content":"list","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"Lalelulilulela"},"content":"delete 1","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"Lalelulilulela"},"content":"list","lastModifiedDate":"2024-02-02"},{"lineNumber":9,"author":{"gitId":"Lalelulilulela"},"content":"deadline homework /by tmr","lastModifiedDate":"2024-02-02"},{"lineNumber":10,"author":{"gitId":"Lalelulilulela"},"content":"bye","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"Lalelulilulela":10}},{"path":"text-ui-test/runtest.bat","fileType":"bat","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@ECHO OFF","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"REM create bin directory if it doesn\u0027t exist","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"if not exist ..\\bin mkdir ..\\bin","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"REM delete output from previous run","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"if exist ACTUAL.TXT del ACTUAL.TXT","lastModifiedDate":"2020-08-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"REM compile the code into the bin folder","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"javac -cp ..\\src\\main\\java -Xlint:none -d ..\\bin ..\\src\\main\\java\\*.java","lastModifiedDate":"2020-08-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"IF ERRORLEVEL 1 (","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":" echo ********** BUILD FAILURE **********","lastModifiedDate":"2020-05-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":" exit /b 1","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":")","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"REM no error here, errorlevel \u003d\u003d 0","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"Lalelulilulela"},"content":"REM run the program, feed Commands from input.txt file and redirect the output to the ACTUAL.TXT","lastModifiedDate":"2024-02-02"},{"lineNumber":18,"author":{"gitId":"Lalelulilulela"},"content":"java -classpath ..\\bin Lelu.Lelu \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-02-02"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"REM compare the output to the expected output","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"FC ACTUAL.TXT EXPECTED.TXT","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"Lalelulilulela":2,"-":19}},{"path":"text-ui-test/runtest.sh","fileType":"sh","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"#!/usr/bin/env bash","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"# create bin directory if it doesn\u0027t exist","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"if [ ! -d \"../bin\" ]","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":" mkdir ../bin","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"# delete output from previous run","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"if [ -e \"./ACTUAL.TXT\" ]","lastModifiedDate":"2020-05-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":" rm ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"# compile the code into the bin folder, terminates if error occurred","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"Lalelulilulela"},"content":"if ! javac -cp ../src/main/java -Xlint:none -d ../bin ../src/main/java/Lelu/*.java","lastModifiedDate":"2024-02-02"},{"lineNumber":17,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" echo \"********** BUILD FAILURE **********\"","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" exit 1","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":"# run the program, feed commands from input.txt file and redirect the output to the ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"Lalelulilulela"},"content":"java -classpath ../bin Lelu \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-01-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":"# convert to UNIX format","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":"cp EXPECTED.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":"dos2unix ACTUAL.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"# compare the output to the expected output","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"diff ACTUAL.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":"if [ $? -eq 0 ]","lastModifiedDate":"2020-05-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":" echo \"Test result: PASSED\"","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":" exit 0","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":"else","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" echo \"Test result: FAILED\"","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" exit 1","lastModifiedDate":"2020-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"Lalelulilulela":2,"-":36}}] +[{"path":"README.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"Lalelulilulela"},"content":"# lelu.lelu project template","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"Lalelulilulela"},"content":"This is a project template for a greenfield Java project. It\u0027s named after the Java mascot _Lelu_. Given below are instructions on how to use it.","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"## Setting up in Intellij","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"Prerequisites: JDK 11, update Intellij to the most recent version.","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"1. Open Intellij (if you are not in the welcome screen, click `File` \u003e `Close Project` to close the existing project first)","lastModifiedDate":"2021-01-17"},{"lineNumber":10,"author":{"gitId":"-"},"content":"1. Open the project into Intellij as follows:","lastModifiedDate":"2021-01-17"},{"lineNumber":11,"author":{"gitId":"-"},"content":" 1. Click `Open`.","lastModifiedDate":"2021-01-17"},{"lineNumber":12,"author":{"gitId":"-"},"content":" 1. Select the project directory, and click `OK`.","lastModifiedDate":"2021-01-17"},{"lineNumber":13,"author":{"gitId":"-"},"content":" 1. If there are any further prompts, accept the defaults.","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"1. Configure the project to use **JDK 11** (not other versions) as explained in [here](https://www.jetbrains.com/help/idea/sdk.html#set-up-jdk).\u003cbr\u003e","lastModifiedDate":"2021-07-29"},{"lineNumber":15,"author":{"gitId":"-"},"content":" In the same dialog, set the **Project language level** field to the `SDK default` option.","lastModifiedDate":"2021-07-29"},{"lineNumber":16,"author":{"gitId":"Lalelulilulela"},"content":"3. After that, locate the `src/main/java/lelu.lelu.java` file, right-click it, and choose `Run lelu.lelu.main()` (if the code editor is showing compile errors, try restarting the IDE). If the setup is correct, you should see something like the below as the output:","lastModifiedDate":"2024-02-06"},{"lineNumber":17,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" Hello from","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" ____ _ ","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" | _ \\ _ _| | _____ ","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" | | | | | | | |/ / _ \\","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" | |_| | |_| | \u003c __/","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" |____/ \\__,_|_|\\_\\___|","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"Lalelulilulela":3,"-":21}},{"path":"build.gradle","fileType":"gradle","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"plugins {","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":" id \u0027java\u0027","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":" id \u0027application\u0027","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":" id \u0027com.github.johnrengelman.shadow\u0027 version \u00277.1.2\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"repositories {","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":" mavenCentral()","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"dependencies {","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":" testImplementation group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-api\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":" testRuntimeOnly group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-engine\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"Lalelulilulela"},"content":" mainClass.set(\"lelu.Lelu\")","lastModifiedDate":"2024-02-06"},{"lineNumber":32,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"Lalelulilulela"},"content":" archiveBaseName \u003d \"lelu\"","lastModifiedDate":"2024-02-04"},{"lineNumber":36,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"Lalelulilulela"},"content":" archiveFileName \u003d \u0027lelu.jar\u0027","lastModifiedDate":"2024-02-06"},{"lineNumber":38,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":39,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":"run{","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"Lalelulilulela":3,"-":40}},{"path":"data/lelu.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"Lalelulilulela"},"content":"T | 0 | sleep ","lastModifiedDate":"2024-02-07"}],"authorContributionMap":{"Lalelulilulela":1}},{"path":"settings.gradle","fileType":"gradle","lines":[{"lineNumber":1,"author":{"gitId":"Lalelulilulela"},"content":"include \u0027src:test\u0027","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"Lalelulilulela"},"content":"findProject(\u0027:src:test\u0027)?.name \u003d \u0027test\u0027","lastModifiedDate":"2024-02-06"},{"lineNumber":3,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-02-06"}],"authorContributionMap":{"Lalelulilulela":3}},{"path":"src/main/java/commands/AddDeadlineCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Lalelulilulela"},"content":"package commands;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"Lalelulilulela"},"content":"import exceptions.LeluException;","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"Lalelulilulela"},"content":"import tasks.Deadline;","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"Lalelulilulela"},"content":"import tasks.Task;","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"Lalelulilulela"},"content":"import tasksstorage.Storage;","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"Lalelulilulela"},"content":"import tasksstorage.TaskList;","lastModifiedDate":"2024-02-06"},{"lineNumber":8,"author":{"gitId":"Lalelulilulela"},"content":"import ui.Ui;","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":10,"author":{"gitId":"Lalelulilulela"},"content":"/**","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"Lalelulilulela"},"content":" * This class represents a command for adding a deadline task to the task list","lastModifiedDate":"2024-02-06"},{"lineNumber":12,"author":{"gitId":"Lalelulilulela"},"content":" * managed by the chatbot. When executed, this command parses user input to extract","lastModifiedDate":"2024-02-06"},{"lineNumber":13,"author":{"gitId":"Lalelulilulela"},"content":" * the deadline task details and adds it to the task list, along with the specified","lastModifiedDate":"2024-02-06"},{"lineNumber":14,"author":{"gitId":"Lalelulilulela"},"content":" * due date and time.","lastModifiedDate":"2024-02-06"},{"lineNumber":15,"author":{"gitId":"Lalelulilulela"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":16,"author":{"gitId":"Lalelulilulela"},"content":" public class AddDeadlineCommand extends Command {","lastModifiedDate":"2024-02-02"},{"lineNumber":17,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":18,"author":{"gitId":"Lalelulilulela"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":19,"author":{"gitId":"Lalelulilulela"},"content":" * Executes the command to add a deadline to the list of recorded tasks.","lastModifiedDate":"2024-02-06"},{"lineNumber":20,"author":{"gitId":"Lalelulilulela"},"content":" *","lastModifiedDate":"2024-02-06"},{"lineNumber":21,"author":{"gitId":"Lalelulilulela"},"content":" * @param tasks Recorded list of tasks.","lastModifiedDate":"2024-02-06"},{"lineNumber":22,"author":{"gitId":"Lalelulilulela"},"content":" * @param ui Format of output shown.","lastModifiedDate":"2024-02-06"},{"lineNumber":23,"author":{"gitId":"Lalelulilulela"},"content":" * @param storage To save and load tasks recorded.","lastModifiedDate":"2024-02-06"},{"lineNumber":24,"author":{"gitId":"Lalelulilulela"},"content":" * @param message Input of user.","lastModifiedDate":"2024-02-06"},{"lineNumber":25,"author":{"gitId":"Lalelulilulela"},"content":" * @throws LeluException If the input is invalid or with the wrong format.","lastModifiedDate":"2024-02-06"},{"lineNumber":26,"author":{"gitId":"Lalelulilulela"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":27,"author":{"gitId":"Lalelulilulela"},"content":" @Override","lastModifiedDate":"2024-02-02"},{"lineNumber":28,"author":{"gitId":"Lalelulilulela"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage, String message) throws LeluException {","lastModifiedDate":"2024-02-02"},{"lineNumber":29,"author":{"gitId":"Lalelulilulela"},"content":" Task t \u003d Deadline.DeadlineOf(message);","lastModifiedDate":"2024-02-02"},{"lineNumber":30,"author":{"gitId":"Lalelulilulela"},"content":" tasks.addTask(t);","lastModifiedDate":"2024-02-02"},{"lineNumber":31,"author":{"gitId":"Lalelulilulela"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":32,"author":{"gitId":"Lalelulilulela"},"content":"}","lastModifiedDate":"2024-02-02"}],"authorContributionMap":{"Lalelulilulela":32}},{"path":"src/main/java/commands/AddEventCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Lalelulilulela"},"content":"package commands;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"Lalelulilulela"},"content":"import exceptions.LeluException;","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"Lalelulilulela"},"content":"import tasks.Event;","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"Lalelulilulela"},"content":"import tasks.Task;","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"Lalelulilulela"},"content":"import tasksstorage.Storage;","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"Lalelulilulela"},"content":"import tasksstorage.TaskList;","lastModifiedDate":"2024-02-06"},{"lineNumber":8,"author":{"gitId":"Lalelulilulela"},"content":"import ui.Ui;","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":10,"author":{"gitId":"Lalelulilulela"},"content":"/**","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"Lalelulilulela"},"content":" * This class represents a command for adding an event task to the task list","lastModifiedDate":"2024-02-06"},{"lineNumber":12,"author":{"gitId":"Lalelulilulela"},"content":" * managed by the chatbot. When executed, this command parses user input to extract","lastModifiedDate":"2024-02-06"},{"lineNumber":13,"author":{"gitId":"Lalelulilulela"},"content":" * the event task details and adds it to the task list, along with the specified","lastModifiedDate":"2024-02-06"},{"lineNumber":14,"author":{"gitId":"Lalelulilulela"},"content":" * start and end timings of the event.","lastModifiedDate":"2024-02-06"},{"lineNumber":15,"author":{"gitId":"Lalelulilulela"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":16,"author":{"gitId":"Lalelulilulela"},"content":"public class AddEventCommand extends Command {","lastModifiedDate":"2024-02-02"},{"lineNumber":17,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":18,"author":{"gitId":"Lalelulilulela"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":19,"author":{"gitId":"Lalelulilulela"},"content":" * Executes the command to add an event to the list of recorded tasks.","lastModifiedDate":"2024-02-06"},{"lineNumber":20,"author":{"gitId":"Lalelulilulela"},"content":" *","lastModifiedDate":"2024-02-06"},{"lineNumber":21,"author":{"gitId":"Lalelulilulela"},"content":" * @param tasks Recorded list of tasks.","lastModifiedDate":"2024-02-06"},{"lineNumber":22,"author":{"gitId":"Lalelulilulela"},"content":" * @param ui Format of output shown.","lastModifiedDate":"2024-02-06"},{"lineNumber":23,"author":{"gitId":"Lalelulilulela"},"content":" * @param storage To save and load tasks recorded.","lastModifiedDate":"2024-02-06"},{"lineNumber":24,"author":{"gitId":"Lalelulilulela"},"content":" * @param message Input of user.","lastModifiedDate":"2024-02-06"},{"lineNumber":25,"author":{"gitId":"Lalelulilulela"},"content":" * @throws LeluException If the input is invalid or with the wrong format.","lastModifiedDate":"2024-02-06"},{"lineNumber":26,"author":{"gitId":"Lalelulilulela"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":27,"author":{"gitId":"Lalelulilulela"},"content":" @Override","lastModifiedDate":"2024-02-02"},{"lineNumber":28,"author":{"gitId":"Lalelulilulela"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage, String message) throws LeluException {","lastModifiedDate":"2024-02-02"},{"lineNumber":29,"author":{"gitId":"Lalelulilulela"},"content":" Task t \u003d Event.EventOf(message);","lastModifiedDate":"2024-02-02"},{"lineNumber":30,"author":{"gitId":"Lalelulilulela"},"content":" tasks.addTask(t);","lastModifiedDate":"2024-02-02"},{"lineNumber":31,"author":{"gitId":"Lalelulilulela"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":32,"author":{"gitId":"Lalelulilulela"},"content":"}","lastModifiedDate":"2024-02-02"}],"authorContributionMap":{"Lalelulilulela":32}},{"path":"src/main/java/commands/AddToDoCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Lalelulilulela"},"content":"package commands;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"Lalelulilulela"},"content":"import exceptions.LeluException;","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"Lalelulilulela"},"content":"import tasks.Task;","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"Lalelulilulela"},"content":"import tasks.ToDo;","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"Lalelulilulela"},"content":"import tasksstorage.Storage;","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"Lalelulilulela"},"content":"import tasksstorage.TaskList;","lastModifiedDate":"2024-02-06"},{"lineNumber":8,"author":{"gitId":"Lalelulilulela"},"content":"import ui.Ui;","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":10,"author":{"gitId":"Lalelulilulela"},"content":"/**","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"Lalelulilulela"},"content":" * This class represents a command for adding a todo task to the task list","lastModifiedDate":"2024-02-06"},{"lineNumber":12,"author":{"gitId":"Lalelulilulela"},"content":" * managed by the chatbot. When executed, this command parses user input to extract","lastModifiedDate":"2024-02-06"},{"lineNumber":13,"author":{"gitId":"Lalelulilulela"},"content":" * the todo task details and adds it to the task list.","lastModifiedDate":"2024-02-06"},{"lineNumber":14,"author":{"gitId":"Lalelulilulela"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":15,"author":{"gitId":"Lalelulilulela"},"content":"public class AddToDoCommand extends Command {","lastModifiedDate":"2024-02-02"},{"lineNumber":16,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":17,"author":{"gitId":"Lalelulilulela"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":18,"author":{"gitId":"Lalelulilulela"},"content":" * Executes the command to add a task to the list of recorded tasks.","lastModifiedDate":"2024-02-06"},{"lineNumber":19,"author":{"gitId":"Lalelulilulela"},"content":" *","lastModifiedDate":"2024-02-06"},{"lineNumber":20,"author":{"gitId":"Lalelulilulela"},"content":" * @param tasks Recorded list of tasks.","lastModifiedDate":"2024-02-06"},{"lineNumber":21,"author":{"gitId":"Lalelulilulela"},"content":" * @param ui Format of output shown.","lastModifiedDate":"2024-02-06"},{"lineNumber":22,"author":{"gitId":"Lalelulilulela"},"content":" * @param storage To save and load tasks recorded.","lastModifiedDate":"2024-02-06"},{"lineNumber":23,"author":{"gitId":"Lalelulilulela"},"content":" * @param message Input of user.","lastModifiedDate":"2024-02-06"},{"lineNumber":24,"author":{"gitId":"Lalelulilulela"},"content":" * @throws LeluException If the input is invalid or with the wrong format.","lastModifiedDate":"2024-02-06"},{"lineNumber":25,"author":{"gitId":"Lalelulilulela"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":26,"author":{"gitId":"Lalelulilulela"},"content":" @Override","lastModifiedDate":"2024-02-02"},{"lineNumber":27,"author":{"gitId":"Lalelulilulela"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage, String message) throws LeluException {","lastModifiedDate":"2024-02-02"},{"lineNumber":28,"author":{"gitId":"Lalelulilulela"},"content":" Task t \u003d ToDo.ToDoOf(message);","lastModifiedDate":"2024-02-02"},{"lineNumber":29,"author":{"gitId":"Lalelulilulela"},"content":" tasks.addTask(t);","lastModifiedDate":"2024-02-02"},{"lineNumber":30,"author":{"gitId":"Lalelulilulela"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":31,"author":{"gitId":"Lalelulilulela"},"content":"}","lastModifiedDate":"2024-02-02"}],"authorContributionMap":{"Lalelulilulela":31}},{"path":"src/main/java/commands/ByeCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Lalelulilulela"},"content":"package commands;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"Lalelulilulela"},"content":"import exceptions.LeluException;","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"Lalelulilulela"},"content":"import tasksstorage.Storage;","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"Lalelulilulela"},"content":"import tasksstorage.TaskList;","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"Lalelulilulela"},"content":"import ui.Ui;","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"Lalelulilulela"},"content":"/**","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"Lalelulilulela"},"content":" * This class represents a command for ending the conversation with the chatbot.","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"Lalelulilulela"},"content":" * When executed, this command terminates the chat session and closes the chatbot","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"Lalelulilulela"},"content":" * interface, allowing the user to exit gracefully.","lastModifiedDate":"2024-02-06"},{"lineNumber":12,"author":{"gitId":"Lalelulilulela"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":13,"author":{"gitId":"Lalelulilulela"},"content":" public class ByeCommand extends Command {","lastModifiedDate":"2024-02-02"},{"lineNumber":14,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":15,"author":{"gitId":"Lalelulilulela"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":16,"author":{"gitId":"Lalelulilulela"},"content":" * Executes the command to exit the application.","lastModifiedDate":"2024-02-06"},{"lineNumber":17,"author":{"gitId":"Lalelulilulela"},"content":" *","lastModifiedDate":"2024-02-06"},{"lineNumber":18,"author":{"gitId":"Lalelulilulela"},"content":" * @param tasks Recorded list of tasks.","lastModifiedDate":"2024-02-06"},{"lineNumber":19,"author":{"gitId":"Lalelulilulela"},"content":" * @param ui Format of output shown.","lastModifiedDate":"2024-02-06"},{"lineNumber":20,"author":{"gitId":"Lalelulilulela"},"content":" * @param storage To save and load tasks recorded.","lastModifiedDate":"2024-02-06"},{"lineNumber":21,"author":{"gitId":"Lalelulilulela"},"content":" * @param message Input of user.","lastModifiedDate":"2024-02-06"},{"lineNumber":22,"author":{"gitId":"Lalelulilulela"},"content":" * @throws LeluException If the input is invalid or with the wrong format.","lastModifiedDate":"2024-02-06"},{"lineNumber":23,"author":{"gitId":"Lalelulilulela"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":24,"author":{"gitId":"Lalelulilulela"},"content":" @Override","lastModifiedDate":"2024-02-02"},{"lineNumber":25,"author":{"gitId":"Lalelulilulela"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage, String message) throws LeluException {","lastModifiedDate":"2024-02-02"},{"lineNumber":26,"author":{"gitId":"Lalelulilulela"},"content":" ui.exit();","lastModifiedDate":"2024-02-02"},{"lineNumber":27,"author":{"gitId":"Lalelulilulela"},"content":" storage.save(tasks);","lastModifiedDate":"2024-02-02"},{"lineNumber":28,"author":{"gitId":"Lalelulilulela"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":29,"author":{"gitId":"Lalelulilulela"},"content":"}","lastModifiedDate":"2024-02-02"}],"authorContributionMap":{"Lalelulilulela":29}},{"path":"src/main/java/commands/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Lalelulilulela"},"content":"package commands;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"Lalelulilulela"},"content":"import exceptions.LeluException;","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"Lalelulilulela"},"content":"import tasksstorage.Storage;","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"Lalelulilulela"},"content":"import tasksstorage.TaskList;","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"Lalelulilulela"},"content":"import ui.Ui;","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"Lalelulilulela"},"content":"/**","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"Lalelulilulela"},"content":" * This abstract class serves as the base for implementing various commands","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"Lalelulilulela"},"content":" * that the chatbot can understand and execute. Each concrete command should","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"Lalelulilulela"},"content":" * extend this class and implement the execute() method to define its specific","lastModifiedDate":"2024-02-06"},{"lineNumber":12,"author":{"gitId":"Lalelulilulela"},"content":" * functionality.","lastModifiedDate":"2024-02-06"},{"lineNumber":13,"author":{"gitId":"Lalelulilulela"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":14,"author":{"gitId":"Lalelulilulela"},"content":"public abstract class Command {","lastModifiedDate":"2024-02-02"},{"lineNumber":15,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":16,"author":{"gitId":"Lalelulilulela"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":17,"author":{"gitId":"Lalelulilulela"},"content":" * Command to be executed based on the user input.","lastModifiedDate":"2024-02-06"},{"lineNumber":18,"author":{"gitId":"Lalelulilulela"},"content":" *","lastModifiedDate":"2024-02-06"},{"lineNumber":19,"author":{"gitId":"Lalelulilulela"},"content":" * @param tasks Recorded list of tasks.","lastModifiedDate":"2024-02-06"},{"lineNumber":20,"author":{"gitId":"Lalelulilulela"},"content":" * @param ui Format of output shown.","lastModifiedDate":"2024-02-06"},{"lineNumber":21,"author":{"gitId":"Lalelulilulela"},"content":" * @param storage To save and load tasks recorded.","lastModifiedDate":"2024-02-06"},{"lineNumber":22,"author":{"gitId":"Lalelulilulela"},"content":" * @param message Input of user.","lastModifiedDate":"2024-02-06"},{"lineNumber":23,"author":{"gitId":"Lalelulilulela"},"content":" * @throws LeluException If the input is invalid or with the wrong format.","lastModifiedDate":"2024-02-06"},{"lineNumber":24,"author":{"gitId":"Lalelulilulela"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":25,"author":{"gitId":"Lalelulilulela"},"content":" public abstract void execute(TaskList tasks, Ui ui, Storage storage, String message) throws LeluException;","lastModifiedDate":"2024-02-02"},{"lineNumber":26,"author":{"gitId":"Lalelulilulela"},"content":"}","lastModifiedDate":"2024-02-02"}],"authorContributionMap":{"Lalelulilulela":26}},{"path":"src/main/java/commands/DeleteCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Lalelulilulela"},"content":"package commands;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"Lalelulilulela"},"content":"import exceptions.LeluException;","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"Lalelulilulela"},"content":"import tasksstorage.Storage;","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"Lalelulilulela"},"content":"import tasksstorage.TaskList;","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"Lalelulilulela"},"content":"import ui.Ui;","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"Lalelulilulela"},"content":"/**","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"Lalelulilulela"},"content":" * This class represents a command for deleting a task from the task list managed","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"Lalelulilulela"},"content":" * by the chatbot. When executed, this command removes the specified task from the","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"Lalelulilulela"},"content":" * task list based on its index.","lastModifiedDate":"2024-02-06"},{"lineNumber":12,"author":{"gitId":"Lalelulilulela"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":13,"author":{"gitId":"Lalelulilulela"},"content":"public class DeleteCommand extends Command {","lastModifiedDate":"2024-02-02"},{"lineNumber":14,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":15,"author":{"gitId":"Lalelulilulela"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":16,"author":{"gitId":"Lalelulilulela"},"content":" * Executes the command to remove a task from the list of recorded tasks.","lastModifiedDate":"2024-02-06"},{"lineNumber":17,"author":{"gitId":"Lalelulilulela"},"content":" *","lastModifiedDate":"2024-02-06"},{"lineNumber":18,"author":{"gitId":"Lalelulilulela"},"content":" * @param tasks Recorded list of tasks.","lastModifiedDate":"2024-02-06"},{"lineNumber":19,"author":{"gitId":"Lalelulilulela"},"content":" * @param ui Format of output shown.","lastModifiedDate":"2024-02-06"},{"lineNumber":20,"author":{"gitId":"Lalelulilulela"},"content":" * @param storage To save and load tasks recorded.","lastModifiedDate":"2024-02-06"},{"lineNumber":21,"author":{"gitId":"Lalelulilulela"},"content":" * @param message Input of user.","lastModifiedDate":"2024-02-06"},{"lineNumber":22,"author":{"gitId":"Lalelulilulela"},"content":" * @throws LeluException If the input is invalid or with the wrong format.","lastModifiedDate":"2024-02-06"},{"lineNumber":23,"author":{"gitId":"Lalelulilulela"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":24,"author":{"gitId":"Lalelulilulela"},"content":" @Override","lastModifiedDate":"2024-02-02"},{"lineNumber":25,"author":{"gitId":"Lalelulilulela"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage, String message) throws LeluException {","lastModifiedDate":"2024-02-02"},{"lineNumber":26,"author":{"gitId":"Lalelulilulela"},"content":" int i \u003d Integer.parseInt(message.split(\" \")[1]) - 1;","lastModifiedDate":"2024-02-02"},{"lineNumber":27,"author":{"gitId":"Lalelulilulela"},"content":" tasks.removeTask(i);","lastModifiedDate":"2024-02-02"},{"lineNumber":28,"author":{"gitId":"Lalelulilulela"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":29,"author":{"gitId":"Lalelulilulela"},"content":"}","lastModifiedDate":"2024-02-02"}],"authorContributionMap":{"Lalelulilulela":29}},{"path":"src/main/java/commands/FindCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Lalelulilulela"},"content":"package commands;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":3,"author":{"gitId":"Lalelulilulela"},"content":"import exceptions.InvalidFormatException;","lastModifiedDate":"2024-02-07"},{"lineNumber":4,"author":{"gitId":"Lalelulilulela"},"content":"import exceptions.LeluException;","lastModifiedDate":"2024-02-07"},{"lineNumber":5,"author":{"gitId":"Lalelulilulela"},"content":"import tasksstorage.Storage;","lastModifiedDate":"2024-02-07"},{"lineNumber":6,"author":{"gitId":"Lalelulilulela"},"content":"import tasksstorage.TaskList;","lastModifiedDate":"2024-02-07"},{"lineNumber":7,"author":{"gitId":"Lalelulilulela"},"content":"import ui.Ui;","lastModifiedDate":"2024-02-07"},{"lineNumber":8,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":9,"author":{"gitId":"Lalelulilulela"},"content":"/**","lastModifiedDate":"2024-02-07"},{"lineNumber":10,"author":{"gitId":"Lalelulilulela"},"content":" * This class represents a command for finding tasks, using a keyword, from the task list managed","lastModifiedDate":"2024-02-07"},{"lineNumber":11,"author":{"gitId":"Lalelulilulela"},"content":" * by the chatbot. When executed, this command lists out tasks containing keyword.","lastModifiedDate":"2024-02-07"},{"lineNumber":12,"author":{"gitId":"Lalelulilulela"},"content":" */","lastModifiedDate":"2024-02-07"},{"lineNumber":13,"author":{"gitId":"Lalelulilulela"},"content":"public class FindCommand extends Command {","lastModifiedDate":"2024-02-06"},{"lineNumber":14,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":15,"author":{"gitId":"Lalelulilulela"},"content":" /**","lastModifiedDate":"2024-02-07"},{"lineNumber":16,"author":{"gitId":"Lalelulilulela"},"content":" * Executes the command to search for tasks containing the keyword entered by the user.","lastModifiedDate":"2024-02-07"},{"lineNumber":17,"author":{"gitId":"Lalelulilulela"},"content":" *","lastModifiedDate":"2024-02-07"},{"lineNumber":18,"author":{"gitId":"Lalelulilulela"},"content":" * @param tasks Recorded list of tasks.","lastModifiedDate":"2024-02-07"},{"lineNumber":19,"author":{"gitId":"Lalelulilulela"},"content":" * @param ui Format of output shown.","lastModifiedDate":"2024-02-07"},{"lineNumber":20,"author":{"gitId":"Lalelulilulela"},"content":" * @param storage To save and load tasks recorded.","lastModifiedDate":"2024-02-07"},{"lineNumber":21,"author":{"gitId":"Lalelulilulela"},"content":" * @param message Input of user.","lastModifiedDate":"2024-02-07"},{"lineNumber":22,"author":{"gitId":"Lalelulilulela"},"content":" * @throws LeluException If the input is in the wrong format.","lastModifiedDate":"2024-02-07"},{"lineNumber":23,"author":{"gitId":"Lalelulilulela"},"content":" */","lastModifiedDate":"2024-02-07"},{"lineNumber":24,"author":{"gitId":"Lalelulilulela"},"content":" @Override","lastModifiedDate":"2024-02-06"},{"lineNumber":25,"author":{"gitId":"Lalelulilulela"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage, String message) throws LeluException {","lastModifiedDate":"2024-02-06"},{"lineNumber":26,"author":{"gitId":"Lalelulilulela"},"content":" if (message.replaceAll(\" \", \"\").equals(\"find\")) {","lastModifiedDate":"2024-02-06"},{"lineNumber":27,"author":{"gitId":"Lalelulilulela"},"content":" InvalidFormatException.callInvalidFormatException(LeluException.ErrorType.FIND);","lastModifiedDate":"2024-02-06"},{"lineNumber":28,"author":{"gitId":"Lalelulilulela"},"content":" } else if (message.replaceFirst(\"find \", \"\").split(\" \").length \u003e 1) {","lastModifiedDate":"2024-02-06"},{"lineNumber":29,"author":{"gitId":"Lalelulilulela"},"content":" throw new InvalidFormatException(\" Enter only ONE keyword to search for your task:\\n\" +","lastModifiedDate":"2024-02-06"},{"lineNumber":30,"author":{"gitId":"Lalelulilulela"},"content":" \" find \u003ckeyword\u003e\\n\");","lastModifiedDate":"2024-02-06"},{"lineNumber":31,"author":{"gitId":"Lalelulilulela"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":32,"author":{"gitId":"Lalelulilulela"},"content":" TaskList res \u003d tasks.filter(message.replaceFirst(\"find \", \"\"));","lastModifiedDate":"2024-02-06"},{"lineNumber":33,"author":{"gitId":"Lalelulilulela"},"content":" System.out.println(\" These are matching tasks in your list:\\n \" + res.toString());","lastModifiedDate":"2024-02-06"},{"lineNumber":34,"author":{"gitId":"Lalelulilulela"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":35,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":36,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":37,"author":{"gitId":"Lalelulilulela"},"content":"}","lastModifiedDate":"2024-02-06"}],"authorContributionMap":{"Lalelulilulela":37}},{"path":"src/main/java/commands/ListCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Lalelulilulela"},"content":"package commands;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"Lalelulilulela"},"content":"import exceptions.LeluException;","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"Lalelulilulela"},"content":"import tasksstorage.Storage;","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"Lalelulilulela"},"content":"import tasksstorage.TaskList;","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"Lalelulilulela"},"content":"import ui.Ui;","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"Lalelulilulela"},"content":"/**","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"Lalelulilulela"},"content":" * This class represents a command for listing all tasks in the task list managed","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"Lalelulilulela"},"content":" * by the chatbot. When executed, this command retrieves and displays all tasks","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"Lalelulilulela"},"content":" * currently stored in the task list, along with their details.","lastModifiedDate":"2024-02-06"},{"lineNumber":12,"author":{"gitId":"Lalelulilulela"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":13,"author":{"gitId":"Lalelulilulela"},"content":"public class ListCommand extends Command {","lastModifiedDate":"2024-02-02"},{"lineNumber":14,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":15,"author":{"gitId":"Lalelulilulela"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":16,"author":{"gitId":"Lalelulilulela"},"content":" * Executes the command to list out the tasks in the list of recorded tasks.","lastModifiedDate":"2024-02-06"},{"lineNumber":17,"author":{"gitId":"Lalelulilulela"},"content":" *","lastModifiedDate":"2024-02-06"},{"lineNumber":18,"author":{"gitId":"Lalelulilulela"},"content":" * @param tasks Recorded list of tasks.","lastModifiedDate":"2024-02-06"},{"lineNumber":19,"author":{"gitId":"Lalelulilulela"},"content":" * @param ui Format of output shown.","lastModifiedDate":"2024-02-06"},{"lineNumber":20,"author":{"gitId":"Lalelulilulela"},"content":" * @param storage To save and load tasks recorded.","lastModifiedDate":"2024-02-06"},{"lineNumber":21,"author":{"gitId":"Lalelulilulela"},"content":" * @param message Input of user.","lastModifiedDate":"2024-02-06"},{"lineNumber":22,"author":{"gitId":"Lalelulilulela"},"content":" * @throws LeluException If the input is invalid or with the wrong format.","lastModifiedDate":"2024-02-06"},{"lineNumber":23,"author":{"gitId":"Lalelulilulela"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":24,"author":{"gitId":"Lalelulilulela"},"content":" @Override","lastModifiedDate":"2024-02-02"},{"lineNumber":25,"author":{"gitId":"Lalelulilulela"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage, String message) throws LeluException {","lastModifiedDate":"2024-02-02"},{"lineNumber":26,"author":{"gitId":"Lalelulilulela"},"content":" System.out.println(tasks.toString());","lastModifiedDate":"2024-02-02"},{"lineNumber":27,"author":{"gitId":"Lalelulilulela"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":28,"author":{"gitId":"Lalelulilulela"},"content":"}","lastModifiedDate":"2024-02-02"}],"authorContributionMap":{"Lalelulilulela":28}},{"path":"src/main/java/commands/MarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Lalelulilulela"},"content":"package commands;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"Lalelulilulela"},"content":"import exceptions.LeluException;","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"Lalelulilulela"},"content":"import tasksstorage.Storage;","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"Lalelulilulela"},"content":"import tasksstorage.TaskList;","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"Lalelulilulela"},"content":"import ui.Ui;","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"Lalelulilulela"},"content":"/**","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"Lalelulilulela"},"content":" * This class represents a command for marking a task as completed in the task list","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"Lalelulilulela"},"content":" * managed by the chatbot. When executed, this command updates the status of the","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"Lalelulilulela"},"content":" * specified task to indicate that it has been completed.","lastModifiedDate":"2024-02-06"},{"lineNumber":12,"author":{"gitId":"Lalelulilulela"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":13,"author":{"gitId":"Lalelulilulela"},"content":"public class MarkCommand extends Command {","lastModifiedDate":"2024-02-02"},{"lineNumber":14,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":15,"author":{"gitId":"Lalelulilulela"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":16,"author":{"gitId":"Lalelulilulela"},"content":" * Executes the command to mark a task in the list of recorded tasks as done.","lastModifiedDate":"2024-02-06"},{"lineNumber":17,"author":{"gitId":"Lalelulilulela"},"content":" *","lastModifiedDate":"2024-02-06"},{"lineNumber":18,"author":{"gitId":"Lalelulilulela"},"content":" * @param tasks Recorded list of tasks.","lastModifiedDate":"2024-02-06"},{"lineNumber":19,"author":{"gitId":"Lalelulilulela"},"content":" * @param ui Format of output shown.","lastModifiedDate":"2024-02-06"},{"lineNumber":20,"author":{"gitId":"Lalelulilulela"},"content":" * @param storage To save and load tasks recorded.","lastModifiedDate":"2024-02-06"},{"lineNumber":21,"author":{"gitId":"Lalelulilulela"},"content":" * @param message Input of user.","lastModifiedDate":"2024-02-06"},{"lineNumber":22,"author":{"gitId":"Lalelulilulela"},"content":" * @throws LeluException If the input is invalid or with the wrong format.","lastModifiedDate":"2024-02-06"},{"lineNumber":23,"author":{"gitId":"Lalelulilulela"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":24,"author":{"gitId":"Lalelulilulela"},"content":" @Override","lastModifiedDate":"2024-02-02"},{"lineNumber":25,"author":{"gitId":"Lalelulilulela"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage, String message) throws LeluException {","lastModifiedDate":"2024-02-02"},{"lineNumber":26,"author":{"gitId":"Lalelulilulela"},"content":" int i \u003d Integer.parseInt(message.split(\" \")[1]) - 1;","lastModifiedDate":"2024-02-02"},{"lineNumber":27,"author":{"gitId":"Lalelulilulela"},"content":" tasks.markTask(i);","lastModifiedDate":"2024-02-02"},{"lineNumber":28,"author":{"gitId":"Lalelulilulela"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":29,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":30,"author":{"gitId":"Lalelulilulela"},"content":"}","lastModifiedDate":"2024-02-02"}],"authorContributionMap":{"Lalelulilulela":30}},{"path":"src/main/java/commands/UnmarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Lalelulilulela"},"content":"package commands;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"Lalelulilulela"},"content":"import exceptions.LeluException;","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"Lalelulilulela"},"content":"import tasksstorage.Storage;","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"Lalelulilulela"},"content":"import tasksstorage.TaskList;","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"Lalelulilulela"},"content":"import ui.Ui;","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"Lalelulilulela"},"content":"/**","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"Lalelulilulela"},"content":" * This class represents a command for marking a task as not completed in the task list","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"Lalelulilulela"},"content":" * managed by the chatbot. When executed, this command updates the status of the","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"Lalelulilulela"},"content":" * specified task to indicate that it has not been completed.","lastModifiedDate":"2024-02-06"},{"lineNumber":12,"author":{"gitId":"Lalelulilulela"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":13,"author":{"gitId":"Lalelulilulela"},"content":"public class UnmarkCommand extends Command {","lastModifiedDate":"2024-02-02"},{"lineNumber":14,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":15,"author":{"gitId":"Lalelulilulela"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":16,"author":{"gitId":"Lalelulilulela"},"content":" * Executes the command to mark a task in the list of recorded tasks as not done.","lastModifiedDate":"2024-02-06"},{"lineNumber":17,"author":{"gitId":"Lalelulilulela"},"content":" *","lastModifiedDate":"2024-02-06"},{"lineNumber":18,"author":{"gitId":"Lalelulilulela"},"content":" * @param tasks Recorded list of tasks.","lastModifiedDate":"2024-02-06"},{"lineNumber":19,"author":{"gitId":"Lalelulilulela"},"content":" * @param ui Format of output shown.","lastModifiedDate":"2024-02-06"},{"lineNumber":20,"author":{"gitId":"Lalelulilulela"},"content":" * @param storage To save and load tasks recorded.","lastModifiedDate":"2024-02-06"},{"lineNumber":21,"author":{"gitId":"Lalelulilulela"},"content":" * @param message Input of user.","lastModifiedDate":"2024-02-06"},{"lineNumber":22,"author":{"gitId":"Lalelulilulela"},"content":" * @throws LeluException If the input is invalid or with the wrong format.","lastModifiedDate":"2024-02-06"},{"lineNumber":23,"author":{"gitId":"Lalelulilulela"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":24,"author":{"gitId":"Lalelulilulela"},"content":" @Override","lastModifiedDate":"2024-02-02"},{"lineNumber":25,"author":{"gitId":"Lalelulilulela"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage, String message) throws LeluException {","lastModifiedDate":"2024-02-02"},{"lineNumber":26,"author":{"gitId":"Lalelulilulela"},"content":" int i \u003d Integer.parseInt(message.split(\" \")[1]) - 1;","lastModifiedDate":"2024-02-02"},{"lineNumber":27,"author":{"gitId":"Lalelulilulela"},"content":" tasks.unmarkTask(i);","lastModifiedDate":"2024-02-02"},{"lineNumber":28,"author":{"gitId":"Lalelulilulela"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":29,"author":{"gitId":"Lalelulilulela"},"content":"}","lastModifiedDate":"2024-02-02"}],"authorContributionMap":{"Lalelulilulela":29}},{"path":"src/main/java/exceptions/InvalidFormatException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Lalelulilulela"},"content":"package exceptions;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"Lalelulilulela"},"content":"/**","lastModifiedDate":"2024-02-07"},{"lineNumber":4,"author":{"gitId":"Lalelulilulela"},"content":" * The InvalidFormatException class represents an exception that is thrown when a data format is","lastModifiedDate":"2024-02-07"},{"lineNumber":5,"author":{"gitId":"Lalelulilulela"},"content":" * incompatible with the expected format.","lastModifiedDate":"2024-02-07"},{"lineNumber":6,"author":{"gitId":"Lalelulilulela"},"content":" */","lastModifiedDate":"2024-02-07"},{"lineNumber":7,"author":{"gitId":"Lalelulilulela"},"content":"public class InvalidFormatException extends InvalidInputException {","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"Lalelulilulela"},"content":" public InvalidFormatException(String message) {","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"Lalelulilulela"},"content":" super(message);","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"Lalelulilulela"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":12,"author":{"gitId":"Lalelulilulela"},"content":" /**","lastModifiedDate":"2024-02-07"},{"lineNumber":13,"author":{"gitId":"Lalelulilulela"},"content":" * Throws InvalidFormatException with different error messages based on the task type.","lastModifiedDate":"2024-02-07"},{"lineNumber":14,"author":{"gitId":"Lalelulilulela"},"content":" *","lastModifiedDate":"2024-02-07"},{"lineNumber":15,"author":{"gitId":"Lalelulilulela"},"content":" * @param task type of task with the wrong format.","lastModifiedDate":"2024-02-07"},{"lineNumber":16,"author":{"gitId":"Lalelulilulela"},"content":" * @throws InvalidFormatException Thrown with different error messages depending on the task type.","lastModifiedDate":"2024-02-07"},{"lineNumber":17,"author":{"gitId":"Lalelulilulela"},"content":" */","lastModifiedDate":"2024-02-07"},{"lineNumber":18,"author":{"gitId":"Lalelulilulela"},"content":" public static void callInvalidFormatException(ErrorType task) throws InvalidFormatException {","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"Lalelulilulela"},"content":" switch (task) {","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"Lalelulilulela"},"content":" case TODO:","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"Lalelulilulela"},"content":" throw new InvalidFormatException(\" To record your task, enter:\\n\" +","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"Lalelulilulela"},"content":" \" todo \u003ctask\u003e\");","lastModifiedDate":"2024-01-24"},{"lineNumber":23,"author":{"gitId":"Lalelulilulela"},"content":" case DEADLINE:","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"Lalelulilulela"},"content":" throw new InvalidFormatException(\" To set a deadline, enter:\\n\" +","lastModifiedDate":"2024-01-24"},{"lineNumber":25,"author":{"gitId":"Lalelulilulela"},"content":" \" deadline \u003ctask\u003e /by \u003cYYYY-MM-DD HH:mm\u003e\\n\");","lastModifiedDate":"2024-02-06"},{"lineNumber":26,"author":{"gitId":"Lalelulilulela"},"content":" case EVENT:","lastModifiedDate":"2024-01-24"},{"lineNumber":27,"author":{"gitId":"Lalelulilulela"},"content":" throw new InvalidFormatException(\" To record an event, enter:\\n\" +","lastModifiedDate":"2024-01-24"},{"lineNumber":28,"author":{"gitId":"Lalelulilulela"},"content":" \" event \u003cevent\u003e /from \u003cdate and time\u003e /to \u003cdate and time\u003e\\n\");","lastModifiedDate":"2024-01-24"},{"lineNumber":29,"author":{"gitId":"Lalelulilulela"},"content":" case FIND:","lastModifiedDate":"2024-02-07"},{"lineNumber":30,"author":{"gitId":"Lalelulilulela"},"content":" throw new InvalidFormatException(\" To search for your task, enter\\n\" +","lastModifiedDate":"2024-02-07"},{"lineNumber":31,"author":{"gitId":"Lalelulilulela"},"content":" \" find \u003ckeyword\u003e\\n\");","lastModifiedDate":"2024-02-07"},{"lineNumber":32,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":33,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":34,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":35,"author":{"gitId":"Lalelulilulela"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":36,"author":{"gitId":"Lalelulilulela"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":37,"author":{"gitId":"Lalelulilulela"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"Lalelulilulela":37}},{"path":"src/main/java/exceptions/InvalidInputException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Lalelulilulela"},"content":"package exceptions;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"Lalelulilulela"},"content":"/**","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"Lalelulilulela"},"content":" * The InvalidInputException class represents an exception that is thrown when a data format is","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"Lalelulilulela"},"content":" * incompatible with the expected format.","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"Lalelulilulela"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"Lalelulilulela"},"content":"public class InvalidInputException extends LeluException{","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"Lalelulilulela"},"content":" public InvalidInputException(String message) {","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"Lalelulilulela"},"content":" super(message);","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"Lalelulilulela"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"Lalelulilulela"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"Lalelulilulela":12}},{"path":"src/main/java/exceptions/LeluException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Lalelulilulela"},"content":"package exceptions;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"Lalelulilulela"},"content":"/**","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"Lalelulilulela"},"content":" * The LeluExceptions class serves as the parent class for custom exceptions specific to the Lelu application.","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"Lalelulilulela"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"Lalelulilulela"},"content":"public class LeluException extends Exception {","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"Lalelulilulela"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":8,"author":{"gitId":"Lalelulilulela"},"content":" * Types of error from different tasks.","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"Lalelulilulela"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"Lalelulilulela"},"content":" public enum ErrorType {","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"Lalelulilulela"},"content":" TODO,","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"Lalelulilulela"},"content":" EVENT,","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"Lalelulilulela"},"content":" DEADLINE,","lastModifiedDate":"2024-02-06"},{"lineNumber":14,"author":{"gitId":"Lalelulilulela"},"content":" FIND","lastModifiedDate":"2024-02-06"},{"lineNumber":15,"author":{"gitId":"Lalelulilulela"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"Lalelulilulela"},"content":" public LeluException(String message) {","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"Lalelulilulela"},"content":" super(message);","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"Lalelulilulela"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"Lalelulilulela"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"Lalelulilulela":19}},{"path":"src/main/java/lelu/Lelu.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Lalelulilulela"},"content":"package lelu;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":3,"author":{"gitId":"Lalelulilulela"},"content":"import tasksstorage.Storage;","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"Lalelulilulela"},"content":"import tasksstorage.TaskList;","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"Lalelulilulela"},"content":"import ui.Ui;","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"Lalelulilulela"},"content":"import exceptions.*;","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"Lalelulilulela"},"content":"import commands.ByeCommand;","lastModifiedDate":"2024-02-06"},{"lineNumber":8,"author":{"gitId":"Lalelulilulela"},"content":"import commands.Command;","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"Lalelulilulela"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-02-01"},{"lineNumber":12,"author":{"gitId":"Lalelulilulela"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-21"},{"lineNumber":13,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":14,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":15,"author":{"gitId":"Lalelulilulela"},"content":"public class Lelu {","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":17,"author":{"gitId":"Lalelulilulela"},"content":" private static TaskList tasks;","lastModifiedDate":"2024-02-02"},{"lineNumber":18,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":19,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":20,"author":{"gitId":"Lalelulilulela"},"content":" private Lelu(String filePath) {","lastModifiedDate":"2024-02-02"},{"lineNumber":21,"author":{"gitId":"Lalelulilulela"},"content":" Ui ui \u003d new Ui();","lastModifiedDate":"2024-02-02"},{"lineNumber":22,"author":{"gitId":"Lalelulilulela"},"content":" ui.greet();","lastModifiedDate":"2024-02-01"},{"lineNumber":23,"author":{"gitId":"Lalelulilulela"},"content":" Lelu.tasks \u003d new TaskList();","lastModifiedDate":"2024-02-02"},{"lineNumber":24,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":25,"author":{"gitId":"Lalelulilulela"},"content":" Storage store \u003d new Storage(filePath);","lastModifiedDate":"2024-02-01"},{"lineNumber":26,"author":{"gitId":"Lalelulilulela"},"content":" while (true) {","lastModifiedDate":"2024-02-01"},{"lineNumber":27,"author":{"gitId":"Lalelulilulela"},"content":" try {","lastModifiedDate":"2024-02-01"},{"lineNumber":28,"author":{"gitId":"Lalelulilulela"},"content":" store.load(Lelu.tasks);","lastModifiedDate":"2024-02-01"},{"lineNumber":29,"author":{"gitId":"Lalelulilulela"},"content":" this.listen(ui, store);","lastModifiedDate":"2024-02-02"},{"lineNumber":30,"author":{"gitId":"Lalelulilulela"},"content":" store.save(Lelu.tasks);","lastModifiedDate":"2024-02-01"},{"lineNumber":31,"author":{"gitId":"Lalelulilulela"},"content":" break;","lastModifiedDate":"2024-02-01"},{"lineNumber":32,"author":{"gitId":"Lalelulilulela"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-02-01"},{"lineNumber":33,"author":{"gitId":"Lalelulilulela"},"content":" ui.dateFormatInstructions();","lastModifiedDate":"2024-02-01"},{"lineNumber":34,"author":{"gitId":"Lalelulilulela"},"content":" } catch (LeluException e) {","lastModifiedDate":"2024-02-01"},{"lineNumber":35,"author":{"gitId":"Lalelulilulela"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-02-01"},{"lineNumber":36,"author":{"gitId":"Lalelulilulela"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":37,"author":{"gitId":"Lalelulilulela"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":38,"author":{"gitId":"Lalelulilulela"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":39,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":40,"author":{"gitId":"Lalelulilulela"},"content":" public void listen(Ui ui, Storage store) throws LeluException {","lastModifiedDate":"2024-02-02"},{"lineNumber":41,"author":{"gitId":"Lalelulilulela"},"content":" Scanner sc \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-22"},{"lineNumber":42,"author":{"gitId":"Lalelulilulela"},"content":" while (true) {","lastModifiedDate":"2024-01-22"},{"lineNumber":43,"author":{"gitId":"Lalelulilulela"},"content":" String message \u003d sc.nextLine();","lastModifiedDate":"2024-02-02"},{"lineNumber":44,"author":{"gitId":"Lalelulilulela"},"content":" Command command \u003d Parser.parse(message, ui);","lastModifiedDate":"2024-02-02"},{"lineNumber":45,"author":{"gitId":"Lalelulilulela"},"content":" command.execute(tasks, ui, store, message);","lastModifiedDate":"2024-02-02"},{"lineNumber":46,"author":{"gitId":"Lalelulilulela"},"content":" if (command instanceof ByeCommand) {","lastModifiedDate":"2024-02-02"},{"lineNumber":47,"author":{"gitId":"Lalelulilulela"},"content":" break;","lastModifiedDate":"2024-01-22"},{"lineNumber":48,"author":{"gitId":"Lalelulilulela"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":49,"author":{"gitId":"Lalelulilulela"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":50,"author":{"gitId":"Lalelulilulela"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":51,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":52,"author":{"gitId":"Lalelulilulela"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-01-24"},{"lineNumber":53,"author":{"gitId":"Lalelulilulela"},"content":" new Lelu(\"./data/lelu.txt\");","lastModifiedDate":"2024-02-01"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":55,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":56,"author":{"gitId":"Lalelulilulela"},"content":"}","lastModifiedDate":"2024-01-24"},{"lineNumber":57,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"Lalelulilulela":56,"-":1}},{"path":"src/main/java/lelu/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Lalelulilulela"},"content":"package lelu;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"Lalelulilulela"},"content":"import commands.AddDeadlineCommand;","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"Lalelulilulela"},"content":"import commands.AddEventCommand;","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"Lalelulilulela"},"content":"import commands.AddToDoCommand;","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"Lalelulilulela"},"content":"import commands.ByeCommand;","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"Lalelulilulela"},"content":"import commands.Command;","lastModifiedDate":"2024-02-06"},{"lineNumber":8,"author":{"gitId":"Lalelulilulela"},"content":"import commands.DeleteCommand;","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"Lalelulilulela"},"content":"import commands.FindCommand;","lastModifiedDate":"2024-02-07"},{"lineNumber":10,"author":{"gitId":"Lalelulilulela"},"content":"import commands.ListCommand;","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"Lalelulilulela"},"content":"import commands.MarkCommand;","lastModifiedDate":"2024-02-06"},{"lineNumber":12,"author":{"gitId":"Lalelulilulela"},"content":"import commands.UnmarkCommand;","lastModifiedDate":"2024-02-06"},{"lineNumber":13,"author":{"gitId":"Lalelulilulela"},"content":"import exceptions.InvalidInputException;","lastModifiedDate":"2024-02-06"},{"lineNumber":14,"author":{"gitId":"Lalelulilulela"},"content":"import exceptions.LeluException;","lastModifiedDate":"2024-02-06"},{"lineNumber":15,"author":{"gitId":"Lalelulilulela"},"content":"import ui.Ui;","lastModifiedDate":"2024-02-06"},{"lineNumber":16,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":17,"author":{"gitId":"Lalelulilulela"},"content":"public class Parser {","lastModifiedDate":"2024-02-02"},{"lineNumber":18,"author":{"gitId":"Lalelulilulela"},"content":" public static Command parse(String message, Ui ui) throws LeluException {","lastModifiedDate":"2024-02-02"},{"lineNumber":19,"author":{"gitId":"Lalelulilulela"},"content":" if (message.equals(\"bye\")) {","lastModifiedDate":"2024-02-02"},{"lineNumber":20,"author":{"gitId":"Lalelulilulela"},"content":" return new ByeCommand();","lastModifiedDate":"2024-02-02"},{"lineNumber":21,"author":{"gitId":"Lalelulilulela"},"content":" } else if (message.equals(\"list\")) {","lastModifiedDate":"2024-02-02"},{"lineNumber":22,"author":{"gitId":"Lalelulilulela"},"content":" return new ListCommand();","lastModifiedDate":"2024-02-02"},{"lineNumber":23,"author":{"gitId":"Lalelulilulela"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":24,"author":{"gitId":"Lalelulilulela"},"content":" return switch (message.split(\" \")[0]) {","lastModifiedDate":"2024-02-07"},{"lineNumber":25,"author":{"gitId":"Lalelulilulela"},"content":" case \"mark\" -\u003e new MarkCommand();","lastModifiedDate":"2024-02-07"},{"lineNumber":26,"author":{"gitId":"Lalelulilulela"},"content":" case \"unmark\" -\u003e new UnmarkCommand();","lastModifiedDate":"2024-02-07"},{"lineNumber":27,"author":{"gitId":"Lalelulilulela"},"content":" case \"delete\" -\u003e new DeleteCommand();","lastModifiedDate":"2024-02-07"},{"lineNumber":28,"author":{"gitId":"Lalelulilulela"},"content":" case \"todo\" -\u003e new AddToDoCommand();","lastModifiedDate":"2024-02-07"},{"lineNumber":29,"author":{"gitId":"Lalelulilulela"},"content":" case \"deadline\" -\u003e new AddDeadlineCommand();","lastModifiedDate":"2024-02-07"},{"lineNumber":30,"author":{"gitId":"Lalelulilulela"},"content":" case \"event\" -\u003e new AddEventCommand();","lastModifiedDate":"2024-02-07"},{"lineNumber":31,"author":{"gitId":"Lalelulilulela"},"content":" case \"find\" -\u003e new FindCommand();","lastModifiedDate":"2024-02-07"},{"lineNumber":32,"author":{"gitId":"Lalelulilulela"},"content":" default -\u003e throw new InvalidInputException(ui.showInstructions());","lastModifiedDate":"2024-02-07"},{"lineNumber":33,"author":{"gitId":"Lalelulilulela"},"content":" };","lastModifiedDate":"2024-02-07"},{"lineNumber":34,"author":{"gitId":"Lalelulilulela"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":35,"author":{"gitId":"Lalelulilulela"},"content":"}","lastModifiedDate":"2024-02-02"}],"authorContributionMap":{"Lalelulilulela":35}},{"path":"src/main/java/tasks/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Lalelulilulela"},"content":"package tasks;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"Lalelulilulela"},"content":"import exceptions.InvalidFormatException;","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"Lalelulilulela"},"content":"import exceptions.InvalidInputException;","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"Lalelulilulela"},"content":"import exceptions.LeluException;","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"Lalelulilulela"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-02-01"},{"lineNumber":8,"author":{"gitId":"Lalelulilulela"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-02-01"},{"lineNumber":9,"author":{"gitId":"Lalelulilulela"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-02-01"},{"lineNumber":10,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":11,"author":{"gitId":"Lalelulilulela"},"content":"/**","lastModifiedDate":"2024-02-06"},{"lineNumber":12,"author":{"gitId":"Lalelulilulela"},"content":" * This class represents a deadline task by encapsulating information about a specific deadline,","lastModifiedDate":"2024-02-06"},{"lineNumber":13,"author":{"gitId":"Lalelulilulela"},"content":" * including the description, due date and time.","lastModifiedDate":"2024-02-06"},{"lineNumber":14,"author":{"gitId":"Lalelulilulela"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":15,"author":{"gitId":"Lalelulilulela"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"Lalelulilulela"},"content":" protected LocalDateTime deadline;","lastModifiedDate":"2024-02-01"},{"lineNumber":17,"author":{"gitId":"Lalelulilulela"},"content":" private DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd HH:mm\");","lastModifiedDate":"2024-02-01"},{"lineNumber":18,"author":{"gitId":"Lalelulilulela"},"content":" public Deadline(String taskName, String deadline) throws DateTimeParseException {","lastModifiedDate":"2024-02-01"},{"lineNumber":19,"author":{"gitId":"Lalelulilulela"},"content":" super(taskName);","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"Lalelulilulela"},"content":" this.deadline \u003d LocalDateTime.parse(deadline, formatter);","lastModifiedDate":"2024-02-01"},{"lineNumber":21,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":22,"author":{"gitId":"Lalelulilulela"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":23,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"Lalelulilulela"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":25,"author":{"gitId":"Lalelulilulela"},"content":" * A factory method which creates a Deadline object using the user input.","lastModifiedDate":"2024-02-06"},{"lineNumber":26,"author":{"gitId":"Lalelulilulela"},"content":" *","lastModifiedDate":"2024-02-06"},{"lineNumber":27,"author":{"gitId":"Lalelulilulela"},"content":" * @param input User input which starts with \"deadline\".","lastModifiedDate":"2024-02-06"},{"lineNumber":28,"author":{"gitId":"Lalelulilulela"},"content":" * @return A Deadline object with the specified name and due date and time.","lastModifiedDate":"2024-02-06"},{"lineNumber":29,"author":{"gitId":"Lalelulilulela"},"content":" * @throws InvalidFormatException When the description of task or due date and time is empty in the user input.","lastModifiedDate":"2024-02-06"},{"lineNumber":30,"author":{"gitId":"Lalelulilulela"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":31,"author":{"gitId":"Lalelulilulela"},"content":" public static Deadline DeadlineOf(String input) throws InvalidFormatException {","lastModifiedDate":"2024-02-06"},{"lineNumber":32,"author":{"gitId":"Lalelulilulela"},"content":" if (input.replaceAll(\" \", \"\").equals(\"deadline\")) {","lastModifiedDate":"2024-01-24"},{"lineNumber":33,"author":{"gitId":"Lalelulilulela"},"content":" InvalidFormatException.callInvalidFormatException(LeluException.ErrorType.DEADLINE);","lastModifiedDate":"2024-01-24"},{"lineNumber":34,"author":{"gitId":"Lalelulilulela"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":35,"author":{"gitId":"Lalelulilulela"},"content":" String[] t \u003d input.replaceFirst(\"deadline \", \"\").split(\"/by \");","lastModifiedDate":"2024-01-24"},{"lineNumber":36,"author":{"gitId":"Lalelulilulela"},"content":" if (t.length \u003c 2) {","lastModifiedDate":"2024-01-24"},{"lineNumber":37,"author":{"gitId":"Lalelulilulela"},"content":" InvalidFormatException.callInvalidFormatException(LeluException.ErrorType.DEADLINE);","lastModifiedDate":"2024-01-24"},{"lineNumber":38,"author":{"gitId":"Lalelulilulela"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":39,"author":{"gitId":"Lalelulilulela"},"content":" return new Deadline(t[0].replaceAll(\"\\\\s+$\", \"\"), t[1]);","lastModifiedDate":"2024-02-06"},{"lineNumber":40,"author":{"gitId":"Lalelulilulela"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":41,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":42,"author":{"gitId":"Lalelulilulela"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":43,"author":{"gitId":"Lalelulilulela"},"content":" * Formats the details of the Deadline object as a String to be written to a text file.","lastModifiedDate":"2024-02-06"},{"lineNumber":44,"author":{"gitId":"Lalelulilulela"},"content":" *","lastModifiedDate":"2024-02-06"},{"lineNumber":45,"author":{"gitId":"Lalelulilulela"},"content":" * @return A String containing the description and due date and time of a Deadline object.","lastModifiedDate":"2024-02-06"},{"lineNumber":46,"author":{"gitId":"Lalelulilulela"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":47,"author":{"gitId":"Lalelulilulela"},"content":" @Override","lastModifiedDate":"2024-01-31"},{"lineNumber":48,"author":{"gitId":"Lalelulilulela"},"content":" public String saveFormat() {","lastModifiedDate":"2024-01-31"},{"lineNumber":49,"author":{"gitId":"Lalelulilulela"},"content":" int check \u003d this.isCompleted ? 1 : 0;","lastModifiedDate":"2024-02-06"},{"lineNumber":50,"author":{"gitId":"Lalelulilulela"},"content":" return String.format(\"D | %d | %s | %s\\n\", check, this.taskName,","lastModifiedDate":"2024-02-01"},{"lineNumber":51,"author":{"gitId":"Lalelulilulela"},"content":" this.deadline.format(formatter));","lastModifiedDate":"2024-02-01"},{"lineNumber":52,"author":{"gitId":"Lalelulilulela"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":53,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":54,"author":{"gitId":"Lalelulilulela"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":55,"author":{"gitId":"Lalelulilulela"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":56,"author":{"gitId":"Lalelulilulela"},"content":" return String.format(\"[D]%s (by: %s)\", super.toString(),","lastModifiedDate":"2024-02-01"},{"lineNumber":57,"author":{"gitId":"Lalelulilulela"},"content":" this.deadline.format(DateTimeFormatter.ofPattern(\"d MMM yyyy hh:mma\")));","lastModifiedDate":"2024-02-01"},{"lineNumber":58,"author":{"gitId":"Lalelulilulela"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":59,"author":{"gitId":"Lalelulilulela"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"Lalelulilulela":59}},{"path":"src/main/java/tasks/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Lalelulilulela"},"content":"package tasks;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"Lalelulilulela"},"content":"import exceptions.InvalidFormatException;","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"Lalelulilulela"},"content":"import exceptions.LeluException;","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"Lalelulilulela"},"content":"/**","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"Lalelulilulela"},"content":" * This class represents an Event task by encapsulating information about a specific event,","lastModifiedDate":"2024-02-06"},{"lineNumber":8,"author":{"gitId":"Lalelulilulela"},"content":" * including the description, start and end timings.","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"Lalelulilulela"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"Lalelulilulela"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"Lalelulilulela"},"content":" protected String from;","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"Lalelulilulela"},"content":" protected String to;","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"Lalelulilulela"},"content":" public Event(String taskName, String from, String to) {","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"Lalelulilulela"},"content":" super(taskName);","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"Lalelulilulela"},"content":" this.from \u003d from;","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"Lalelulilulela"},"content":" this.to \u003d to;","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"Lalelulilulela"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"Lalelulilulela"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":21,"author":{"gitId":"Lalelulilulela"},"content":" * A factory method which creates an Event object using the user input.","lastModifiedDate":"2024-02-06"},{"lineNumber":22,"author":{"gitId":"Lalelulilulela"},"content":" *","lastModifiedDate":"2024-02-06"},{"lineNumber":23,"author":{"gitId":"Lalelulilulela"},"content":" * @param input User input which starts with \"event\".","lastModifiedDate":"2024-02-06"},{"lineNumber":24,"author":{"gitId":"Lalelulilulela"},"content":" * @return An Event object with the specified name and start and end timings.","lastModifiedDate":"2024-02-06"},{"lineNumber":25,"author":{"gitId":"Lalelulilulela"},"content":" * @throws InvalidFormatException When the description of event, or start and end times, is empty in the user input.","lastModifiedDate":"2024-02-06"},{"lineNumber":26,"author":{"gitId":"Lalelulilulela"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":27,"author":{"gitId":"Lalelulilulela"},"content":" public static Event EventOf(String input) throws InvalidFormatException {","lastModifiedDate":"2024-01-24"},{"lineNumber":28,"author":{"gitId":"Lalelulilulela"},"content":" if (input.replaceAll(\" \", \"\").equals(\"event\")) {","lastModifiedDate":"2024-01-24"},{"lineNumber":29,"author":{"gitId":"Lalelulilulela"},"content":" InvalidFormatException.callInvalidFormatException(LeluException.ErrorType.EVENT);","lastModifiedDate":"2024-01-24"},{"lineNumber":30,"author":{"gitId":"Lalelulilulela"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":31,"author":{"gitId":"Lalelulilulela"},"content":" String[] t \u003d input.replaceFirst(\"event \", \"\").split(\"/from \");","lastModifiedDate":"2024-01-24"},{"lineNumber":32,"author":{"gitId":"Lalelulilulela"},"content":" if (t.length \u003c 2) {","lastModifiedDate":"2024-01-24"},{"lineNumber":33,"author":{"gitId":"Lalelulilulela"},"content":" InvalidFormatException.callInvalidFormatException(LeluException.ErrorType.EVENT);","lastModifiedDate":"2024-01-24"},{"lineNumber":34,"author":{"gitId":"Lalelulilulela"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":35,"author":{"gitId":"Lalelulilulela"},"content":" String[] frTo \u003d t[1].split(\"/to \");","lastModifiedDate":"2024-01-24"},{"lineNumber":36,"author":{"gitId":"Lalelulilulela"},"content":" if (frTo.length \u003c 2) {","lastModifiedDate":"2024-01-24"},{"lineNumber":37,"author":{"gitId":"Lalelulilulela"},"content":" InvalidFormatException.callInvalidFormatException(LeluException.ErrorType.EVENT);","lastModifiedDate":"2024-01-24"},{"lineNumber":38,"author":{"gitId":"Lalelulilulela"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":39,"author":{"gitId":"Lalelulilulela"},"content":" return new Event(t[0], frTo[0], frTo[1]);","lastModifiedDate":"2024-01-24"},{"lineNumber":40,"author":{"gitId":"Lalelulilulela"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":41,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":42,"author":{"gitId":"Lalelulilulela"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":43,"author":{"gitId":"Lalelulilulela"},"content":" * Formats the details of the Event object as a String to be written to a text file.","lastModifiedDate":"2024-02-06"},{"lineNumber":44,"author":{"gitId":"Lalelulilulela"},"content":" *","lastModifiedDate":"2024-02-06"},{"lineNumber":45,"author":{"gitId":"Lalelulilulela"},"content":" * @return A String containing the description and start and end timings of an Event object.","lastModifiedDate":"2024-02-06"},{"lineNumber":46,"author":{"gitId":"Lalelulilulela"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":47,"author":{"gitId":"Lalelulilulela"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":48,"author":{"gitId":"Lalelulilulela"},"content":" public String saveFormat() {","lastModifiedDate":"2024-01-31"},{"lineNumber":49,"author":{"gitId":"Lalelulilulela"},"content":" int check \u003d this.isCompleted ? 1 : 0;","lastModifiedDate":"2024-02-06"},{"lineNumber":50,"author":{"gitId":"Lalelulilulela"},"content":" return String.format(\"E | %d | %s | %s | %s\\n\", check, this.taskName, this.from, this.to);","lastModifiedDate":"2024-01-31"},{"lineNumber":51,"author":{"gitId":"Lalelulilulela"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":52,"author":{"gitId":"Lalelulilulela"},"content":" @Override","lastModifiedDate":"2024-01-31"},{"lineNumber":53,"author":{"gitId":"Lalelulilulela"},"content":" public String toString () {","lastModifiedDate":"2024-01-24"},{"lineNumber":54,"author":{"gitId":"Lalelulilulela"},"content":" return String.format(\"[E]%s (From: %s To: %s)\", super.toString(), this.from, this.to);","lastModifiedDate":"2024-01-24"},{"lineNumber":55,"author":{"gitId":"Lalelulilulela"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":56,"author":{"gitId":"Lalelulilulela"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"Lalelulilulela":56}},{"path":"src/main/java/tasks/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Lalelulilulela"},"content":"package tasks;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"Lalelulilulela"},"content":"/**","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"Lalelulilulela"},"content":" * This is an abstract class representing a task by encapsulating information, such as the description","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"Lalelulilulela"},"content":" * of the task, and performing basic functions involving the task.","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"Lalelulilulela"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":8,"author":{"gitId":"Lalelulilulela"},"content":"public abstract class Task {","lastModifiedDate":"2024-01-31"},{"lineNumber":9,"author":{"gitId":"Lalelulilulela"},"content":" public final String taskName;","lastModifiedDate":"2024-02-07"},{"lineNumber":10,"author":{"gitId":"Lalelulilulela"},"content":" protected boolean isCompleted;","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"Lalelulilulela"},"content":" public Task(String task) {","lastModifiedDate":"2024-01-22"},{"lineNumber":13,"author":{"gitId":"Lalelulilulela"},"content":" this.taskName \u003d task;","lastModifiedDate":"2024-01-31"},{"lineNumber":14,"author":{"gitId":"Lalelulilulela"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":15,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":16,"author":{"gitId":"Lalelulilulela"},"content":" public void markTask() {","lastModifiedDate":"2024-01-22"},{"lineNumber":17,"author":{"gitId":"Lalelulilulela"},"content":" this.isCompleted \u003d true;","lastModifiedDate":"2024-02-06"},{"lineNumber":18,"author":{"gitId":"Lalelulilulela"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":19,"author":{"gitId":"Lalelulilulela"},"content":" public void unmarkTask() {","lastModifiedDate":"2024-01-22"},{"lineNumber":20,"author":{"gitId":"Lalelulilulela"},"content":" this.isCompleted \u003d false;","lastModifiedDate":"2024-02-06"},{"lineNumber":21,"author":{"gitId":"Lalelulilulela"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":22,"author":{"gitId":"Lalelulilulela"},"content":" public abstract String saveFormat();","lastModifiedDate":"2024-01-31"},{"lineNumber":23,"author":{"gitId":"Lalelulilulela"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":24,"author":{"gitId":"Lalelulilulela"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":25,"author":{"gitId":"Lalelulilulela"},"content":" String check \u003d isCompleted ? \"[X]\" : \"[ ]\";","lastModifiedDate":"2024-02-06"},{"lineNumber":26,"author":{"gitId":"Lalelulilulela"},"content":" return check + \" \" + this.taskName;","lastModifiedDate":"2024-01-31"},{"lineNumber":27,"author":{"gitId":"Lalelulilulela"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":28,"author":{"gitId":"Lalelulilulela"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"Lalelulilulela":28}},{"path":"src/main/java/tasks/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Lalelulilulela"},"content":"package tasks;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"Lalelulilulela"},"content":"import exceptions.InvalidFormatException;","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"Lalelulilulela"},"content":"import exceptions.LeluException;","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"Lalelulilulela"},"content":"/**","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"Lalelulilulela"},"content":" * This class represents a ToDo task by encapsulating information about a specific task,","lastModifiedDate":"2024-02-06"},{"lineNumber":8,"author":{"gitId":"Lalelulilulela"},"content":" * including the description of the task.","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"Lalelulilulela"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"Lalelulilulela"},"content":"public class ToDo extends Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"Lalelulilulela"},"content":" public ToDo(String taskName) {","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"Lalelulilulela"},"content":" super(taskName);","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"Lalelulilulela"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"Lalelulilulela"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":16,"author":{"gitId":"Lalelulilulela"},"content":" * A factory method which creates a ToDo object using the user input.","lastModifiedDate":"2024-02-06"},{"lineNumber":17,"author":{"gitId":"Lalelulilulela"},"content":" *","lastModifiedDate":"2024-02-06"},{"lineNumber":18,"author":{"gitId":"Lalelulilulela"},"content":" * @param input User input which starts with \"ToDo\".","lastModifiedDate":"2024-02-06"},{"lineNumber":19,"author":{"gitId":"Lalelulilulela"},"content":" * @return A ToDo object with the specified name.","lastModifiedDate":"2024-02-06"},{"lineNumber":20,"author":{"gitId":"Lalelulilulela"},"content":" * @throws InvalidFormatException When the description of task is empty in the user input.","lastModifiedDate":"2024-02-06"},{"lineNumber":21,"author":{"gitId":"Lalelulilulela"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":22,"author":{"gitId":"Lalelulilulela"},"content":" public static ToDo ToDoOf(String input) throws InvalidFormatException {","lastModifiedDate":"2024-01-24"},{"lineNumber":23,"author":{"gitId":"Lalelulilulela"},"content":" if (input.replaceAll(\" \", \"\").equals(\"todo\")) {","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"Lalelulilulela"},"content":" InvalidFormatException.callInvalidFormatException(LeluException.ErrorType.TODO);","lastModifiedDate":"2024-01-24"},{"lineNumber":25,"author":{"gitId":"Lalelulilulela"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":26,"author":{"gitId":"Lalelulilulela"},"content":" String t \u003d input.replaceFirst(\"todo \", \"\");","lastModifiedDate":"2024-01-24"},{"lineNumber":27,"author":{"gitId":"Lalelulilulela"},"content":" return new ToDo(t);","lastModifiedDate":"2024-01-24"},{"lineNumber":28,"author":{"gitId":"Lalelulilulela"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":29,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":30,"author":{"gitId":"Lalelulilulela"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":31,"author":{"gitId":"Lalelulilulela"},"content":" * Formats the details of the ToDo object as a String to be written to a text file.","lastModifiedDate":"2024-02-06"},{"lineNumber":32,"author":{"gitId":"Lalelulilulela"},"content":" *","lastModifiedDate":"2024-02-06"},{"lineNumber":33,"author":{"gitId":"Lalelulilulela"},"content":" * @return A String containing the description of the ToDo object.","lastModifiedDate":"2024-02-06"},{"lineNumber":34,"author":{"gitId":"Lalelulilulela"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":35,"author":{"gitId":"Lalelulilulela"},"content":" public String saveFormat() {","lastModifiedDate":"2024-01-31"},{"lineNumber":36,"author":{"gitId":"Lalelulilulela"},"content":" int check \u003d this.isCompleted ? 1 : 0;","lastModifiedDate":"2024-02-06"},{"lineNumber":37,"author":{"gitId":"Lalelulilulela"},"content":" return String.format(\"T | %d | %s \\n\", check, this.taskName);","lastModifiedDate":"2024-01-31"},{"lineNumber":38,"author":{"gitId":"Lalelulilulela"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":39,"author":{"gitId":"Lalelulilulela"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":40,"author":{"gitId":"Lalelulilulela"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":41,"author":{"gitId":"Lalelulilulela"},"content":" return String.format(\"[T]%s\", super.toString());","lastModifiedDate":"2024-01-24"},{"lineNumber":42,"author":{"gitId":"Lalelulilulela"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":43,"author":{"gitId":"Lalelulilulela"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"Lalelulilulela":43}},{"path":"src/main/java/tasksstorage/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Lalelulilulela"},"content":"package tasksstorage;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"Lalelulilulela"},"content":"import tasks.Deadline;","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"Lalelulilulela"},"content":"import tasks.Event;","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"Lalelulilulela"},"content":"import tasks.Task;","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"Lalelulilulela"},"content":"import tasks.ToDo;","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"Lalelulilulela"},"content":"import java.io.File;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"Lalelulilulela"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"Lalelulilulela"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"Lalelulilulela"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"Lalelulilulela"},"content":"public class Storage {","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"Lalelulilulela"},"content":" private File file;","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"Lalelulilulela"},"content":" public Storage(String filePath) {","lastModifiedDate":"2024-02-02"},{"lineNumber":16,"author":{"gitId":"Lalelulilulela"},"content":" this.file \u003d new File(filePath);","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"Lalelulilulela"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"Lalelulilulela"},"content":" if (!file.exists()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"Lalelulilulela"},"content":" file.getParentFile().mkdirs();","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"Lalelulilulela"},"content":" file.createNewFile();","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"Lalelulilulela"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"Lalelulilulela"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"Lalelulilulela"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"Lalelulilulela"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"Lalelulilulela"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"Lalelulilulela"},"content":" public void save(TaskList tasks) {","lastModifiedDate":"2024-02-02"},{"lineNumber":28,"author":{"gitId":"Lalelulilulela"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"Lalelulilulela"},"content":" tasks.writeToFile(this.file);","lastModifiedDate":"2024-02-02"},{"lineNumber":30,"author":{"gitId":"Lalelulilulela"},"content":" } catch (IOException ioException) {","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"Lalelulilulela"},"content":" System.out.println(ioException.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"Lalelulilulela"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"Lalelulilulela"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"Lalelulilulela"},"content":" public void load(TaskList tasks) {","lastModifiedDate":"2024-02-02"},{"lineNumber":36,"author":{"gitId":"Lalelulilulela"},"content":" try {","lastModifiedDate":"2024-01-31"},{"lineNumber":37,"author":{"gitId":"Lalelulilulela"},"content":" Scanner sc \u003d new Scanner(this.file);","lastModifiedDate":"2024-01-31"},{"lineNumber":38,"author":{"gitId":"Lalelulilulela"},"content":" while(sc.hasNext()) {","lastModifiedDate":"2024-01-31"},{"lineNumber":39,"author":{"gitId":"Lalelulilulela"},"content":" String s \u003d sc.nextLine();","lastModifiedDate":"2024-01-31"},{"lineNumber":40,"author":{"gitId":"Lalelulilulela"},"content":" String[] task \u003d s.split(\" \\\\| \");","lastModifiedDate":"2024-01-31"},{"lineNumber":41,"author":{"gitId":"Lalelulilulela"},"content":" Task t;","lastModifiedDate":"2024-02-02"},{"lineNumber":42,"author":{"gitId":"Lalelulilulela"},"content":" switch(task[0]) {","lastModifiedDate":"2024-01-31"},{"lineNumber":43,"author":{"gitId":"Lalelulilulela"},"content":" case \"T\":","lastModifiedDate":"2024-01-31"},{"lineNumber":44,"author":{"gitId":"Lalelulilulela"},"content":" t \u003d new ToDo(task[2]);","lastModifiedDate":"2024-01-31"},{"lineNumber":45,"author":{"gitId":"Lalelulilulela"},"content":" break;","lastModifiedDate":"2024-01-31"},{"lineNumber":46,"author":{"gitId":"Lalelulilulela"},"content":" case \"D\":","lastModifiedDate":"2024-01-31"},{"lineNumber":47,"author":{"gitId":"Lalelulilulela"},"content":" t \u003d new Deadline(task[2], task[3]);","lastModifiedDate":"2024-01-31"},{"lineNumber":48,"author":{"gitId":"Lalelulilulela"},"content":" break;","lastModifiedDate":"2024-01-31"},{"lineNumber":49,"author":{"gitId":"Lalelulilulela"},"content":" default:","lastModifiedDate":"2024-01-31"},{"lineNumber":50,"author":{"gitId":"Lalelulilulela"},"content":" t \u003d new Event(task[2], task[3], task[4]);","lastModifiedDate":"2024-01-31"},{"lineNumber":51,"author":{"gitId":"Lalelulilulela"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":52,"author":{"gitId":"Lalelulilulela"},"content":" if (task[1].equals(\"1\")) {","lastModifiedDate":"2024-01-31"},{"lineNumber":53,"author":{"gitId":"Lalelulilulela"},"content":" t.markTask();","lastModifiedDate":"2024-01-31"},{"lineNumber":54,"author":{"gitId":"Lalelulilulela"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":55,"author":{"gitId":"Lalelulilulela"},"content":" tasks.loadTask(t);","lastModifiedDate":"2024-02-04"},{"lineNumber":56,"author":{"gitId":"Lalelulilulela"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":57,"author":{"gitId":"Lalelulilulela"},"content":" FileWriter fw \u003d new FileWriter(this.file);","lastModifiedDate":"2024-01-31"},{"lineNumber":58,"author":{"gitId":"Lalelulilulela"},"content":" fw.close();","lastModifiedDate":"2024-01-31"},{"lineNumber":59,"author":{"gitId":"Lalelulilulela"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-31"},{"lineNumber":60,"author":{"gitId":"Lalelulilulela"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-31"},{"lineNumber":61,"author":{"gitId":"Lalelulilulela"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":62,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":63,"author":{"gitId":"Lalelulilulela"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":64,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":65,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":66,"author":{"gitId":"Lalelulilulela"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":67,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":68,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"Lalelulilulela":68}},{"path":"src/main/java/tasksstorage/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Lalelulilulela"},"content":"package tasksstorage;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"Lalelulilulela"},"content":"import tasks.Task;","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":5,"author":{"gitId":"Lalelulilulela"},"content":"import java.io.File;","lastModifiedDate":"2024-02-02"},{"lineNumber":6,"author":{"gitId":"Lalelulilulela"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-02-02"},{"lineNumber":7,"author":{"gitId":"Lalelulilulela"},"content":"import java.io.IOException;","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"Lalelulilulela"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-02-02"},{"lineNumber":9,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":10,"author":{"gitId":"Lalelulilulela"},"content":"public class TaskList {","lastModifiedDate":"2024-02-02"},{"lineNumber":11,"author":{"gitId":"Lalelulilulela"},"content":" private ArrayList\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-02-02"},{"lineNumber":12,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":13,"author":{"gitId":"Lalelulilulela"},"content":" public void addTask(Task t) {","lastModifiedDate":"2024-02-02"},{"lineNumber":14,"author":{"gitId":"Lalelulilulela"},"content":" this.tasks.add(t);","lastModifiedDate":"2024-02-02"},{"lineNumber":15,"author":{"gitId":"Lalelulilulela"},"content":" System.out.printf(\" Ok! I have added your task:\\n %s\\n You have %d task(s) in the \" +","lastModifiedDate":"2024-02-02"},{"lineNumber":16,"author":{"gitId":"Lalelulilulela"},"content":" \"list now.\\n\\n\", t.toString(), this.tasks.size());","lastModifiedDate":"2024-02-02"},{"lineNumber":17,"author":{"gitId":"Lalelulilulela"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":18,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":19,"author":{"gitId":"Lalelulilulela"},"content":" public void loadTask(Task t) {","lastModifiedDate":"2024-02-04"},{"lineNumber":20,"author":{"gitId":"Lalelulilulela"},"content":" this.tasks.add(t);","lastModifiedDate":"2024-02-04"},{"lineNumber":21,"author":{"gitId":"Lalelulilulela"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":22,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":23,"author":{"gitId":"Lalelulilulela"},"content":" public void removeTask(int i) {","lastModifiedDate":"2024-02-02"},{"lineNumber":24,"author":{"gitId":"Lalelulilulela"},"content":" Task t \u003d this.tasks.get(i);","lastModifiedDate":"2024-02-02"},{"lineNumber":25,"author":{"gitId":"Lalelulilulela"},"content":" this.tasks.remove(i);","lastModifiedDate":"2024-02-02"},{"lineNumber":26,"author":{"gitId":"Lalelulilulela"},"content":" System.out.printf(\" Ok, I have removed your task:\\n %s\\n You have %d task(s) in the \" +","lastModifiedDate":"2024-02-02"},{"lineNumber":27,"author":{"gitId":"Lalelulilulela"},"content":" \"list now.\\n\\n\", t.toString(), this.tasks.size());","lastModifiedDate":"2024-02-02"},{"lineNumber":28,"author":{"gitId":"Lalelulilulela"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":29,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":30,"author":{"gitId":"Lalelulilulela"},"content":" public void markTask(int i) {","lastModifiedDate":"2024-02-02"},{"lineNumber":31,"author":{"gitId":"Lalelulilulela"},"content":" this.tasks.get(i).markTask();","lastModifiedDate":"2024-02-02"},{"lineNumber":32,"author":{"gitId":"Lalelulilulela"},"content":" System.out.printf(\" Great job completing your task!\\n %s\\n\\n\",","lastModifiedDate":"2024-02-02"},{"lineNumber":33,"author":{"gitId":"Lalelulilulela"},"content":" this.tasks.get(i).toString());","lastModifiedDate":"2024-02-02"},{"lineNumber":34,"author":{"gitId":"Lalelulilulela"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":35,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":36,"author":{"gitId":"Lalelulilulela"},"content":" public void unmarkTask(int i) {","lastModifiedDate":"2024-02-02"},{"lineNumber":37,"author":{"gitId":"Lalelulilulela"},"content":" this.tasks.get(i).unmarkTask();","lastModifiedDate":"2024-02-02"},{"lineNumber":38,"author":{"gitId":"Lalelulilulela"},"content":" System.out.printf(\" Don\u0027t forget to complete your task soon...\\n %s\\n\\n\",","lastModifiedDate":"2024-02-02"},{"lineNumber":39,"author":{"gitId":"Lalelulilulela"},"content":" this.tasks.get(i).toString());","lastModifiedDate":"2024-02-02"},{"lineNumber":40,"author":{"gitId":"Lalelulilulela"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":41,"author":{"gitId":"Lalelulilulela"},"content":" public void writeToFile(File file) throws IOException {","lastModifiedDate":"2024-02-02"},{"lineNumber":42,"author":{"gitId":"Lalelulilulela"},"content":" FileWriter fw \u003d new FileWriter(file);","lastModifiedDate":"2024-02-02"},{"lineNumber":43,"author":{"gitId":"Lalelulilulela"},"content":" for (Task task : this.tasks) {","lastModifiedDate":"2024-02-02"},{"lineNumber":44,"author":{"gitId":"Lalelulilulela"},"content":" fw.write(task.saveFormat());","lastModifiedDate":"2024-02-02"},{"lineNumber":45,"author":{"gitId":"Lalelulilulela"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":46,"author":{"gitId":"Lalelulilulela"},"content":" fw.close();","lastModifiedDate":"2024-02-02"},{"lineNumber":47,"author":{"gitId":"Lalelulilulela"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":48,"author":{"gitId":"Lalelulilulela"},"content":" public TaskList filter(String keyword) {","lastModifiedDate":"2024-02-06"},{"lineNumber":49,"author":{"gitId":"Lalelulilulela"},"content":" TaskList res \u003d new TaskList();","lastModifiedDate":"2024-02-06"},{"lineNumber":50,"author":{"gitId":"Lalelulilulela"},"content":" for (Task task : this.tasks) {","lastModifiedDate":"2024-02-06"},{"lineNumber":51,"author":{"gitId":"Lalelulilulela"},"content":" if (task.taskName.toLowerCase().contains(keyword.toLowerCase())) {","lastModifiedDate":"2024-02-06"},{"lineNumber":52,"author":{"gitId":"Lalelulilulela"},"content":" res.loadTask(task);","lastModifiedDate":"2024-02-06"},{"lineNumber":53,"author":{"gitId":"Lalelulilulela"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":54,"author":{"gitId":"Lalelulilulela"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":55,"author":{"gitId":"Lalelulilulela"},"content":" return res;","lastModifiedDate":"2024-02-06"},{"lineNumber":56,"author":{"gitId":"Lalelulilulela"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":57,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":58,"author":{"gitId":"Lalelulilulela"},"content":" @Override","lastModifiedDate":"2024-02-02"},{"lineNumber":59,"author":{"gitId":"Lalelulilulela"},"content":" public String toString() {","lastModifiedDate":"2024-02-02"},{"lineNumber":60,"author":{"gitId":"Lalelulilulela"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2024-02-02"},{"lineNumber":61,"author":{"gitId":"Lalelulilulela"},"content":" for (int i \u003d 0; i \u003c this.tasks.size(); i++) {","lastModifiedDate":"2024-02-02"},{"lineNumber":62,"author":{"gitId":"Lalelulilulela"},"content":" sb.append(String.format(\" %d.%s\\n\", i + 1, this.tasks.get(i).toString()));","lastModifiedDate":"2024-02-02"},{"lineNumber":63,"author":{"gitId":"Lalelulilulela"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":64,"author":{"gitId":"Lalelulilulela"},"content":" return sb.toString();","lastModifiedDate":"2024-02-02"},{"lineNumber":65,"author":{"gitId":"Lalelulilulela"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":66,"author":{"gitId":"Lalelulilulela"},"content":"}","lastModifiedDate":"2024-02-02"}],"authorContributionMap":{"Lalelulilulela":66}},{"path":"src/main/java/ui/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Lalelulilulela"},"content":"package ui;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":3,"author":{"gitId":"Lalelulilulela"},"content":"public class Ui {","lastModifiedDate":"2024-02-02"},{"lineNumber":4,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":5,"author":{"gitId":"Lalelulilulela"},"content":" public String showInstructions() {","lastModifiedDate":"2024-02-01"},{"lineNumber":6,"author":{"gitId":"Lalelulilulela"},"content":" return \"Please type in:\\n\" +","lastModifiedDate":"2024-02-01"},{"lineNumber":7,"author":{"gitId":"Lalelulilulela"},"content":" \"------------------------\\n\" +","lastModifiedDate":"2024-02-01"},{"lineNumber":8,"author":{"gitId":"Lalelulilulela"},"content":" \"[to record your task(s)/ events]\\n\" +","lastModifiedDate":"2024-02-01"},{"lineNumber":9,"author":{"gitId":"Lalelulilulela"},"content":" \"- todo \u003ctask\u003e\\n\" +","lastModifiedDate":"2024-02-01"},{"lineNumber":10,"author":{"gitId":"Lalelulilulela"},"content":" \"- deadline \u003ctask\u003e /by \u003cdate\u003e\\n\" +","lastModifiedDate":"2024-02-01"},{"lineNumber":11,"author":{"gitId":"Lalelulilulela"},"content":" \"- event \u003cevent\u003e /from \u003cdate and time\u003e /to \u003cdate and time\u003e\\n\\n\" +","lastModifiedDate":"2024-02-01"},{"lineNumber":12,"author":{"gitId":"Lalelulilulela"},"content":" \"[to view your task(s)]\\n\" +","lastModifiedDate":"2024-02-01"},{"lineNumber":13,"author":{"gitId":"Lalelulilulela"},"content":" \"- list\\n\\n\" +","lastModifiedDate":"2024-02-01"},{"lineNumber":14,"author":{"gitId":"Lalelulilulela"},"content":" \"[to mark or unmark your task as done]\\n\" +","lastModifiedDate":"2024-02-01"},{"lineNumber":15,"author":{"gitId":"Lalelulilulela"},"content":" \"- mark \u003ctask number in list\u003e\\n\" +","lastModifiedDate":"2024-02-01"},{"lineNumber":16,"author":{"gitId":"Lalelulilulela"},"content":" \"- unmark \u003ctask number in list\u003e\\n\" +","lastModifiedDate":"2024-02-01"},{"lineNumber":17,"author":{"gitId":"Lalelulilulela"},"content":" \"-------------------------------------\\n\";","lastModifiedDate":"2024-02-01"},{"lineNumber":18,"author":{"gitId":"Lalelulilulela"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":19,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":20,"author":{"gitId":"Lalelulilulela"},"content":" public void greet() {","lastModifiedDate":"2024-02-01"},{"lineNumber":21,"author":{"gitId":"Lalelulilulela"},"content":" String greet \u003d \" Hi! I am your favourite friend, Lelu :)\\n What can I do for you?\\n\";","lastModifiedDate":"2024-02-04"},{"lineNumber":22,"author":{"gitId":"Lalelulilulela"},"content":" System.out.println(greet);","lastModifiedDate":"2024-02-01"},{"lineNumber":23,"author":{"gitId":"Lalelulilulela"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":24,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":25,"author":{"gitId":"Lalelulilulela"},"content":" public void exit() {","lastModifiedDate":"2024-02-01"},{"lineNumber":26,"author":{"gitId":"Lalelulilulela"},"content":" String exit \u003d \" Ok bye, you shall be missed :(\";","lastModifiedDate":"2024-02-01"},{"lineNumber":27,"author":{"gitId":"Lalelulilulela"},"content":" System.out.println(exit);","lastModifiedDate":"2024-02-01"},{"lineNumber":28,"author":{"gitId":"Lalelulilulela"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":29,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":30,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":31,"author":{"gitId":"Lalelulilulela"},"content":" public void dateFormatInstructions() {","lastModifiedDate":"2024-02-01"},{"lineNumber":32,"author":{"gitId":"Lalelulilulela"},"content":" System.out.printf(\" Your date should be in this format:\\n \u003cYYYY-MM-DD HH:mm\u003e e.g. 2024-02-03 15:25\\n\\n\");","lastModifiedDate":"2024-02-04"},{"lineNumber":33,"author":{"gitId":"Lalelulilulela"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":34,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":35,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":36,"author":{"gitId":"Lalelulilulela"},"content":"}","lastModifiedDate":"2024-02-01"}],"authorContributionMap":{"Lalelulilulela":36}},{"path":"src/test/java/tasks/DeadlineTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Lalelulilulela"},"content":"package tasks;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":3,"author":{"gitId":"Lalelulilulela"},"content":"import exceptions.InvalidFormatException;","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"Lalelulilulela"},"content":"import exceptions.InvalidInputException;","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"Lalelulilulela"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"Lalelulilulela"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-02-06"},{"lineNumber":8,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"Lalelulilulela"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"Lalelulilulela"},"content":"import static org.junit.jupiter.api.Assertions.fail;","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":12,"author":{"gitId":"Lalelulilulela"},"content":"public class DeadlineTest {","lastModifiedDate":"2024-02-06"},{"lineNumber":13,"author":{"gitId":"Lalelulilulela"},"content":" @Test","lastModifiedDate":"2024-02-06"},{"lineNumber":14,"author":{"gitId":"Lalelulilulela"},"content":" public void testDeadline_DateTimeParseExceptionThrown() {","lastModifiedDate":"2024-02-06"},{"lineNumber":15,"author":{"gitId":"Lalelulilulela"},"content":" try {","lastModifiedDate":"2024-02-06"},{"lineNumber":16,"author":{"gitId":"Lalelulilulela"},"content":" new Deadline(\"go home\", \"2023/09/02 1000\");","lastModifiedDate":"2024-02-06"},{"lineNumber":17,"author":{"gitId":"Lalelulilulela"},"content":" fail(\"Expected DateTimeParseException to be thrown\");","lastModifiedDate":"2024-02-06"},{"lineNumber":18,"author":{"gitId":"Lalelulilulela"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-02-06"},{"lineNumber":19,"author":{"gitId":"Lalelulilulela"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":20,"author":{"gitId":"Lalelulilulela"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":21,"author":{"gitId":"Lalelulilulela"},"content":" @Test","lastModifiedDate":"2024-02-06"},{"lineNumber":22,"author":{"gitId":"Lalelulilulela"},"content":" public void testDeadlineOf_success() throws InvalidInputException {","lastModifiedDate":"2024-02-06"},{"lineNumber":23,"author":{"gitId":"Lalelulilulela"},"content":" Deadline d1 \u003d new Deadline(\"Submit assignment\", \"2025-05-20 23:59\");","lastModifiedDate":"2024-02-06"},{"lineNumber":24,"author":{"gitId":"Lalelulilulela"},"content":" assertEquals(d1.toString(),","lastModifiedDate":"2024-02-06"},{"lineNumber":25,"author":{"gitId":"Lalelulilulela"},"content":" Deadline.DeadlineOf(\"deadline Submit assignment /by 2025-05-20 23:59\").toString());","lastModifiedDate":"2024-02-06"},{"lineNumber":26,"author":{"gitId":"Lalelulilulela"},"content":" Deadline d2 \u003d new Deadline(\"chop cucumber\", \"2026-11-18 01:43\");","lastModifiedDate":"2024-02-06"},{"lineNumber":27,"author":{"gitId":"Lalelulilulela"},"content":" assertEquals(d2.toString(),","lastModifiedDate":"2024-02-06"},{"lineNumber":28,"author":{"gitId":"Lalelulilulela"},"content":" Deadline.DeadlineOf(\"deadline chop cucumber /by 2026-11-18 01:43\").toString());","lastModifiedDate":"2024-02-06"},{"lineNumber":29,"author":{"gitId":"Lalelulilulela"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":30,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":31,"author":{"gitId":"Lalelulilulela"},"content":" @Test","lastModifiedDate":"2024-02-06"},{"lineNumber":32,"author":{"gitId":"Lalelulilulela"},"content":" public void testDeadlineOf_exceptionThrown() throws InvalidInputException {","lastModifiedDate":"2024-02-06"},{"lineNumber":33,"author":{"gitId":"Lalelulilulela"},"content":" try {","lastModifiedDate":"2024-02-06"},{"lineNumber":34,"author":{"gitId":"Lalelulilulela"},"content":" Deadline.DeadlineOf(\"deadline \");","lastModifiedDate":"2024-02-06"},{"lineNumber":35,"author":{"gitId":"Lalelulilulela"},"content":" fail(\"Expected InvalidFormatException to be thrown\");","lastModifiedDate":"2024-02-06"},{"lineNumber":36,"author":{"gitId":"Lalelulilulela"},"content":" } catch (InvalidFormatException e) {","lastModifiedDate":"2024-02-06"},{"lineNumber":37,"author":{"gitId":"Lalelulilulela"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":38,"author":{"gitId":"Lalelulilulela"},"content":" try {","lastModifiedDate":"2024-02-06"},{"lineNumber":39,"author":{"gitId":"Lalelulilulela"},"content":" Deadline.DeadlineOf(\"deadline play games by tmr\");","lastModifiedDate":"2024-02-06"},{"lineNumber":40,"author":{"gitId":"Lalelulilulela"},"content":" fail(\"Expected InvalidFormatException to be thrown\");","lastModifiedDate":"2024-02-06"},{"lineNumber":41,"author":{"gitId":"Lalelulilulela"},"content":" } catch (InvalidFormatException e) {","lastModifiedDate":"2024-02-06"},{"lineNumber":42,"author":{"gitId":"Lalelulilulela"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":43,"author":{"gitId":"Lalelulilulela"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":44,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":45,"author":{"gitId":"Lalelulilulela"},"content":" @Test","lastModifiedDate":"2024-02-06"},{"lineNumber":46,"author":{"gitId":"Lalelulilulela"},"content":" public void testSaveFormat() {","lastModifiedDate":"2024-02-06"},{"lineNumber":47,"author":{"gitId":"Lalelulilulela"},"content":" Deadline d1 \u003d new Deadline(\"go to school\", \"2021-12-14 08:00\");","lastModifiedDate":"2024-02-06"},{"lineNumber":48,"author":{"gitId":"Lalelulilulela"},"content":" d1.markTask();","lastModifiedDate":"2024-02-06"},{"lineNumber":49,"author":{"gitId":"Lalelulilulela"},"content":" assertEquals(\"D | 1 | go to school | 2021-12-14 08:00\\n\", d1.saveFormat());","lastModifiedDate":"2024-02-06"},{"lineNumber":50,"author":{"gitId":"Lalelulilulela"},"content":" d1.unmarkTask();","lastModifiedDate":"2024-02-06"},{"lineNumber":51,"author":{"gitId":"Lalelulilulela"},"content":" assertEquals(\"D | 0 | go to school | 2021-12-14 08:00\\n\", d1.saveFormat());","lastModifiedDate":"2024-02-06"},{"lineNumber":52,"author":{"gitId":"Lalelulilulela"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":53,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":54,"author":{"gitId":"Lalelulilulela"},"content":" @Test","lastModifiedDate":"2024-02-06"},{"lineNumber":55,"author":{"gitId":"Lalelulilulela"},"content":" public void testToString() {","lastModifiedDate":"2024-02-06"},{"lineNumber":56,"author":{"gitId":"Lalelulilulela"},"content":" Deadline d \u003d new Deadline(\"sleep\", \"2023-10-02 23:00\");","lastModifiedDate":"2024-02-06"},{"lineNumber":57,"author":{"gitId":"Lalelulilulela"},"content":" assertEquals(\"[D][ ] sleep (by: 2 Oct 2023 11:00pm)\", d.toString());","lastModifiedDate":"2024-02-06"},{"lineNumber":58,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":59,"author":{"gitId":"Lalelulilulela"},"content":" Deadline d1 \u003d new Deadline(\"wake up\", \"2024-09-08 14:38\");","lastModifiedDate":"2024-02-06"},{"lineNumber":60,"author":{"gitId":"Lalelulilulela"},"content":" assertEquals(\"[D][ ] wake up (by: 8 Sept 2024 02:38pm)\", d1.toString());","lastModifiedDate":"2024-02-06"},{"lineNumber":61,"author":{"gitId":"Lalelulilulela"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":62,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":63,"author":{"gitId":"Lalelulilulela"},"content":"}","lastModifiedDate":"2024-02-06"}],"authorContributionMap":{"Lalelulilulela":63}},{"path":"src/test/java/tasksstorage/TaskListTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Lalelulilulela"},"content":"package tasksstorage;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"Lalelulilulela"},"content":"import tasks.Deadline;","lastModifiedDate":"2024-02-06"},{"lineNumber":3,"author":{"gitId":"Lalelulilulela"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"Lalelulilulela"},"content":"import java.io.ByteArrayOutputStream;","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"Lalelulilulela"},"content":"import java.io.PrintStream;","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":8,"author":{"gitId":"Lalelulilulela"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"Lalelulilulela"},"content":"public class TaskListTest {","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"Lalelulilulela"},"content":" @Test","lastModifiedDate":"2024-02-06"},{"lineNumber":12,"author":{"gitId":"Lalelulilulela"},"content":" public void testAddTask() {","lastModifiedDate":"2024-02-06"},{"lineNumber":13,"author":{"gitId":"Lalelulilulela"},"content":" TaskList t \u003d new TaskList();","lastModifiedDate":"2024-02-06"},{"lineNumber":14,"author":{"gitId":"Lalelulilulela"},"content":" assertEquals(\"\", t.toString());","lastModifiedDate":"2024-02-06"},{"lineNumber":15,"author":{"gitId":"Lalelulilulela"},"content":" Deadline d \u003d new Deadline(\"sleep\", \"2024-10-10 21:00\");","lastModifiedDate":"2024-02-06"},{"lineNumber":16,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":17,"author":{"gitId":"Lalelulilulela"},"content":" ByteArrayOutputStream outContent \u003d new ByteArrayOutputStream();","lastModifiedDate":"2024-02-06"},{"lineNumber":18,"author":{"gitId":"Lalelulilulela"},"content":" System.setOut(new PrintStream(outContent));","lastModifiedDate":"2024-02-06"},{"lineNumber":19,"author":{"gitId":"Lalelulilulela"},"content":" t.addTask(d);","lastModifiedDate":"2024-02-06"},{"lineNumber":20,"author":{"gitId":"Lalelulilulela"},"content":" System.setOut(System.out);","lastModifiedDate":"2024-02-06"},{"lineNumber":21,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":22,"author":{"gitId":"Lalelulilulela"},"content":" assertEquals(String.format(\" Ok! I have added your task:\\n %s\\n You have %d task(s) in the \" +","lastModifiedDate":"2024-02-06"},{"lineNumber":23,"author":{"gitId":"Lalelulilulela"},"content":" \"list now.\\n\\n\", d.toString(), 1), outContent.toString());","lastModifiedDate":"2024-02-06"},{"lineNumber":24,"author":{"gitId":"Lalelulilulela"},"content":" assertEquals(String.format(\" 1.%s\\n\", d.toString()), t.toString());","lastModifiedDate":"2024-02-06"},{"lineNumber":25,"author":{"gitId":"Lalelulilulela"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":26,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":27,"author":{"gitId":"Lalelulilulela"},"content":" @Test","lastModifiedDate":"2024-02-06"},{"lineNumber":28,"author":{"gitId":"Lalelulilulela"},"content":" public void testRemoveTask() {","lastModifiedDate":"2024-02-06"},{"lineNumber":29,"author":{"gitId":"Lalelulilulela"},"content":" TaskList t \u003d new TaskList();","lastModifiedDate":"2024-02-06"},{"lineNumber":30,"author":{"gitId":"Lalelulilulela"},"content":" Deadline d \u003d new Deadline(\"Finish assignment\", \"2023-11-30 22:59\");","lastModifiedDate":"2024-02-06"},{"lineNumber":31,"author":{"gitId":"Lalelulilulela"},"content":" t.addTask(d);","lastModifiedDate":"2024-02-06"},{"lineNumber":32,"author":{"gitId":"Lalelulilulela"},"content":" ByteArrayOutputStream outContent \u003d new ByteArrayOutputStream();","lastModifiedDate":"2024-02-06"},{"lineNumber":33,"author":{"gitId":"Lalelulilulela"},"content":" System.setOut(new PrintStream(outContent));","lastModifiedDate":"2024-02-06"},{"lineNumber":34,"author":{"gitId":"Lalelulilulela"},"content":" t.removeTask(0);","lastModifiedDate":"2024-02-06"},{"lineNumber":35,"author":{"gitId":"Lalelulilulela"},"content":" System.setOut(System.out);","lastModifiedDate":"2024-02-06"},{"lineNumber":36,"author":{"gitId":"Lalelulilulela"},"content":" assertEquals(String.format(\" Ok, I have removed your task:\\n %s\\n You have %d task(s) in the \" +","lastModifiedDate":"2024-02-06"},{"lineNumber":37,"author":{"gitId":"Lalelulilulela"},"content":" \"list now.\\n\\n\", d.toString(), 0), outContent.toString());","lastModifiedDate":"2024-02-06"},{"lineNumber":38,"author":{"gitId":"Lalelulilulela"},"content":" assertEquals(\"\", t.toString());","lastModifiedDate":"2024-02-06"},{"lineNumber":39,"author":{"gitId":"Lalelulilulela"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":40,"author":{"gitId":"Lalelulilulela"},"content":"}","lastModifiedDate":"2024-02-06"}],"authorContributionMap":{"Lalelulilulela":40}},{"path":"src/test/java/ui/UiTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Lalelulilulela"},"content":"package ui;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":3,"author":{"gitId":"Lalelulilulela"},"content":"import org.junit.jupiter.api.AfterEach;","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"Lalelulilulela"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"Lalelulilulela"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"Lalelulilulela"},"content":"import java.io.ByteArrayOutputStream;","lastModifiedDate":"2024-02-06"},{"lineNumber":8,"author":{"gitId":"Lalelulilulela"},"content":"import java.io.PrintStream;","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"Lalelulilulela"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":12,"author":{"gitId":"Lalelulilulela"},"content":"public class UiTest {","lastModifiedDate":"2024-02-06"},{"lineNumber":13,"author":{"gitId":"Lalelulilulela"},"content":" private ByteArrayOutputStream outContent \u003d new ByteArrayOutputStream();","lastModifiedDate":"2024-02-06"},{"lineNumber":14,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":15,"author":{"gitId":"Lalelulilulela"},"content":" @BeforeEach","lastModifiedDate":"2024-02-06"},{"lineNumber":16,"author":{"gitId":"Lalelulilulela"},"content":" public void redirect() {","lastModifiedDate":"2024-02-06"},{"lineNumber":17,"author":{"gitId":"Lalelulilulela"},"content":" System.setOut(new PrintStream(outContent));","lastModifiedDate":"2024-02-06"},{"lineNumber":18,"author":{"gitId":"Lalelulilulela"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":19,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":20,"author":{"gitId":"Lalelulilulela"},"content":" @AfterEach","lastModifiedDate":"2024-02-06"},{"lineNumber":21,"author":{"gitId":"Lalelulilulela"},"content":" public void restore() {","lastModifiedDate":"2024-02-06"},{"lineNumber":22,"author":{"gitId":"Lalelulilulela"},"content":" System.setOut(System.out);","lastModifiedDate":"2024-02-06"},{"lineNumber":23,"author":{"gitId":"Lalelulilulela"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":24,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":25,"author":{"gitId":"Lalelulilulela"},"content":" @Test","lastModifiedDate":"2024-02-06"},{"lineNumber":26,"author":{"gitId":"Lalelulilulela"},"content":" public void testGreet() {","lastModifiedDate":"2024-02-06"},{"lineNumber":27,"author":{"gitId":"Lalelulilulela"},"content":" Ui ui \u003d new Ui();","lastModifiedDate":"2024-02-06"},{"lineNumber":28,"author":{"gitId":"Lalelulilulela"},"content":" ui.greet();","lastModifiedDate":"2024-02-06"},{"lineNumber":29,"author":{"gitId":"Lalelulilulela"},"content":" assertEquals(\" Hi! I am your favourite friend, Lelu :)\\n What can I do for you?\\n\\n\",","lastModifiedDate":"2024-02-06"},{"lineNumber":30,"author":{"gitId":"Lalelulilulela"},"content":" outContent.toString());","lastModifiedDate":"2024-02-06"},{"lineNumber":31,"author":{"gitId":"Lalelulilulela"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":32,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":33,"author":{"gitId":"Lalelulilulela"},"content":" @Test","lastModifiedDate":"2024-02-06"},{"lineNumber":34,"author":{"gitId":"Lalelulilulela"},"content":" public void testExit() {","lastModifiedDate":"2024-02-06"},{"lineNumber":35,"author":{"gitId":"Lalelulilulela"},"content":" Ui ui \u003d new Ui();","lastModifiedDate":"2024-02-06"},{"lineNumber":36,"author":{"gitId":"Lalelulilulela"},"content":" ui.exit();","lastModifiedDate":"2024-02-06"},{"lineNumber":37,"author":{"gitId":"Lalelulilulela"},"content":" assertEquals(\" Ok bye, you shall be missed :(\\n\",","lastModifiedDate":"2024-02-06"},{"lineNumber":38,"author":{"gitId":"Lalelulilulela"},"content":" outContent.toString());","lastModifiedDate":"2024-02-06"},{"lineNumber":39,"author":{"gitId":"Lalelulilulela"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":40,"author":{"gitId":"Lalelulilulela"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":41,"author":{"gitId":"Lalelulilulela"},"content":" @Test","lastModifiedDate":"2024-02-06"},{"lineNumber":42,"author":{"gitId":"Lalelulilulela"},"content":" public void testDateFormatInstructions() {","lastModifiedDate":"2024-02-06"},{"lineNumber":43,"author":{"gitId":"Lalelulilulela"},"content":" Ui ui \u003d new Ui();","lastModifiedDate":"2024-02-06"},{"lineNumber":44,"author":{"gitId":"Lalelulilulela"},"content":" ui.dateFormatInstructions();","lastModifiedDate":"2024-02-06"},{"lineNumber":45,"author":{"gitId":"Lalelulilulela"},"content":" assertEquals(\" Your date should be in this format:\\n \u003cYYYY-MM-DD HH:mm\u003e e.g. 2024-02-03 15:25\\n\\n\",","lastModifiedDate":"2024-02-06"},{"lineNumber":46,"author":{"gitId":"Lalelulilulela"},"content":" outContent.toString());","lastModifiedDate":"2024-02-06"},{"lineNumber":47,"author":{"gitId":"Lalelulilulela"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":48,"author":{"gitId":"Lalelulilulela"},"content":"}","lastModifiedDate":"2024-02-06"}],"authorContributionMap":{"Lalelulilulela":48}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"Lalelulilulela"},"content":"event play /from 10am /to 10pm","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"Lalelulilulela"},"content":"deadline sleep /by 2023-09-08 11:59","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"Lalelulilulela"},"content":"mark 2","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"Lalelulilulela"},"content":"list","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"Lalelulilulela"},"content":"unmark 2","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"Lalelulilulela"},"content":"list","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"Lalelulilulela"},"content":"delete 1","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"Lalelulilulela"},"content":"list","lastModifiedDate":"2024-02-02"},{"lineNumber":9,"author":{"gitId":"Lalelulilulela"},"content":"deadline homework /by tmr","lastModifiedDate":"2024-02-02"},{"lineNumber":10,"author":{"gitId":"Lalelulilulela"},"content":"bye","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"Lalelulilulela":10}},{"path":"text-ui-test/runtest.bat","fileType":"bat","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@ECHO OFF","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"REM create bin directory if it doesn\u0027t exist","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"if not exist ..\\bin mkdir ..\\bin","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"REM delete output from previous run","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"if exist ACTUAL.TXT del ACTUAL.TXT","lastModifiedDate":"2020-08-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"REM compile the code into the bin folder","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"javac -cp ..\\src\\main\\java -Xlint:none -d ..\\bin ..\\src\\main\\java\\*.java","lastModifiedDate":"2020-08-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"IF ERRORLEVEL 1 (","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":" echo ********** BUILD FAILURE **********","lastModifiedDate":"2020-05-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":" exit /b 1","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":")","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"REM no error here, errorlevel \u003d\u003d 0","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"REM run the program, feed commands from input.txt file and redirect the output to the ACTUAL.TXT","lastModifiedDate":"2024-02-06"},{"lineNumber":18,"author":{"gitId":"Lalelulilulela"},"content":"java -classpath ..\\bin lelu.lelu \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-02-06"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"REM compare the output to the expected output","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"FC ACTUAL.TXT EXPECTED.TXT","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"Lalelulilulela":1,"-":20}},{"path":"text-ui-test/runtest.sh","fileType":"sh","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"#!/usr/bin/env bash","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"# create bin directory if it doesn\u0027t exist","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"if [ ! -d \"../bin\" ]","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":" mkdir ../bin","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"# delete output from previous run","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"if [ -e \"./ACTUAL.TXT\" ]","lastModifiedDate":"2020-05-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":" rm ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"# compile the code into the bin folder, terminates if error occurred","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"Lalelulilulela"},"content":"if ! javac -cp ../src/main/java -Xlint:none -d ../bin ../src/main/java/Lelu/*.java","lastModifiedDate":"2024-02-02"},{"lineNumber":17,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" echo \"********** BUILD FAILURE **********\"","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" exit 1","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":"# run the program, feed commands from input.txt file and redirect the output to the ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"Lalelulilulela"},"content":"java -classpath ../bin Lelu \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-01-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":"# convert to UNIX format","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":"cp EXPECTED.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":"dos2unix ACTUAL.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"# compare the output to the expected output","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"diff ACTUAL.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":"if [ $? -eq 0 ]","lastModifiedDate":"2020-05-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":" echo \"Test result: PASSED\"","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":" exit 0","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":"else","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" echo \"Test result: FAILED\"","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" exit 1","lastModifiedDate":"2020-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"Lalelulilulela":2,"-":36}}] diff --git a/Lalelulilulela_ip_master/commits.json b/Lalelulilulela_ip_master/commits.json index ee22adcd..f3521cd6 100644 --- a/Lalelulilulela_ip_master/commits.json +++ b/Lalelulilulela_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"Lalelulilulela":[{"date":"2024-01-21","commitResults":[{"hash":"6223d0a5dced07628de14275beacdea360ecb797","isMergeCommit":false,"messageTitle":"Rename, Greet, Exit","messageBody":"","tags":["Level-0","0a"],"fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":6}}},{"hash":"d54613b67739bb98b1c9aaa8ce0239de287b8d8b","isMergeCommit":false,"messageTitle":"Echo","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":3}}},{"hash":"847b08016009a2e8703a48643dcd3e4c76607efb","isMergeCommit":false,"messageTitle":"Add, List","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":17,"deletions":5}}}]},{"date":"2024-01-22","commitResults":[{"hash":"96a0c38ef9780fccbd10798bd69a23c4e956c542","isMergeCommit":false,"messageTitle":"Mark as Done","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":64,"deletions":17}}},{"hash":"8166ef613bb5a09e07fd633c3d767b27f950069d","isMergeCommit":false,"messageTitle":"ToDos, Events, Deadlines","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":59,"deletions":9}}}]},{"date":"2024-01-23","commitResults":[{"hash":"781118bdc2bfb07126fefc7e913c02fcccfa7e47","isMergeCommit":false,"messageTitle":"Added testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":9,"deletions":0},"java":{"insertions":0,"deletions":0},"bat":{"insertions":1,"deletions":1},"sh":{"insertions":1,"deletions":1}}}]},{"date":"2024-01-24","commitResults":[{"hash":"40f0145e873699228cc28417b9bb3cd3038d047b","isMergeCommit":false,"messageTitle":"Handle errors","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":69,"deletions":36}}},{"hash":"934b10ef060d72cc310efe652e7b27a915aec7de","isMergeCommit":false,"messageTitle":"Handle errors","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":123,"deletions":41},"md":{"insertions":3,"deletions":3}}},{"hash":"a0201339c3b0738e0aa503e09dc4779c65e9c448","isMergeCommit":false,"messageTitle":"Added delete","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":23,"deletions":15}}},{"hash":"773e08bfe5d41bd990402efb8465ec9f964af01b","isMergeCommit":false,"messageTitle":"Added enums for error types","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":20,"deletions":12}}}]},{"date":"2024-01-30","commitResults":[{"hash":"75054f812d72db354b4ee5b7e4621f1c26bd8cc3","isMergeCommit":false,"messageTitle":"Add Storage.java","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":0},"java":{"insertions":38,"deletions":0}}}]},{"date":"2024-01-31","commitResults":[{"hash":"56f2e45fcba61d2e2d1bc2c4d11e7e919ed61ec1","isMergeCommit":false,"messageTitle":"Update Storage.java","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":0},"java":{"insertions":62,"deletions":6}}},{"hash":"b2299f8930f5e385320427d82b1573eb58f2833c","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}}]},{"date":"2024-02-01","commitResults":[{"hash":"332220e4ac8fcbe8e4dcdecfe6b7c30d9ca89d0f","isMergeCommit":false,"messageTitle":"Update Deadline.java to store deadline as Date and Time","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":3},"java":{"insertions":17,"deletions":5}}},{"hash":"c97ad041df275fda55b934a69542b4c124f5d88b","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}},{"hash":"6f180c048e3adcaea44c1637935561684858711b","isMergeCommit":false,"messageTitle":"Add UI.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":94,"deletions":52}}}]},{"date":"2024-02-02","commitResults":[{"hash":"be95aa64bb37faf85bab61c0381dd318f64628b8","isMergeCommit":false,"messageTitle":"Add Commands package and Parser.java","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":4},"java":{"insertions":213,"deletions":77},"bat":{"insertions":1,"deletions":1}}},{"hash":"722a8c668bfa7e66df9d7c3cc11dfd31670e73b8","isMergeCommit":false,"messageTitle":"Add TaskList.java","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{"java":{"insertions":88,"deletions":60}}},{"hash":"5057809e1898dc698a6b8438cfa4861041a8e211","isMergeCommit":false,"messageTitle":"Organize classes into packages","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{"java":{"insertions":5,"deletions":3},"bat":{"insertions":1,"deletions":1},"sh":{"insertions":1,"deletions":1},"md":{"insertions":2,"deletions":2}}}]},{"date":"2024-02-04","commitResults":[{"hash":"13f96cbbe8fb636b6e6e7a4b806343943281cd4a","isMergeCommit":true,"messageTitle":"Merge commit \u0027a6f73244a20539e20c2189973ebf597df34ef631\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"d03bbd4b48bd593d0ab023aa604057ce6ece4c00","isMergeCommit":false,"messageTitle":"Fix greet message","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"08deb0ab8e794543b3ee85a52ac985334128f6ad","isMergeCommit":false,"messageTitle":"Add Gradle","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{"gradle":{"insertions":2,"deletions":2},"txt":{"insertions":2,"deletions":0},"java":{"insertions":6,"deletions":2}}}]},{"date":"2024-02-06","commitResults":[{"hash":"4af654460bd571f618dfad2e8e3ec73164fb8729","isMergeCommit":false,"messageTitle":"Add JUnit tests","messageBody":"","tags":["A-Jar","A-JUnit"],"fileTypesAndContributionMap":{"gradle":{"insertions":3,"deletions":0},"java":{"insertions":165,"deletions":39}}}]}]},"authorFileTypeContributionMap":{"Lalelulilulela":{"java":703,"md":3,"fxml":0,"sh":2,"bat":2,"gradle":5,"txt":12}},"authorContributionVariance":{"Lalelulilulela":16629.668},"authorDisplayNameMap":{"Lalelulilulela":"CS2103T-T08-3 TAN ..JING"}} +{"authorDailyContributionsMap":{"Lalelulilulela":[{"date":"2024-01-21","commitResults":[{"hash":"6223d0a5dced07628de14275beacdea360ecb797","isMergeCommit":false,"messageTitle":"Rename, Greet, Exit","messageBody":"","tags":["Level-0","0a"],"fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":6}}},{"hash":"d54613b67739bb98b1c9aaa8ce0239de287b8d8b","isMergeCommit":false,"messageTitle":"Echo","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":3}}},{"hash":"847b08016009a2e8703a48643dcd3e4c76607efb","isMergeCommit":false,"messageTitle":"Add, List","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":17,"deletions":5}}}]},{"date":"2024-01-22","commitResults":[{"hash":"96a0c38ef9780fccbd10798bd69a23c4e956c542","isMergeCommit":false,"messageTitle":"Mark as Done","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":64,"deletions":17}}},{"hash":"8166ef613bb5a09e07fd633c3d767b27f950069d","isMergeCommit":false,"messageTitle":"ToDos, Events, Deadlines","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":59,"deletions":9}}}]},{"date":"2024-01-23","commitResults":[{"hash":"781118bdc2bfb07126fefc7e913c02fcccfa7e47","isMergeCommit":false,"messageTitle":"Added testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":9,"deletions":0},"java":{"insertions":0,"deletions":0},"bat":{"insertions":1,"deletions":1},"sh":{"insertions":1,"deletions":1}}}]},{"date":"2024-01-24","commitResults":[{"hash":"40f0145e873699228cc28417b9bb3cd3038d047b","isMergeCommit":false,"messageTitle":"Handle errors","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":69,"deletions":36}}},{"hash":"934b10ef060d72cc310efe652e7b27a915aec7de","isMergeCommit":false,"messageTitle":"Handle errors","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":123,"deletions":41},"md":{"insertions":3,"deletions":3}}},{"hash":"a0201339c3b0738e0aa503e09dc4779c65e9c448","isMergeCommit":false,"messageTitle":"Added delete","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":23,"deletions":15}}},{"hash":"773e08bfe5d41bd990402efb8465ec9f964af01b","isMergeCommit":false,"messageTitle":"Added enums for error types","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":20,"deletions":12}}}]},{"date":"2024-01-30","commitResults":[{"hash":"75054f812d72db354b4ee5b7e4621f1c26bd8cc3","isMergeCommit":false,"messageTitle":"Add Storage.java","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":0},"java":{"insertions":38,"deletions":0}}}]},{"date":"2024-01-31","commitResults":[{"hash":"56f2e45fcba61d2e2d1bc2c4d11e7e919ed61ec1","isMergeCommit":false,"messageTitle":"Update Storage.java","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":0},"java":{"insertions":62,"deletions":6}}},{"hash":"b2299f8930f5e385320427d82b1573eb58f2833c","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}}]},{"date":"2024-02-01","commitResults":[{"hash":"332220e4ac8fcbe8e4dcdecfe6b7c30d9ca89d0f","isMergeCommit":false,"messageTitle":"Update Deadline.java to store deadline as Date and Time","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":3},"java":{"insertions":17,"deletions":5}}},{"hash":"c97ad041df275fda55b934a69542b4c124f5d88b","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}},{"hash":"6f180c048e3adcaea44c1637935561684858711b","isMergeCommit":false,"messageTitle":"Add UI.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":94,"deletions":52}}}]},{"date":"2024-02-02","commitResults":[{"hash":"be95aa64bb37faf85bab61c0381dd318f64628b8","isMergeCommit":false,"messageTitle":"Add Commands package and Parser.java","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":4},"java":{"insertions":213,"deletions":77},"bat":{"insertions":1,"deletions":1}}},{"hash":"722a8c668bfa7e66df9d7c3cc11dfd31670e73b8","isMergeCommit":false,"messageTitle":"Add TaskList.java","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{"java":{"insertions":88,"deletions":60}}},{"hash":"5057809e1898dc698a6b8438cfa4861041a8e211","isMergeCommit":false,"messageTitle":"Organize classes into packages","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{"java":{"insertions":5,"deletions":3},"bat":{"insertions":1,"deletions":1},"sh":{"insertions":1,"deletions":1},"md":{"insertions":2,"deletions":2}}}]},{"date":"2024-02-04","commitResults":[{"hash":"13f96cbbe8fb636b6e6e7a4b806343943281cd4a","isMergeCommit":true,"messageTitle":"Merge commit \u0027a6f73244a20539e20c2189973ebf597df34ef631\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"d03bbd4b48bd593d0ab023aa604057ce6ece4c00","isMergeCommit":false,"messageTitle":"Fix greet message","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"08deb0ab8e794543b3ee85a52ac985334128f6ad","isMergeCommit":false,"messageTitle":"Add Gradle","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{"gradle":{"insertions":2,"deletions":2},"txt":{"insertions":2,"deletions":0},"java":{"insertions":6,"deletions":2}}}]},{"date":"2024-02-06","commitResults":[{"hash":"4af654460bd571f618dfad2e8e3ec73164fb8729","isMergeCommit":false,"messageTitle":"Add JUnit tests","messageBody":"","tags":["A-Jar","A-JUnit"],"fileTypesAndContributionMap":{"gradle":{"insertions":3,"deletions":0},"java":{"insertions":165,"deletions":39}}},{"hash":"c5a49395f246640719cc5543dc6011542df2e42c","isMergeCommit":false,"messageTitle":"Add header comments to package Commands, Tasks, and Exceptions","messageBody":"","tags":["A-JavaDoc"],"fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":0},"txt":{"insertions":0,"deletions":2},"java":{"insertions":215,"deletions":4}}},{"hash":"6f82f030c267ca689f27a42e2dc5260d26f8f214","isMergeCommit":false,"messageTitle":"Update package names","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":51,"deletions":51}}},{"hash":"3eb499de5a408a4805ec568ea6c8fcf3c0cc8b3d","isMergeCommit":false,"messageTitle":"Update Package names","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":2,"deletions":1},"txt":{"insertions":0,"deletions":2},"java":{"insertions":48,"deletions":49},"bat":{"insertions":2,"deletions":2},"md":{"insertions":2,"deletions":2}}},{"hash":"7bcdcc713f21d1a06b3a83ccec4a5d4358bc5c07","isMergeCommit":false,"messageTitle":"Update code to comply with coding standards","messageBody":"","tags":["A-CodingStandard"],"fileTypesAndContributionMap":{"java":{"insertions":41,"deletions":33}}},{"hash":"2d091faf3b00e216a5c8fe8c2e4967a484ca3b40","isMergeCommit":false,"messageTitle":"Add FindCommand.java","messageBody":"","tags":["Level-9"],"fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":2},"java":{"insertions":41,"deletions":2}}},{"hash":"5c3e7065e6066106d4b9aa1db9443af0b098e209","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-JavaDoc\u0027","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-02-07","commitResults":[{"hash":"3f0d38c2bb6154f57dc680f83506a83e3e4046a5","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-CodingStandard\u0027","messageBody":"# Conflicts:\n#\tsrc/main/java/Exceptions/InvalidFormatException.java\n#\tsrc/main/java/exceptions/LeluException.java\n\nResolution: keep both\n","fileTypesAndContributionMap":{}},{"hash":"1a9c9b56a7f1263683b5e82152be45b25b8738af","isMergeCommit":false,"messageTitle":"Remove unused file","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":32}}},{"hash":"4a2160071330c3da7a36ca6712a14fc147e74083","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-9\u0027","messageBody":"# Conflicts:\n#\tdata/lelu.txt\n#\tsrc/main/java/Exceptions/InvalidFormatException.java\n#\tsrc/main/java/Lelu/Parser.java\n#\tsrc/main/java/Tasks/Task.java\n\nResolution: Keep Both\n","fileTypesAndContributionMap":{}},{"hash":"925aeb0c56be94cedb9127e9a69d540cd401ce8a","isMergeCommit":false,"messageTitle":"Fix merge conflict issues","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":1},"java":{"insertions":32,"deletions":24}}}]}]},"authorFileTypeContributionMap":{"Lalelulilulela":{"java":969,"md":3,"fxml":0,"sh":2,"bat":1,"gradle":6,"txt":11}},"authorContributionVariance":{"Lalelulilulela":37375.445},"authorDisplayNameMap":{"Lalelulilulela":"CS2103T-T08-3 TAN ..JING"}} diff --git a/RingoftheKing_ip_master/authorship.json b/RingoftheKing_ip_master/authorship.json index eb32f313..e15b4042 100644 --- a/RingoftheKing_ip_master/authorship.json +++ b/RingoftheKing_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"build.gradle","fileType":"gradle","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"plugins {","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":" id \u0027java\u0027","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":" id \u0027application\u0027","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":" id \u0027com.github.johnrengelman.shadow\u0027 version \u00277.1.2\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"repositories {","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":" mavenCentral()","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"dependencies {","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":" testImplementation group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-api\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":" testRuntimeOnly group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-engine\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"RingoftheKing"},"content":" mainClass.set(\"BadApple.main.BadPingGuo\")","lastModifiedDate":"2024-02-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":" archiveBaseName \u003d \"duke\"","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":"run {","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"RingoftheKing":1,"-":41}},{"path":"src/main/java/BadApple/main/BadAppleException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"RingoftheKing"},"content":"package BadApple.main;","lastModifiedDate":"2024-02-04"},{"lineNumber":2,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":3,"author":{"gitId":"RingoftheKing"},"content":"public class BadAppleException extends IllegalArgumentException {","lastModifiedDate":"2024-01-27"},{"lineNumber":4,"author":{"gitId":"RingoftheKing"},"content":" public BadAppleException(String s) {","lastModifiedDate":"2024-02-04"},{"lineNumber":5,"author":{"gitId":"RingoftheKing"},"content":" super(s);","lastModifiedDate":"2024-01-27"},{"lineNumber":6,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":7,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":8,"author":{"gitId":"RingoftheKing"},"content":" @Override","lastModifiedDate":"2024-01-27"},{"lineNumber":9,"author":{"gitId":"RingoftheKing"},"content":" public String toString() {","lastModifiedDate":"2024-01-27"},{"lineNumber":10,"author":{"gitId":"RingoftheKing"},"content":" return getMessage();","lastModifiedDate":"2024-01-27"},{"lineNumber":11,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":12,"author":{"gitId":"RingoftheKing"},"content":"}","lastModifiedDate":"2024-01-27"}],"authorContributionMap":{"RingoftheKing":12}},{"path":"src/main/java/BadApple/main/BadPingGuo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"RingoftheKing"},"content":"package BadApple.main;","lastModifiedDate":"2024-02-04"},{"lineNumber":2,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":3,"author":{"gitId":"RingoftheKing"},"content":"import BadApple.task.Parser;","lastModifiedDate":"2024-02-04"},{"lineNumber":4,"author":{"gitId":"RingoftheKing"},"content":"import BadApple.task.Storage;","lastModifiedDate":"2024-02-04"},{"lineNumber":5,"author":{"gitId":"RingoftheKing"},"content":"import BadApple.task.TaskList;","lastModifiedDate":"2024-02-04"},{"lineNumber":6,"author":{"gitId":"RingoftheKing"},"content":"import BadApple.task.Tracker;","lastModifiedDate":"2024-02-04"},{"lineNumber":7,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":8,"author":{"gitId":"RingoftheKing"},"content":"import java.io.IOException;","lastModifiedDate":"2024-02-01"},{"lineNumber":9,"author":{"gitId":"RingoftheKing"},"content":"import java.io.File;","lastModifiedDate":"2024-02-01"},{"lineNumber":10,"author":{"gitId":"RingoftheKing"},"content":"import java.io.FileReader;","lastModifiedDate":"2024-02-01"},{"lineNumber":11,"author":{"gitId":"RingoftheKing"},"content":"import java.io.BufferedReader;","lastModifiedDate":"2024-02-01"},{"lineNumber":12,"author":{"gitId":"RingoftheKing"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2024-02-01"},{"lineNumber":13,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":14,"author":{"gitId":"RingoftheKing"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"RingoftheKing"},"content":"public class BadPingGuo {","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2019-07-29"},{"lineNumber":18,"author":{"gitId":"RingoftheKing"},"content":" Ui.showWelcome();","lastModifiedDate":"2024-02-04"},{"lineNumber":19,"author":{"gitId":"RingoftheKing"},"content":" Scanner sc \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"RingoftheKing"},"content":" String filename \u003d \"src/main/data/whiteSpace.txt\";","lastModifiedDate":"2024-02-01"},{"lineNumber":21,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":22,"author":{"gitId":"RingoftheKing"},"content":" try {","lastModifiedDate":"2024-02-01"},{"lineNumber":23,"author":{"gitId":"RingoftheKing"},"content":" File file \u003d new File(filename);","lastModifiedDate":"2024-02-01"},{"lineNumber":24,"author":{"gitId":"RingoftheKing"},"content":" FileReader fc \u003d new FileReader(file);","lastModifiedDate":"2024-02-01"},{"lineNumber":25,"author":{"gitId":"RingoftheKing"},"content":" BufferedReader reader \u003d new BufferedReader(fc);","lastModifiedDate":"2024-02-01"},{"lineNumber":26,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":27,"author":{"gitId":"RingoftheKing"},"content":" Tracker.suppressMessages \u003d true;","lastModifiedDate":"2024-02-01"},{"lineNumber":28,"author":{"gitId":"RingoftheKing"},"content":" Storage.parseTasks(file);","lastModifiedDate":"2024-02-04"},{"lineNumber":29,"author":{"gitId":"RingoftheKing"},"content":" Tracker.suppressMessages \u003d false;","lastModifiedDate":"2024-02-01"},{"lineNumber":30,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":31,"author":{"gitId":"RingoftheKing"},"content":" TaskList.listTasks(reader);","lastModifiedDate":"2024-02-04"},{"lineNumber":32,"author":{"gitId":"RingoftheKing"},"content":" System.out.println(\"Waiting for something to happen?\");","lastModifiedDate":"2024-02-01"},{"lineNumber":33,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":34,"author":{"gitId":"RingoftheKing"},"content":" // self note: update the file everytime an operation is complete.","lastModifiedDate":"2024-02-01"},{"lineNumber":35,"author":{"gitId":"RingoftheKing"},"content":" // Delete the old file, for loop all the tasks into new file. Rename it to old file name.","lastModifiedDate":"2024-02-01"},{"lineNumber":36,"author":{"gitId":"RingoftheKing"},"content":" while(true) {","lastModifiedDate":"2024-01-24"},{"lineNumber":37,"author":{"gitId":"RingoftheKing"},"content":" String request \u003d sc.nextLine();","lastModifiedDate":"2024-01-24"},{"lineNumber":38,"author":{"gitId":"RingoftheKing"},"content":" if (request.equalsIgnoreCase(\"bye\")) break;","lastModifiedDate":"2024-01-24"},{"lineNumber":39,"author":{"gitId":"RingoftheKing"},"content":" Parser.ProcessQuery(request, file);","lastModifiedDate":"2024-02-04"},{"lineNumber":40,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":41,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":42,"author":{"gitId":"RingoftheKing"},"content":" System.out.println(\"--------------------------------\");","lastModifiedDate":"2024-01-24"},{"lineNumber":43,"author":{"gitId":"RingoftheKing"},"content":" System.out.println(\"Everything is going to be okay.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":44,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":45,"author":{"gitId":"RingoftheKing"},"content":" fc.close();","lastModifiedDate":"2024-02-01"},{"lineNumber":46,"author":{"gitId":"RingoftheKing"},"content":" reader.close();","lastModifiedDate":"2024-02-01"},{"lineNumber":47,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":48,"author":{"gitId":"RingoftheKing"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2024-02-01"},{"lineNumber":49,"author":{"gitId":"RingoftheKing"},"content":" System.out.println(\"You\u0027ve been living here for as long as... wait, no headspace detected?\");","lastModifiedDate":"2024-02-01"},{"lineNumber":50,"author":{"gitId":"RingoftheKing"},"content":" System.out.println(\"Would you like to enter White Space? \\n\" +","lastModifiedDate":"2024-02-01"},{"lineNumber":51,"author":{"gitId":"RingoftheKing"},"content":" \"Only \u0027yes\u0027 will create the required files\" );","lastModifiedDate":"2024-02-01"},{"lineNumber":52,"author":{"gitId":"RingoftheKing"},"content":" String askToCreateFile \u003d sc.nextLine();","lastModifiedDate":"2024-02-01"},{"lineNumber":53,"author":{"gitId":"RingoftheKing"},"content":" if (askToCreateFile.equalsIgnoreCase(\"yes\")) {","lastModifiedDate":"2024-02-01"},{"lineNumber":54,"author":{"gitId":"RingoftheKing"},"content":" makeFile();","lastModifiedDate":"2024-02-01"},{"lineNumber":55,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":56,"author":{"gitId":"RingoftheKing"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-02-01"},{"lineNumber":57,"author":{"gitId":"RingoftheKing"},"content":" System.out.println(\"unable to process file\");","lastModifiedDate":"2024-02-01"},{"lineNumber":58,"author":{"gitId":"RingoftheKing"},"content":" } catch (BadAppleException be) {","lastModifiedDate":"2024-02-01"},{"lineNumber":59,"author":{"gitId":"RingoftheKing"},"content":" System.out.println(be.toString());","lastModifiedDate":"2024-02-01"},{"lineNumber":60,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":61,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":62,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":63,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":64,"author":{"gitId":"RingoftheKing"},"content":" public static boolean makeFile() {","lastModifiedDate":"2024-02-01"},{"lineNumber":65,"author":{"gitId":"RingoftheKing"},"content":" try {","lastModifiedDate":"2024-02-01"},{"lineNumber":66,"author":{"gitId":"RingoftheKing"},"content":" File f1 \u003d new File(\"src/main/data\");","lastModifiedDate":"2024-02-01"},{"lineNumber":67,"author":{"gitId":"RingoftheKing"},"content":" File f \u003d new File(\"src/main/data/whiteSpace.txt\");","lastModifiedDate":"2024-02-01"},{"lineNumber":68,"author":{"gitId":"RingoftheKing"},"content":" return f1.mkdir() \u0026\u0026 f.createNewFile();","lastModifiedDate":"2024-02-01"},{"lineNumber":69,"author":{"gitId":"RingoftheKing"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-02-01"},{"lineNumber":70,"author":{"gitId":"RingoftheKing"},"content":" System.out.println(\"Humphrey has denied your entrance to white space! \\n \" +","lastModifiedDate":"2024-02-01"},{"lineNumber":71,"author":{"gitId":"RingoftheKing"},"content":" \"perhaps the write permissions aren\u0027t working?\");","lastModifiedDate":"2024-02-01"},{"lineNumber":72,"author":{"gitId":"RingoftheKing"},"content":" return false;","lastModifiedDate":"2024-02-01"},{"lineNumber":73,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":75,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"RingoftheKing":72,"-":3}},{"path":"src/main/java/BadApple/main/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"RingoftheKing"},"content":"package BadApple.main;","lastModifiedDate":"2024-02-04"},{"lineNumber":2,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":3,"author":{"gitId":"RingoftheKing"},"content":"import java.io.BufferedReader;","lastModifiedDate":"2024-02-04"},{"lineNumber":4,"author":{"gitId":"RingoftheKing"},"content":"import java.io.File;","lastModifiedDate":"2024-02-04"},{"lineNumber":5,"author":{"gitId":"RingoftheKing"},"content":"import java.io.FileReader;","lastModifiedDate":"2024-02-04"},{"lineNumber":6,"author":{"gitId":"RingoftheKing"},"content":"import java.io.IOException;","lastModifiedDate":"2024-02-04"},{"lineNumber":7,"author":{"gitId":"RingoftheKing"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-02-04"},{"lineNumber":8,"author":{"gitId":"RingoftheKing"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-02-04"},{"lineNumber":9,"author":{"gitId":"RingoftheKing"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-02-04"},{"lineNumber":10,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":11,"author":{"gitId":"RingoftheKing"},"content":"import static java.lang.Integer.parseInt;","lastModifiedDate":"2024-02-04"},{"lineNumber":12,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":13,"author":{"gitId":"RingoftheKing"},"content":"public class Ui {","lastModifiedDate":"2024-02-04"},{"lineNumber":14,"author":{"gitId":"RingoftheKing"},"content":" public static void showWelcome() {","lastModifiedDate":"2024-02-04"},{"lineNumber":15,"author":{"gitId":"RingoftheKing"},"content":" String logo \u003d \" __ __.__ .__ __ _________ \\n\" +","lastModifiedDate":"2024-02-04"},{"lineNumber":16,"author":{"gitId":"RingoftheKing"},"content":" \"/ \\\\ / \\\\ |__ |__|/ |_ ____ / _____/__________ ____ ____ \\n\" +","lastModifiedDate":"2024-02-04"},{"lineNumber":17,"author":{"gitId":"RingoftheKing"},"content":" \"\\\\ \\\\/\\\\/ / | \\\\| \\\\ __\\\\/ __ \\\\ \\\\_____ \\\\\\\\____ \\\\__ \\\\ _/ ___\\\\/ __ \\\\ \\n\" +","lastModifiedDate":"2024-02-04"},{"lineNumber":18,"author":{"gitId":"RingoftheKing"},"content":" \" \\\\ /| Y \\\\ || | \\\\ ___/ / \\\\ |_\u003e \u003e __ \\\\\\\\ \\\\__\\\\ ___/ \\n\" +","lastModifiedDate":"2024-02-04"},{"lineNumber":19,"author":{"gitId":"RingoftheKing"},"content":" \" \\\\__/\\\\ / |___| /__||__| \\\\___ \u003e /_______ / __(____ /\\\\___ \u003e___ \u003e\\n\" +","lastModifiedDate":"2024-02-04"},{"lineNumber":20,"author":{"gitId":"RingoftheKing"},"content":" \" \\\\/ \\\\/ \\\\/ \\\\/|__| \\\\/ \\\\/ \\\\/ \";","lastModifiedDate":"2024-02-04"},{"lineNumber":21,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":22,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":23,"author":{"gitId":"RingoftheKing"},"content":" System.out.println(\"Welcome to\");","lastModifiedDate":"2024-02-04"},{"lineNumber":24,"author":{"gitId":"RingoftheKing"},"content":" System.out.println(logo);","lastModifiedDate":"2024-02-04"},{"lineNumber":25,"author":{"gitId":"RingoftheKing"},"content":" System.out.println(\"You booted up your laptop and wonder what to do...\");","lastModifiedDate":"2024-02-04"},{"lineNumber":26,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":27,"author":{"gitId":"RingoftheKing"},"content":"}","lastModifiedDate":"2024-02-04"}],"authorContributionMap":{"RingoftheKing":27}},{"path":"src/main/java/BadApple/task/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"RingoftheKing"},"content":"package BadApple.task;","lastModifiedDate":"2024-02-04"},{"lineNumber":2,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":3,"author":{"gitId":"RingoftheKing"},"content":"import BadApple.main.BadAppleException;","lastModifiedDate":"2024-02-04"},{"lineNumber":4,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":5,"author":{"gitId":"RingoftheKing"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-02-04"},{"lineNumber":6,"author":{"gitId":"RingoftheKing"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"RingoftheKing"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"RingoftheKing"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-02-04"},{"lineNumber":9,"author":{"gitId":"RingoftheKing"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-02-04"},{"lineNumber":10,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"RingoftheKing"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-26"},{"lineNumber":12,"author":{"gitId":"RingoftheKing"},"content":" protected LocalDate by;","lastModifiedDate":"2024-02-04"},{"lineNumber":13,"author":{"gitId":"RingoftheKing"},"content":" private Deadline(String desc, String by) {","lastModifiedDate":"2024-01-26"},{"lineNumber":14,"author":{"gitId":"RingoftheKing"},"content":" super(desc);","lastModifiedDate":"2024-01-26"},{"lineNumber":15,"author":{"gitId":"RingoftheKing"},"content":" this.by \u003d LocalDate.parse(by);","lastModifiedDate":"2024-02-04"},{"lineNumber":16,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":17,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":18,"author":{"gitId":"RingoftheKing"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":19,"author":{"gitId":"RingoftheKing"},"content":" * The String a call to deadline returns","lastModifiedDate":"2024-02-01"},{"lineNumber":20,"author":{"gitId":"RingoftheKing"},"content":" * @return The task with deadline formatted to be readable by parser","lastModifiedDate":"2024-02-01"},{"lineNumber":21,"author":{"gitId":"RingoftheKing"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":22,"author":{"gitId":"RingoftheKing"},"content":" @Override","lastModifiedDate":"2024-01-26"},{"lineNumber":23,"author":{"gitId":"RingoftheKing"},"content":" public String toString() {","lastModifiedDate":"2024-01-26"},{"lineNumber":24,"author":{"gitId":"RingoftheKing"},"content":" return \"Deadline\" + \" \" + super.toString() +","lastModifiedDate":"2024-02-04"},{"lineNumber":25,"author":{"gitId":"RingoftheKing"},"content":" \"(by: \" + by.format(DateTimeFormatter.ofPattern(\"dd MMM yyyy\")) + \" )\";","lastModifiedDate":"2024-02-04"},{"lineNumber":26,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":27,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":28,"author":{"gitId":"RingoftheKing"},"content":" /**","lastModifiedDate":"2024-01-26"},{"lineNumber":29,"author":{"gitId":"RingoftheKing"},"content":" * This is a Factory Method that generates an instance","lastModifiedDate":"2024-01-26"},{"lineNumber":30,"author":{"gitId":"RingoftheKing"},"content":" * @param s an ArrayList after tokenizing the query.","lastModifiedDate":"2024-01-26"},{"lineNumber":31,"author":{"gitId":"RingoftheKing"},"content":" */","lastModifiedDate":"2024-01-26"},{"lineNumber":32,"author":{"gitId":"RingoftheKing"},"content":" public static Deadline extractDetails(ArrayList\u003cString\u003e s) throws BadAppleException, DateTimeParseException {","lastModifiedDate":"2024-02-04"},{"lineNumber":33,"author":{"gitId":"RingoftheKing"},"content":" StringBuilder taskName \u003d new StringBuilder();","lastModifiedDate":"2024-01-26"},{"lineNumber":34,"author":{"gitId":"RingoftheKing"},"content":" StringBuilder deadline \u003d new StringBuilder();","lastModifiedDate":"2024-01-26"},{"lineNumber":35,"author":{"gitId":"RingoftheKing"},"content":" int separatorIndex \u003d s.indexOf(\"/by\");","lastModifiedDate":"2024-01-26"},{"lineNumber":36,"author":{"gitId":"RingoftheKing"},"content":" if (separatorIndex \u003e 0) {","lastModifiedDate":"2024-01-26"},{"lineNumber":37,"author":{"gitId":"RingoftheKing"},"content":" for (int i \u003d 1; i \u003c separatorIndex; i++) {","lastModifiedDate":"2024-01-26"},{"lineNumber":38,"author":{"gitId":"RingoftheKing"},"content":" taskName.append(s.get(i)).append(\" \");","lastModifiedDate":"2024-01-26"},{"lineNumber":39,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":40,"author":{"gitId":"RingoftheKing"},"content":" for (int i \u003d separatorIndex + 1; i \u003c s.size();i++) {","lastModifiedDate":"2024-01-26"},{"lineNumber":41,"author":{"gitId":"RingoftheKing"},"content":" deadline.append(s.get(i));","lastModifiedDate":"2024-02-04"},{"lineNumber":42,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":43,"author":{"gitId":"RingoftheKing"},"content":" return new Deadline(taskName.toString(), deadline.toString());","lastModifiedDate":"2024-01-26"},{"lineNumber":44,"author":{"gitId":"RingoftheKing"},"content":" } else {","lastModifiedDate":"2024-01-27"},{"lineNumber":45,"author":{"gitId":"RingoftheKing"},"content":" throw new BadAppleException(\"Usage: deadline TaskName /by DueTime\");","lastModifiedDate":"2024-01-27"},{"lineNumber":46,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":47,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":48,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":49,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":50,"author":{"gitId":"RingoftheKing"},"content":" // in case anyone tries to throw an un-formatted string, the program still runs","lastModifiedDate":"2024-01-26"},{"lineNumber":51,"author":{"gitId":"RingoftheKing"},"content":" public static Deadline extractDetails(String s) {","lastModifiedDate":"2024-01-26"},{"lineNumber":52,"author":{"gitId":"RingoftheKing"},"content":" return extractDetails(new ArrayList\u003c\u003e(Arrays.asList(s.split(\" \"))));","lastModifiedDate":"2024-01-26"},{"lineNumber":53,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":54,"author":{"gitId":"RingoftheKing"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"RingoftheKing":54}},{"path":"src/main/java/BadApple/task/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"RingoftheKing"},"content":"package BadApple.task;","lastModifiedDate":"2024-02-04"},{"lineNumber":2,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":3,"author":{"gitId":"RingoftheKing"},"content":"import BadApple.main.BadAppleException;","lastModifiedDate":"2024-02-04"},{"lineNumber":4,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":5,"author":{"gitId":"RingoftheKing"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"RingoftheKing"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"RingoftheKing"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"RingoftheKing"},"content":" protected String from;","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"RingoftheKing"},"content":" protected String to;","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":12,"author":{"gitId":"RingoftheKing"},"content":" Event(String desc, String from, String to) {","lastModifiedDate":"2024-01-26"},{"lineNumber":13,"author":{"gitId":"RingoftheKing"},"content":" super(desc);","lastModifiedDate":"2024-01-26"},{"lineNumber":14,"author":{"gitId":"RingoftheKing"},"content":" this.from \u003d from;","lastModifiedDate":"2024-01-26"},{"lineNumber":15,"author":{"gitId":"RingoftheKing"},"content":" this.to \u003d to;","lastModifiedDate":"2024-01-26"},{"lineNumber":16,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":17,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":18,"author":{"gitId":"RingoftheKing"},"content":" @Override","lastModifiedDate":"2024-01-26"},{"lineNumber":19,"author":{"gitId":"RingoftheKing"},"content":" public String toString() {","lastModifiedDate":"2024-01-26"},{"lineNumber":20,"author":{"gitId":"RingoftheKing"},"content":" return \"Event\" + \" \" +","lastModifiedDate":"2024-02-01"},{"lineNumber":21,"author":{"gitId":"RingoftheKing"},"content":" super.toString() +","lastModifiedDate":"2024-01-26"},{"lineNumber":22,"author":{"gitId":"RingoftheKing"},"content":" \"(from: \" + from +","lastModifiedDate":"2024-02-01"},{"lineNumber":23,"author":{"gitId":"RingoftheKing"},"content":" \"to: \" + to + \")\";","lastModifiedDate":"2024-01-26"},{"lineNumber":24,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":25,"author":{"gitId":"RingoftheKing"},"content":" /**","lastModifiedDate":"2024-01-26"},{"lineNumber":26,"author":{"gitId":"RingoftheKing"},"content":" * This is a Factory Method that generates an instance of Event","lastModifiedDate":"2024-01-26"},{"lineNumber":27,"author":{"gitId":"RingoftheKing"},"content":" * @param s an ArrayList after tokenizing the query by WhiteSpace.","lastModifiedDate":"2024-01-26"},{"lineNumber":28,"author":{"gitId":"RingoftheKing"},"content":" */","lastModifiedDate":"2024-01-26"},{"lineNumber":29,"author":{"gitId":"RingoftheKing"},"content":" public static Event extractDetails(ArrayList\u003cString\u003e s) {","lastModifiedDate":"2024-01-26"},{"lineNumber":30,"author":{"gitId":"RingoftheKing"},"content":" StringBuilder taskName \u003d new StringBuilder();","lastModifiedDate":"2024-01-26"},{"lineNumber":31,"author":{"gitId":"RingoftheKing"},"content":" StringBuilder from \u003d new StringBuilder();","lastModifiedDate":"2024-01-26"},{"lineNumber":32,"author":{"gitId":"RingoftheKing"},"content":" StringBuilder to \u003d new StringBuilder();","lastModifiedDate":"2024-01-26"},{"lineNumber":33,"author":{"gitId":"RingoftheKing"},"content":" int fromIndex \u003d s.indexOf(\"/from\");","lastModifiedDate":"2024-01-26"},{"lineNumber":34,"author":{"gitId":"RingoftheKing"},"content":" int toIndex \u003d s.indexOf(\"/to\");","lastModifiedDate":"2024-01-26"},{"lineNumber":35,"author":{"gitId":"RingoftheKing"},"content":" if (fromIndex \u003e -1 \u0026\u0026 toIndex \u003e -1) {","lastModifiedDate":"2024-01-27"},{"lineNumber":36,"author":{"gitId":"RingoftheKing"},"content":" for (int i \u003d 1; i \u003c fromIndex; i++) {","lastModifiedDate":"2024-01-26"},{"lineNumber":37,"author":{"gitId":"RingoftheKing"},"content":" taskName.append(s.get(i)).append(\" \");","lastModifiedDate":"2024-01-26"},{"lineNumber":38,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":39,"author":{"gitId":"RingoftheKing"},"content":" for (int i \u003d fromIndex + 1; i \u003c toIndex;i++) {","lastModifiedDate":"2024-01-26"},{"lineNumber":40,"author":{"gitId":"RingoftheKing"},"content":" from.append(s.get(i)).append(\" \");","lastModifiedDate":"2024-01-26"},{"lineNumber":41,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":42,"author":{"gitId":"RingoftheKing"},"content":" for (int i \u003d toIndex + 1; i \u003c s.size(); i++) {","lastModifiedDate":"2024-01-26"},{"lineNumber":43,"author":{"gitId":"RingoftheKing"},"content":" to.append(s.get(i)).append(\" \");","lastModifiedDate":"2024-01-26"},{"lineNumber":44,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":45,"author":{"gitId":"RingoftheKing"},"content":" return new Event(taskName.toString(), from.toString(), to.toString());","lastModifiedDate":"2024-01-26"},{"lineNumber":46,"author":{"gitId":"RingoftheKing"},"content":" } else {","lastModifiedDate":"2024-01-27"},{"lineNumber":47,"author":{"gitId":"RingoftheKing"},"content":" throw new BadAppleException(\"Usage: event TaskName /from time1 /to time2\");","lastModifiedDate":"2024-01-27"},{"lineNumber":48,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":49,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":50,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":51,"author":{"gitId":"RingoftheKing"},"content":" // in case anyone tries to throw an un-formatted string, the program still runs","lastModifiedDate":"2024-02-01"},{"lineNumber":52,"author":{"gitId":"RingoftheKing"},"content":" public static Event extractDetails(String s) {","lastModifiedDate":"2024-01-26"},{"lineNumber":53,"author":{"gitId":"RingoftheKing"},"content":" return extractDetails(new ArrayList\u003c\u003e(Arrays.asList(s.split(\" \"))));","lastModifiedDate":"2024-01-26"},{"lineNumber":54,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":55,"author":{"gitId":"RingoftheKing"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"RingoftheKing":55}},{"path":"src/main/java/BadApple/task/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"RingoftheKing"},"content":"package BadApple.task;","lastModifiedDate":"2024-02-04"},{"lineNumber":2,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":3,"author":{"gitId":"RingoftheKing"},"content":"import BadApple.main.BadAppleException;","lastModifiedDate":"2024-02-04"},{"lineNumber":4,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":5,"author":{"gitId":"RingoftheKing"},"content":"import java.io.BufferedReader;","lastModifiedDate":"2024-02-04"},{"lineNumber":6,"author":{"gitId":"RingoftheKing"},"content":"import java.io.File;","lastModifiedDate":"2024-02-04"},{"lineNumber":7,"author":{"gitId":"RingoftheKing"},"content":"import java.io.FileReader;","lastModifiedDate":"2024-02-04"},{"lineNumber":8,"author":{"gitId":"RingoftheKing"},"content":"import java.io.IOException;","lastModifiedDate":"2024-02-04"},{"lineNumber":9,"author":{"gitId":"RingoftheKing"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-02-04"},{"lineNumber":10,"author":{"gitId":"RingoftheKing"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-02-04"},{"lineNumber":11,"author":{"gitId":"RingoftheKing"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-02-04"},{"lineNumber":12,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":13,"author":{"gitId":"RingoftheKing"},"content":"import static java.lang.Integer.parseInt;","lastModifiedDate":"2024-02-04"},{"lineNumber":14,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":15,"author":{"gitId":"RingoftheKing"},"content":"public class Parser {","lastModifiedDate":"2024-02-04"},{"lineNumber":16,"author":{"gitId":"RingoftheKing"},"content":" /**","lastModifiedDate":"2024-02-04"},{"lineNumber":17,"author":{"gitId":"RingoftheKing"},"content":" * Takes in a user query and performs the necessary reading and writing to a file on the drive.","lastModifiedDate":"2024-02-04"},{"lineNumber":18,"author":{"gitId":"RingoftheKing"},"content":" * The file should exist, and is by default handled by BadPingGuo","lastModifiedDate":"2024-02-04"},{"lineNumber":19,"author":{"gitId":"RingoftheKing"},"content":" * @param s the query the user would like to make","lastModifiedDate":"2024-02-04"},{"lineNumber":20,"author":{"gitId":"RingoftheKing"},"content":" * @param file the file to read or write from","lastModifiedDate":"2024-02-04"},{"lineNumber":21,"author":{"gitId":"RingoftheKing"},"content":" */","lastModifiedDate":"2024-02-04"},{"lineNumber":22,"author":{"gitId":"RingoftheKing"},"content":" public static void ProcessQuery(String s, File file) throws IOException {","lastModifiedDate":"2024-02-04"},{"lineNumber":23,"author":{"gitId":"RingoftheKing"},"content":" String[] tokens \u003d s.split(\" \");","lastModifiedDate":"2024-02-04"},{"lineNumber":24,"author":{"gitId":"RingoftheKing"},"content":" ArrayList\u003cString\u003e args \u003d new ArrayList\u003cString\u003e(Arrays.asList(tokens));","lastModifiedDate":"2024-02-04"},{"lineNumber":25,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":26,"author":{"gitId":"RingoftheKing"},"content":" switch (args.get(0).toLowerCase()) {","lastModifiedDate":"2024-02-04"},{"lineNumber":27,"author":{"gitId":"RingoftheKing"},"content":" case \"list\":","lastModifiedDate":"2024-02-04"},{"lineNumber":28,"author":{"gitId":"RingoftheKing"},"content":" TaskList.listTasks(new BufferedReader(new FileReader(file)));","lastModifiedDate":"2024-02-04"},{"lineNumber":29,"author":{"gitId":"RingoftheKing"},"content":" return;","lastModifiedDate":"2024-02-04"},{"lineNumber":30,"author":{"gitId":"RingoftheKing"},"content":" case \"mark\":","lastModifiedDate":"2024-02-04"},{"lineNumber":31,"author":{"gitId":"RingoftheKing"},"content":" try {","lastModifiedDate":"2024-02-04"},{"lineNumber":32,"author":{"gitId":"RingoftheKing"},"content":" int taskIndex \u003d parseInt(tokens[1]) - 1;","lastModifiedDate":"2024-02-04"},{"lineNumber":33,"author":{"gitId":"RingoftheKing"},"content":" Task t \u003d TaskList.tasks.get(taskIndex);","lastModifiedDate":"2024-02-04"},{"lineNumber":34,"author":{"gitId":"RingoftheKing"},"content":" t.mark(true, taskIndex);","lastModifiedDate":"2024-02-04"},{"lineNumber":35,"author":{"gitId":"RingoftheKing"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-02-04"},{"lineNumber":36,"author":{"gitId":"RingoftheKing"},"content":" System.out.println(\"Usage: mark \u003ctaskNumber\u003e\");","lastModifiedDate":"2024-02-04"},{"lineNumber":37,"author":{"gitId":"RingoftheKing"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-02-04"},{"lineNumber":38,"author":{"gitId":"RingoftheKing"},"content":" System.out.println(\"Hey you don\u0027t have that task!\");","lastModifiedDate":"2024-02-04"},{"lineNumber":39,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":40,"author":{"gitId":"RingoftheKing"},"content":" break;","lastModifiedDate":"2024-02-04"},{"lineNumber":41,"author":{"gitId":"RingoftheKing"},"content":" case \"unmark\":","lastModifiedDate":"2024-02-04"},{"lineNumber":42,"author":{"gitId":"RingoftheKing"},"content":" try {","lastModifiedDate":"2024-02-04"},{"lineNumber":43,"author":{"gitId":"RingoftheKing"},"content":" int taskIndex \u003d parseInt(tokens[1]) - 1;","lastModifiedDate":"2024-02-04"},{"lineNumber":44,"author":{"gitId":"RingoftheKing"},"content":" Task t \u003d TaskList.tasks.get(taskIndex);","lastModifiedDate":"2024-02-04"},{"lineNumber":45,"author":{"gitId":"RingoftheKing"},"content":" t.mark(false, taskIndex);","lastModifiedDate":"2024-02-04"},{"lineNumber":46,"author":{"gitId":"RingoftheKing"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-02-04"},{"lineNumber":47,"author":{"gitId":"RingoftheKing"},"content":" System.out.println(\"Usage: mark \u003ctaskNumber\u003e\");","lastModifiedDate":"2024-02-04"},{"lineNumber":48,"author":{"gitId":"RingoftheKing"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-02-04"},{"lineNumber":49,"author":{"gitId":"RingoftheKing"},"content":" System.out.println(\"Calm down! You don\u0027t have THAT many tasks!\");","lastModifiedDate":"2024-02-04"},{"lineNumber":50,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":51,"author":{"gitId":"RingoftheKing"},"content":" break;","lastModifiedDate":"2024-02-04"},{"lineNumber":52,"author":{"gitId":"RingoftheKing"},"content":" case \"todo\":","lastModifiedDate":"2024-02-04"},{"lineNumber":53,"author":{"gitId":"RingoftheKing"},"content":" // it is possible to relegate exception handling to addTask","lastModifiedDate":"2024-02-04"},{"lineNumber":54,"author":{"gitId":"RingoftheKing"},"content":" // you must use fp and implement lazy evaluation","lastModifiedDate":"2024-02-04"},{"lineNumber":55,"author":{"gitId":"RingoftheKing"},"content":" try {","lastModifiedDate":"2024-02-04"},{"lineNumber":56,"author":{"gitId":"RingoftheKing"},"content":" Storage.addTask(Todo.extractDetails(s));","lastModifiedDate":"2024-02-04"},{"lineNumber":57,"author":{"gitId":"RingoftheKing"},"content":" } catch (BadAppleException be) {","lastModifiedDate":"2024-02-04"},{"lineNumber":58,"author":{"gitId":"RingoftheKing"},"content":" System.out.println(be);","lastModifiedDate":"2024-02-04"},{"lineNumber":59,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":60,"author":{"gitId":"RingoftheKing"},"content":" break;","lastModifiedDate":"2024-02-04"},{"lineNumber":61,"author":{"gitId":"RingoftheKing"},"content":" case \"deadline\":","lastModifiedDate":"2024-02-04"},{"lineNumber":62,"author":{"gitId":"RingoftheKing"},"content":" try {","lastModifiedDate":"2024-02-04"},{"lineNumber":63,"author":{"gitId":"RingoftheKing"},"content":" Storage.addTask(Deadline.extractDetails(args));","lastModifiedDate":"2024-02-04"},{"lineNumber":64,"author":{"gitId":"RingoftheKing"},"content":" } catch (BadAppleException be) {","lastModifiedDate":"2024-02-04"},{"lineNumber":65,"author":{"gitId":"RingoftheKing"},"content":" System.out.println(be);","lastModifiedDate":"2024-02-04"},{"lineNumber":66,"author":{"gitId":"RingoftheKing"},"content":" } catch (DateTimeParseException dateError) {","lastModifiedDate":"2024-02-04"},{"lineNumber":67,"author":{"gitId":"RingoftheKing"},"content":" System.out.println(\"Date should be in YYYY-MM-DD format\");","lastModifiedDate":"2024-02-04"},{"lineNumber":68,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":69,"author":{"gitId":"RingoftheKing"},"content":" break;","lastModifiedDate":"2024-02-04"},{"lineNumber":70,"author":{"gitId":"RingoftheKing"},"content":" case \"event\":","lastModifiedDate":"2024-02-04"},{"lineNumber":71,"author":{"gitId":"RingoftheKing"},"content":" try {","lastModifiedDate":"2024-02-04"},{"lineNumber":72,"author":{"gitId":"RingoftheKing"},"content":" Storage.addTask(Event.extractDetails(args));","lastModifiedDate":"2024-02-04"},{"lineNumber":73,"author":{"gitId":"RingoftheKing"},"content":" } catch (BadAppleException be) {","lastModifiedDate":"2024-02-04"},{"lineNumber":74,"author":{"gitId":"RingoftheKing"},"content":" System.out.println(be);","lastModifiedDate":"2024-02-04"},{"lineNumber":75,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":76,"author":{"gitId":"RingoftheKing"},"content":" break;","lastModifiedDate":"2024-02-04"},{"lineNumber":77,"author":{"gitId":"RingoftheKing"},"content":" case \"delete\":","lastModifiedDate":"2024-02-04"},{"lineNumber":78,"author":{"gitId":"RingoftheKing"},"content":" if (tokens.length \u003c\u003d 1) {","lastModifiedDate":"2024-02-04"},{"lineNumber":79,"author":{"gitId":"RingoftheKing"},"content":" System.out.println(\"Kel nuked, but he missed what task you wanted to remove!\");","lastModifiedDate":"2024-02-04"},{"lineNumber":80,"author":{"gitId":"RingoftheKing"},"content":" break;","lastModifiedDate":"2024-02-04"},{"lineNumber":81,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":82,"author":{"gitId":"RingoftheKing"},"content":" int taskIndex;","lastModifiedDate":"2024-02-04"},{"lineNumber":83,"author":{"gitId":"RingoftheKing"},"content":" try {","lastModifiedDate":"2024-02-04"},{"lineNumber":84,"author":{"gitId":"RingoftheKing"},"content":" taskIndex \u003d parseInt(tokens[1]) - 1;","lastModifiedDate":"2024-02-04"},{"lineNumber":85,"author":{"gitId":"RingoftheKing"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-02-04"},{"lineNumber":86,"author":{"gitId":"RingoftheKing"},"content":" System.out.println(\"Usage: delete \u003ctaskNumber\u003e\");","lastModifiedDate":"2024-02-04"},{"lineNumber":87,"author":{"gitId":"RingoftheKing"},"content":" break;","lastModifiedDate":"2024-02-04"},{"lineNumber":88,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":89,"author":{"gitId":"RingoftheKing"},"content":" if (taskIndex \u003e\u003d 0 \u0026\u0026 taskIndex \u003c TaskList.tasks.size()) {","lastModifiedDate":"2024-02-04"},{"lineNumber":90,"author":{"gitId":"RingoftheKing"},"content":" Storage.removeTask(taskIndex);","lastModifiedDate":"2024-02-04"},{"lineNumber":91,"author":{"gitId":"RingoftheKing"},"content":" } else {","lastModifiedDate":"2024-02-04"},{"lineNumber":92,"author":{"gitId":"RingoftheKing"},"content":" System.out.println(\"welcome to BLACK SPACE, you keyed in a non-existent task!\");","lastModifiedDate":"2024-02-04"},{"lineNumber":93,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":94,"author":{"gitId":"RingoftheKing"},"content":" break;","lastModifiedDate":"2024-02-04"},{"lineNumber":95,"author":{"gitId":"RingoftheKing"},"content":" default:","lastModifiedDate":"2024-02-04"},{"lineNumber":96,"author":{"gitId":"RingoftheKing"},"content":" System.out.println(\"Whatcha sayin? scream \u0027help!\u0027 for list of my services\");","lastModifiedDate":"2024-02-04"},{"lineNumber":97,"author":{"gitId":"RingoftheKing"},"content":" return;","lastModifiedDate":"2024-02-04"},{"lineNumber":98,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":99,"author":{"gitId":"RingoftheKing"},"content":" Storage.updateTasks(file);","lastModifiedDate":"2024-02-04"},{"lineNumber":100,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":101,"author":{"gitId":"RingoftheKing"},"content":"}","lastModifiedDate":"2024-02-04"}],"authorContributionMap":{"RingoftheKing":101}},{"path":"src/main/java/BadApple/task/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"RingoftheKing"},"content":"package BadApple.task;","lastModifiedDate":"2024-02-04"},{"lineNumber":2,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":3,"author":{"gitId":"RingoftheKing"},"content":"import BadApple.main.BadAppleException;","lastModifiedDate":"2024-02-04"},{"lineNumber":4,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":5,"author":{"gitId":"RingoftheKing"},"content":"import java.io.*;","lastModifiedDate":"2024-02-04"},{"lineNumber":6,"author":{"gitId":"RingoftheKing"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-02-04"},{"lineNumber":7,"author":{"gitId":"RingoftheKing"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-02-04"},{"lineNumber":8,"author":{"gitId":"RingoftheKing"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-02-04"},{"lineNumber":9,"author":{"gitId":"RingoftheKing"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-02-04"},{"lineNumber":10,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":11,"author":{"gitId":"RingoftheKing"},"content":"public class Storage {","lastModifiedDate":"2024-02-04"},{"lineNumber":12,"author":{"gitId":"RingoftheKing"},"content":" /**","lastModifiedDate":"2024-02-04"},{"lineNumber":13,"author":{"gitId":"RingoftheKing"},"content":" * After each request by the user, erases previous contents of the file","lastModifiedDate":"2024-02-04"},{"lineNumber":14,"author":{"gitId":"RingoftheKing"},"content":" * and rebuilds the file based on task list","lastModifiedDate":"2024-02-04"},{"lineNumber":15,"author":{"gitId":"RingoftheKing"},"content":" * @param file the file to write tasks to","lastModifiedDate":"2024-02-04"},{"lineNumber":16,"author":{"gitId":"RingoftheKing"},"content":" * @throws IOException if file writing fails for any reason","lastModifiedDate":"2024-02-04"},{"lineNumber":17,"author":{"gitId":"RingoftheKing"},"content":" */","lastModifiedDate":"2024-02-04"},{"lineNumber":18,"author":{"gitId":"RingoftheKing"},"content":" public static void updateTasks(File file) throws IOException {","lastModifiedDate":"2024-02-04"},{"lineNumber":19,"author":{"gitId":"RingoftheKing"},"content":" BufferedWriter bufferedWriter \u003d new BufferedWriter(new FileWriter(file));","lastModifiedDate":"2024-02-04"},{"lineNumber":20,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":21,"author":{"gitId":"RingoftheKing"},"content":" // write to file","lastModifiedDate":"2024-02-04"},{"lineNumber":22,"author":{"gitId":"RingoftheKing"},"content":" int index \u003d 1;","lastModifiedDate":"2024-02-04"},{"lineNumber":23,"author":{"gitId":"RingoftheKing"},"content":" for (Task t : TaskList.tasks) {","lastModifiedDate":"2024-02-04"},{"lineNumber":24,"author":{"gitId":"RingoftheKing"},"content":" String task \u003d index + \" \" + t.toString() + \"\\n\";","lastModifiedDate":"2024-02-04"},{"lineNumber":25,"author":{"gitId":"RingoftheKing"},"content":" bufferedWriter.write(task);","lastModifiedDate":"2024-02-04"},{"lineNumber":26,"author":{"gitId":"RingoftheKing"},"content":" index++;","lastModifiedDate":"2024-02-04"},{"lineNumber":27,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":28,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":29,"author":{"gitId":"RingoftheKing"},"content":" bufferedWriter.close();","lastModifiedDate":"2024-02-04"},{"lineNumber":30,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":31,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":32,"author":{"gitId":"RingoftheKing"},"content":" public static void addTask(Task task) {","lastModifiedDate":"2024-02-04"},{"lineNumber":33,"author":{"gitId":"RingoftheKing"},"content":" TaskList.tasks.add(task);","lastModifiedDate":"2024-02-04"},{"lineNumber":34,"author":{"gitId":"RingoftheKing"},"content":" if (!Tracker.suppressMessages) {","lastModifiedDate":"2024-02-04"},{"lineNumber":35,"author":{"gitId":"RingoftheKing"},"content":" System.out.println(Tracker.CustomMessages.randomMsg(task));","lastModifiedDate":"2024-02-04"},{"lineNumber":36,"author":{"gitId":"RingoftheKing"},"content":" System.out.println(task);","lastModifiedDate":"2024-02-04"},{"lineNumber":37,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":38,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":39,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":40,"author":{"gitId":"RingoftheKing"},"content":" public static void removeTask(int i) {","lastModifiedDate":"2024-02-04"},{"lineNumber":41,"author":{"gitId":"RingoftheKing"},"content":" System.out.println(\"Exploooosion! now task \" + TaskList.tasks.remove(i).brief() + \" has been Kazuma-ed out of existence\");","lastModifiedDate":"2024-02-04"},{"lineNumber":42,"author":{"gitId":"RingoftheKing"},"content":" System.out.println(\"You now have \" + TaskList.tasks.size() + \" tasks in your list\");","lastModifiedDate":"2024-02-04"},{"lineNumber":43,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":44,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":45,"author":{"gitId":"RingoftheKing"},"content":" /**","lastModifiedDate":"2024-02-04"},{"lineNumber":46,"author":{"gitId":"RingoftheKing"},"content":" * given a File and its contents, add it into the Tracker\u0027s taskList","lastModifiedDate":"2024-02-04"},{"lineNumber":47,"author":{"gitId":"RingoftheKing"},"content":" * @param file the file to read from","lastModifiedDate":"2024-02-04"},{"lineNumber":48,"author":{"gitId":"RingoftheKing"},"content":" * @throws IOException when a file can\u0027t be read from","lastModifiedDate":"2024-02-04"},{"lineNumber":49,"author":{"gitId":"RingoftheKing"},"content":" * @throws BadAppleException when the file contents are in the wrong format (i.e. non-command)","lastModifiedDate":"2024-02-04"},{"lineNumber":50,"author":{"gitId":"RingoftheKing"},"content":" */","lastModifiedDate":"2024-02-04"},{"lineNumber":51,"author":{"gitId":"RingoftheKing"},"content":" public static void parseTasks(File file) throws IOException, BadAppleException {","lastModifiedDate":"2024-02-04"},{"lineNumber":52,"author":{"gitId":"RingoftheKing"},"content":" // check the file to see what tasks are already available.","lastModifiedDate":"2024-02-04"},{"lineNumber":53,"author":{"gitId":"RingoftheKing"},"content":" BufferedReader bufferedReader \u003d new BufferedReader(new FileReader(file));","lastModifiedDate":"2024-02-04"},{"lineNumber":54,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":55,"author":{"gitId":"RingoftheKing"},"content":" int taskIndex \u003d 1;","lastModifiedDate":"2024-02-04"},{"lineNumber":56,"author":{"gitId":"RingoftheKing"},"content":" while (bufferedReader.ready()) {","lastModifiedDate":"2024-02-04"},{"lineNumber":57,"author":{"gitId":"RingoftheKing"},"content":" String line \u003d bufferedReader.readLine();","lastModifiedDate":"2024-02-04"},{"lineNumber":58,"author":{"gitId":"RingoftheKing"},"content":" // deconstruct the line:","lastModifiedDate":"2024-02-04"},{"lineNumber":59,"author":{"gitId":"RingoftheKing"},"content":" ArrayList\u003cString\u003e args \u003d new ArrayList\u003c\u003e(Arrays.asList(line.split(\" \")));","lastModifiedDate":"2024-02-04"},{"lineNumber":60,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":61,"author":{"gitId":"RingoftheKing"},"content":" String command \u003d \"\";","lastModifiedDate":"2024-02-04"},{"lineNumber":62,"author":{"gitId":"RingoftheKing"},"content":" String query \u003d \"\";","lastModifiedDate":"2024-02-04"},{"lineNumber":63,"author":{"gitId":"RingoftheKing"},"content":" StringBuilder taskName;","lastModifiedDate":"2024-02-04"},{"lineNumber":64,"author":{"gitId":"RingoftheKing"},"content":" boolean status \u003d args.get(2).equals(\"[X]\");","lastModifiedDate":"2024-02-04"},{"lineNumber":65,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":66,"author":{"gitId":"RingoftheKing"},"content":" if (!(args.size() \u003c 2)) {","lastModifiedDate":"2024-02-04"},{"lineNumber":67,"author":{"gitId":"RingoftheKing"},"content":" command \u003d args.get(1);","lastModifiedDate":"2024-02-04"},{"lineNumber":68,"author":{"gitId":"RingoftheKing"},"content":" } else {","lastModifiedDate":"2024-02-04"},{"lineNumber":69,"author":{"gitId":"RingoftheKing"},"content":" return;","lastModifiedDate":"2024-02-04"},{"lineNumber":70,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":71,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":72,"author":{"gitId":"RingoftheKing"},"content":" switch (command.toLowerCase()) {","lastModifiedDate":"2024-02-04"},{"lineNumber":73,"author":{"gitId":"RingoftheKing"},"content":" case \"todo\":","lastModifiedDate":"2024-02-04"},{"lineNumber":74,"author":{"gitId":"RingoftheKing"},"content":" // the fourth token should be the task name for this command.","lastModifiedDate":"2024-02-04"},{"lineNumber":75,"author":{"gitId":"RingoftheKing"},"content":" if (args.size() \u003c 4) {","lastModifiedDate":"2024-02-04"},{"lineNumber":76,"author":{"gitId":"RingoftheKing"},"content":" throw new BadAppleException(\"Todo Task in wrong format, \" +","lastModifiedDate":"2024-02-04"},{"lineNumber":77,"author":{"gitId":"RingoftheKing"},"content":" \"should be \u003cnumber\u003e todo \u003cstatus\u003e \u003ctaskName\u003e\");","lastModifiedDate":"2024-02-04"},{"lineNumber":78,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":79,"author":{"gitId":"RingoftheKing"},"content":" taskName \u003d new StringBuilder();","lastModifiedDate":"2024-02-04"},{"lineNumber":80,"author":{"gitId":"RingoftheKing"},"content":" for (int i \u003d 3; i \u003c args.size(); i++) {","lastModifiedDate":"2024-02-04"},{"lineNumber":81,"author":{"gitId":"RingoftheKing"},"content":" taskName.append(args.get(i));","lastModifiedDate":"2024-02-04"},{"lineNumber":82,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":83,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":84,"author":{"gitId":"RingoftheKing"},"content":" query \u003d \"todo \" + taskName;","lastModifiedDate":"2024-02-04"},{"lineNumber":85,"author":{"gitId":"RingoftheKing"},"content":" break;","lastModifiedDate":"2024-02-04"},{"lineNumber":86,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":87,"author":{"gitId":"RingoftheKing"},"content":" case \"deadline\":","lastModifiedDate":"2024-02-04"},{"lineNumber":88,"author":{"gitId":"RingoftheKing"},"content":" if (args.size() \u003c 6 || !args.contains(\"(by:\")) {","lastModifiedDate":"2024-02-04"},{"lineNumber":89,"author":{"gitId":"RingoftheKing"},"content":" throw new BadAppleException(\"Deadline in wrong format\" +","lastModifiedDate":"2024-02-04"},{"lineNumber":90,"author":{"gitId":"RingoftheKing"},"content":" \"should be \u003cnumber\u003e \u0027deadline\u0027 \u003cstatus\u003e \u003cdescription\u003e \u0027(by: \u0027 \u003cByValue\u003e\");","lastModifiedDate":"2024-02-04"},{"lineNumber":91,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":92,"author":{"gitId":"RingoftheKing"},"content":" taskName \u003d new StringBuilder();","lastModifiedDate":"2024-02-04"},{"lineNumber":93,"author":{"gitId":"RingoftheKing"},"content":" StringBuilder by \u003d new StringBuilder();","lastModifiedDate":"2024-02-04"},{"lineNumber":94,"author":{"gitId":"RingoftheKing"},"content":" int separator \u003d args.indexOf(\"(by:\");","lastModifiedDate":"2024-02-04"},{"lineNumber":95,"author":{"gitId":"RingoftheKing"},"content":" for (int i \u003d 3; i \u003c separator; i++) {","lastModifiedDate":"2024-02-04"},{"lineNumber":96,"author":{"gitId":"RingoftheKing"},"content":" taskName.append(args.get(i)).append(\" \");","lastModifiedDate":"2024-02-04"},{"lineNumber":97,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":98,"author":{"gitId":"RingoftheKing"},"content":" for (int i \u003d separator + 1; i \u003c args.size() - 1; i++) {","lastModifiedDate":"2024-02-04"},{"lineNumber":99,"author":{"gitId":"RingoftheKing"},"content":" by.append(args.get(i)).append(\" \");","lastModifiedDate":"2024-02-04"},{"lineNumber":100,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":101,"author":{"gitId":"RingoftheKing"},"content":" by.deleteCharAt(by.length() - 1);","lastModifiedDate":"2024-02-04"},{"lineNumber":102,"author":{"gitId":"RingoftheKing"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"dd MMM uuuu\");","lastModifiedDate":"2024-02-04"},{"lineNumber":103,"author":{"gitId":"RingoftheKing"},"content":" LocalDate byValue \u003d LocalDate.parse(by, formatter);","lastModifiedDate":"2024-02-04"},{"lineNumber":104,"author":{"gitId":"RingoftheKing"},"content":" query \u003d \"deadline \" + taskName + \"/by \" + byValue;","lastModifiedDate":"2024-02-04"},{"lineNumber":105,"author":{"gitId":"RingoftheKing"},"content":" break;","lastModifiedDate":"2024-02-04"},{"lineNumber":106,"author":{"gitId":"RingoftheKing"},"content":" case \"event\":","lastModifiedDate":"2024-02-04"},{"lineNumber":107,"author":{"gitId":"RingoftheKing"},"content":" if (args.size() \u003c 8 || !(args.contains(\"(from:\") \u0026\u0026 args.contains(\"to:\"))) {","lastModifiedDate":"2024-02-04"},{"lineNumber":108,"author":{"gitId":"RingoftheKing"},"content":" throw new BadAppleException(\"Event in wrong format\" +","lastModifiedDate":"2024-02-04"},{"lineNumber":109,"author":{"gitId":"RingoftheKing"},"content":" \"should be \u003cno.\u003e \u0027event\u0027 \u003cstatus\u003e \u003cdescription\u003e \" +","lastModifiedDate":"2024-02-04"},{"lineNumber":110,"author":{"gitId":"RingoftheKing"},"content":" \"\u0027(from: \u0027 \u003cfromValue\u003e \u0027to: \u0027 \u003ctoValue\u003e\");","lastModifiedDate":"2024-02-04"},{"lineNumber":111,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":112,"author":{"gitId":"RingoftheKing"},"content":" taskName \u003d new StringBuilder();","lastModifiedDate":"2024-02-04"},{"lineNumber":113,"author":{"gitId":"RingoftheKing"},"content":" StringBuilder from \u003d new StringBuilder();","lastModifiedDate":"2024-02-04"},{"lineNumber":114,"author":{"gitId":"RingoftheKing"},"content":" StringBuilder to \u003d new StringBuilder();","lastModifiedDate":"2024-02-04"},{"lineNumber":115,"author":{"gitId":"RingoftheKing"},"content":" int fromSeparator \u003d args.indexOf(\"(from:\");","lastModifiedDate":"2024-02-04"},{"lineNumber":116,"author":{"gitId":"RingoftheKing"},"content":" for (int i \u003d 3; i \u003c fromSeparator; i++) {","lastModifiedDate":"2024-02-04"},{"lineNumber":117,"author":{"gitId":"RingoftheKing"},"content":" taskName.append(args.get(i)).append(\" \");","lastModifiedDate":"2024-02-04"},{"lineNumber":118,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":119,"author":{"gitId":"RingoftheKing"},"content":" int toSeparator \u003d args.indexOf(\"to:\");","lastModifiedDate":"2024-02-04"},{"lineNumber":120,"author":{"gitId":"RingoftheKing"},"content":" for (int i \u003d fromSeparator + 1; i \u003c toSeparator; i++) {","lastModifiedDate":"2024-02-04"},{"lineNumber":121,"author":{"gitId":"RingoftheKing"},"content":" from.append(args.get(i)).append(\" \");","lastModifiedDate":"2024-02-04"},{"lineNumber":122,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":123,"author":{"gitId":"RingoftheKing"},"content":" for (int i \u003d toSeparator + 1; i \u003c args.size() - 1; i++) {","lastModifiedDate":"2024-02-04"},{"lineNumber":124,"author":{"gitId":"RingoftheKing"},"content":" to.append(args.get(i)).append(\" \");","lastModifiedDate":"2024-02-04"},{"lineNumber":125,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":126,"author":{"gitId":"RingoftheKing"},"content":" query \u003d \"event \" + taskName + \"/from \" + from + \"/to \" + to;","lastModifiedDate":"2024-02-04"},{"lineNumber":127,"author":{"gitId":"RingoftheKing"},"content":" break;","lastModifiedDate":"2024-02-04"},{"lineNumber":128,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":129,"author":{"gitId":"RingoftheKing"},"content":" default:","lastModifiedDate":"2024-02-04"},{"lineNumber":130,"author":{"gitId":"RingoftheKing"},"content":" System.out.println(\"unrecognizable command detected\");","lastModifiedDate":"2024-02-04"},{"lineNumber":131,"author":{"gitId":"RingoftheKing"},"content":" throw new BadAppleException(\"The sun shined brighter when your files weren\u0027t corrupted\");","lastModifiedDate":"2024-02-04"},{"lineNumber":132,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":133,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":134,"author":{"gitId":"RingoftheKing"},"content":" // upon reconstructing the command, execute it.","lastModifiedDate":"2024-02-04"},{"lineNumber":135,"author":{"gitId":"RingoftheKing"},"content":" Parser.ProcessQuery(query, file);","lastModifiedDate":"2024-02-04"},{"lineNumber":136,"author":{"gitId":"RingoftheKing"},"content":" if (status) {","lastModifiedDate":"2024-02-04"},{"lineNumber":137,"author":{"gitId":"RingoftheKing"},"content":" // if this task is already complete, mark it.","lastModifiedDate":"2024-02-04"},{"lineNumber":138,"author":{"gitId":"RingoftheKing"},"content":" Parser.ProcessQuery(\"mark \" + taskIndex, file);","lastModifiedDate":"2024-02-04"},{"lineNumber":139,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":140,"author":{"gitId":"RingoftheKing"},"content":" taskIndex++;","lastModifiedDate":"2024-02-04"},{"lineNumber":141,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":142,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":143,"author":{"gitId":"RingoftheKing"},"content":"}","lastModifiedDate":"2024-02-04"}],"authorContributionMap":{"RingoftheKing":143}},{"path":"src/main/java/BadApple/task/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"RingoftheKing"},"content":"package BadApple.task;","lastModifiedDate":"2024-02-04"},{"lineNumber":2,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":3,"author":{"gitId":"RingoftheKing"},"content":"import static java.lang.Integer.parseInt;","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"RingoftheKing"},"content":"public class Task {","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"RingoftheKing"},"content":" protected String description;","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"RingoftheKing"},"content":" protected boolean isComplete \u003d false;","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"RingoftheKing"},"content":" public Task(String desc) {","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"RingoftheKing"},"content":" this.description \u003d desc;","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"RingoftheKing"},"content":" public void mark(boolean b, int taskIndex) {","lastModifiedDate":"2024-01-26"},{"lineNumber":15,"author":{"gitId":"RingoftheKing"},"content":" String MARK \u003d b ? \"marked\" : \"unmarked\"; //use enums if more needed","lastModifiedDate":"2024-01-26"},{"lineNumber":16,"author":{"gitId":"RingoftheKing"},"content":" if (TaskList.tasks.isEmpty()) {","lastModifiedDate":"2024-02-04"},{"lineNumber":17,"author":{"gitId":"RingoftheKing"},"content":" System.out.println(\"There\u0027s nothing to mark, Yay!\");","lastModifiedDate":"2024-01-26"},{"lineNumber":18,"author":{"gitId":"RingoftheKing"},"content":" return;","lastModifiedDate":"2024-01-26"},{"lineNumber":19,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"RingoftheKing"},"content":" try {","lastModifiedDate":"2024-01-26"},{"lineNumber":21,"author":{"gitId":"RingoftheKing"},"content":" if (taskIndex \u003e TaskList.tasks.size() || taskIndex \u003c 0) {","lastModifiedDate":"2024-02-04"},{"lineNumber":22,"author":{"gitId":"RingoftheKing"},"content":" System.out.println(\"You don\u0027t have that task silly!\");","lastModifiedDate":"2024-01-26"},{"lineNumber":23,"author":{"gitId":"RingoftheKing"},"content":" return;","lastModifiedDate":"2024-01-26"},{"lineNumber":24,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":25,"author":{"gitId":"RingoftheKing"},"content":" this.isComplete \u003d b;","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"RingoftheKing"},"content":" if (!Tracker.suppressMessages) {","lastModifiedDate":"2024-02-01"},{"lineNumber":27,"author":{"gitId":"RingoftheKing"},"content":" System.out.println(\"I\u0027ve \" + MARK + \" task \" + (taskIndex+1));","lastModifiedDate":"2024-02-01"},{"lineNumber":28,"author":{"gitId":"RingoftheKing"},"content":" System.out.println(this);","lastModifiedDate":"2024-01-26"},{"lineNumber":29,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":30,"author":{"gitId":"RingoftheKing"},"content":" } catch(NumberFormatException | IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-26"},{"lineNumber":31,"author":{"gitId":"RingoftheKing"},"content":" System.out.println(\"Usage: mark \u003ctaskNumber\u003e\");","lastModifiedDate":"2024-01-26"},{"lineNumber":32,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":33,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":34,"author":{"gitId":"RingoftheKing"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":35,"author":{"gitId":"RingoftheKing"},"content":" public String toString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":36,"author":{"gitId":"RingoftheKing"},"content":" String completion \u003d isComplete ? \"[X]\" : \"[]\";","lastModifiedDate":"2024-01-25"},{"lineNumber":37,"author":{"gitId":"RingoftheKing"},"content":" return completion + \" \" + description;","lastModifiedDate":"2024-01-26"},{"lineNumber":38,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":39,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":40,"author":{"gitId":"RingoftheKing"},"content":" public String brief() {","lastModifiedDate":"2024-01-26"},{"lineNumber":41,"author":{"gitId":"RingoftheKing"},"content":" return description;","lastModifiedDate":"2024-01-26"},{"lineNumber":42,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":43,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":44,"author":{"gitId":"RingoftheKing"},"content":" @Override","lastModifiedDate":"2024-02-05"},{"lineNumber":45,"author":{"gitId":"RingoftheKing"},"content":" public boolean equals(Object o) {","lastModifiedDate":"2024-02-05"},{"lineNumber":46,"author":{"gitId":"RingoftheKing"},"content":" if (this \u003d\u003d o) {","lastModifiedDate":"2024-02-05"},{"lineNumber":47,"author":{"gitId":"RingoftheKing"},"content":" return true;","lastModifiedDate":"2024-02-05"},{"lineNumber":48,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":49,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":50,"author":{"gitId":"RingoftheKing"},"content":" if (o instanceof Task) {","lastModifiedDate":"2024-02-05"},{"lineNumber":51,"author":{"gitId":"RingoftheKing"},"content":" Task task \u003d (Task) o;","lastModifiedDate":"2024-02-05"},{"lineNumber":52,"author":{"gitId":"RingoftheKing"},"content":" return task.description.equals(this.description);","lastModifiedDate":"2024-02-05"},{"lineNumber":53,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":54,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":55,"author":{"gitId":"RingoftheKing"},"content":" return false;","lastModifiedDate":"2024-02-05"},{"lineNumber":56,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":57,"author":{"gitId":"RingoftheKing"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"RingoftheKing":57}},{"path":"src/main/java/BadApple/task/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"RingoftheKing"},"content":"package BadApple.task;","lastModifiedDate":"2024-02-04"},{"lineNumber":2,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":3,"author":{"gitId":"RingoftheKing"},"content":"import java.io.BufferedReader;","lastModifiedDate":"2024-02-04"},{"lineNumber":4,"author":{"gitId":"RingoftheKing"},"content":"import java.io.IOException;","lastModifiedDate":"2024-02-04"},{"lineNumber":5,"author":{"gitId":"RingoftheKing"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-02-04"},{"lineNumber":6,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":7,"author":{"gitId":"RingoftheKing"},"content":"public class TaskList {","lastModifiedDate":"2024-02-04"},{"lineNumber":8,"author":{"gitId":"RingoftheKing"},"content":" public static ArrayList\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e(); // Globally accessible Tasks in memory.","lastModifiedDate":"2024-02-04"},{"lineNumber":9,"author":{"gitId":"RingoftheKing"},"content":" public static void listTasks(BufferedReader bufferedReader) throws IOException {","lastModifiedDate":"2024-02-04"},{"lineNumber":10,"author":{"gitId":"RingoftheKing"},"content":" while (bufferedReader.ready()) {","lastModifiedDate":"2024-02-04"},{"lineNumber":11,"author":{"gitId":"RingoftheKing"},"content":" System.out.println(bufferedReader.readLine());","lastModifiedDate":"2024-02-04"},{"lineNumber":12,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":13,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":14,"author":{"gitId":"RingoftheKing"},"content":"}","lastModifiedDate":"2024-02-04"}],"authorContributionMap":{"RingoftheKing":14}},{"path":"src/main/java/BadApple/task/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"RingoftheKing"},"content":"package BadApple.task;","lastModifiedDate":"2024-02-04"},{"lineNumber":2,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":3,"author":{"gitId":"RingoftheKing"},"content":"import BadApple.main.BadAppleException;","lastModifiedDate":"2024-02-04"},{"lineNumber":4,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"RingoftheKing"},"content":"public class Todo extends Task {","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"RingoftheKing"},"content":" protected Todo(String desc) {","lastModifiedDate":"2024-02-05"},{"lineNumber":8,"author":{"gitId":"RingoftheKing"},"content":" super(desc);","lastModifiedDate":"2024-02-01"},{"lineNumber":9,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":10,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":11,"author":{"gitId":"RingoftheKing"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":12,"author":{"gitId":"RingoftheKing"},"content":" * This is a Factory Method that generates a Todo instance","lastModifiedDate":"2024-02-01"},{"lineNumber":13,"author":{"gitId":"RingoftheKing"},"content":" * @param s an ArrayList after tokenizing the query.","lastModifiedDate":"2024-02-01"},{"lineNumber":14,"author":{"gitId":"RingoftheKing"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":15,"author":{"gitId":"RingoftheKing"},"content":" public static Todo extractDetails(String s) throws BadAppleException {","lastModifiedDate":"2024-01-27"},{"lineNumber":16,"author":{"gitId":"RingoftheKing"},"content":" if (s.split(\" \").length \u003d\u003d 1) {","lastModifiedDate":"2024-01-27"},{"lineNumber":17,"author":{"gitId":"RingoftheKing"},"content":" throw new BadAppleException(\"There is nothing here.\");","lastModifiedDate":"2024-01-27"},{"lineNumber":18,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":19,"author":{"gitId":"RingoftheKing"},"content":" // This removes the \"todo\" from the front","lastModifiedDate":"2024-01-26"},{"lineNumber":20,"author":{"gitId":"RingoftheKing"},"content":" return new Todo(s.substring(5));","lastModifiedDate":"2024-01-26"},{"lineNumber":21,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":22,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":23,"author":{"gitId":"RingoftheKing"},"content":" @Override","lastModifiedDate":"2024-01-26"},{"lineNumber":24,"author":{"gitId":"RingoftheKing"},"content":" public String toString() {","lastModifiedDate":"2024-01-26"},{"lineNumber":25,"author":{"gitId":"RingoftheKing"},"content":" return \"Todo\" + \" \" + super.toString();","lastModifiedDate":"2024-02-01"},{"lineNumber":26,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":27,"author":{"gitId":"RingoftheKing"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"RingoftheKing":27}},{"path":"src/main/java/BadApple/task/Tracker.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"RingoftheKing"},"content":"package BadApple.task;","lastModifiedDate":"2024-02-04"},{"lineNumber":2,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":3,"author":{"gitId":"RingoftheKing"},"content":"import java.util.Random;","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"RingoftheKing"},"content":"import static java.lang.Integer.parseInt;","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"RingoftheKing"},"content":"public class Tracker {","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"RingoftheKing"},"content":" public static boolean suppressMessages \u003d false;","lastModifiedDate":"2024-02-01"},{"lineNumber":9,"author":{"gitId":"RingoftheKing"},"content":" /**","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"RingoftheKing"},"content":" * When a user adds a task, a response of PrependMessages + task is rendered","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"RingoftheKing"},"content":" * To add a message: Write the enum and then place a prepend and append message in brackets","lastModifiedDate":"2024-02-01"},{"lineNumber":12,"author":{"gitId":"RingoftheKing"},"content":" * e.g. ANGRY(\"You better get your ass up and\", \"otherwise Freddy will get you\"),","lastModifiedDate":"2024-02-01"},{"lineNumber":13,"author":{"gitId":"RingoftheKing"},"content":" */","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"RingoftheKing"},"content":" enum CustomMessages {","lastModifiedDate":"2024-01-26"},{"lineNumber":15,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"RingoftheKing"},"content":" DEFAULT(\"Added: \", \"\"),","lastModifiedDate":"2024-01-26"},{"lineNumber":17,"author":{"gitId":"RingoftheKing"},"content":" SUSPENSE(\"Are you sure you want to: \", \" Mewo looks at you, frightened\"),","lastModifiedDate":"2024-01-26"},{"lineNumber":18,"author":{"gitId":"RingoftheKing"},"content":" HAPPY(\"I\u0027m sure you can \", \" I\u0027ll always be By Your Side\"),","lastModifiedDate":"2024-01-26"},{"lineNumber":19,"author":{"gitId":"RingoftheKing"},"content":" DEMEANING(\"Don\u0027t tell me you can\u0027t \", \" don\u0027t disappoint me\");","lastModifiedDate":"2024-01-26"},{"lineNumber":20,"author":{"gitId":"RingoftheKing"},"content":" private final String prepend;","lastModifiedDate":"2024-01-26"},{"lineNumber":21,"author":{"gitId":"RingoftheKing"},"content":" private final String append;","lastModifiedDate":"2024-01-26"},{"lineNumber":22,"author":{"gitId":"RingoftheKing"},"content":" private static final Random RNG \u003d new Random();","lastModifiedDate":"2024-01-24"},{"lineNumber":23,"author":{"gitId":"RingoftheKing"},"content":" CustomMessages(String prepend, String append) {","lastModifiedDate":"2024-02-01"},{"lineNumber":24,"author":{"gitId":"RingoftheKing"},"content":" this.prepend \u003d prepend;","lastModifiedDate":"2024-02-01"},{"lineNumber":25,"author":{"gitId":"RingoftheKing"},"content":" this.append \u003d append;","lastModifiedDate":"2024-01-26"},{"lineNumber":26,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":27,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":28,"author":{"gitId":"RingoftheKing"},"content":" private static String getPrepend(CustomMessages msg) {","lastModifiedDate":"2024-01-26"},{"lineNumber":29,"author":{"gitId":"RingoftheKing"},"content":" return msg.prepend;","lastModifiedDate":"2024-01-26"},{"lineNumber":30,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":31,"author":{"gitId":"RingoftheKing"},"content":" private static String getAppend(CustomMessages msg) {","lastModifiedDate":"2024-02-01"},{"lineNumber":32,"author":{"gitId":"RingoftheKing"},"content":" return msg.append;","lastModifiedDate":"2024-02-01"},{"lineNumber":33,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":34,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":35,"author":{"gitId":"RingoftheKing"},"content":" public static String randomMsg(Task task) {","lastModifiedDate":"2024-01-26"},{"lineNumber":36,"author":{"gitId":"RingoftheKing"},"content":" CustomMessages[] pm \u003d values();","lastModifiedDate":"2024-01-26"},{"lineNumber":37,"author":{"gitId":"RingoftheKing"},"content":" int msgIndex \u003d RNG.nextInt(pm.length);","lastModifiedDate":"2024-01-26"},{"lineNumber":38,"author":{"gitId":"RingoftheKing"},"content":" return getPrepend(pm[msgIndex]) + task.brief() + getAppend(pm[msgIndex]);","lastModifiedDate":"2024-01-26"},{"lineNumber":39,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":40,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":41,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":42,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":43,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":44,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":45,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":46,"author":{"gitId":"RingoftheKing"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"RingoftheKing":46}},{"path":"src/test/java/BadApple/task/ParserTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"RingoftheKing"},"content":"package BadApple.task;","lastModifiedDate":"2024-02-05"},{"lineNumber":2,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":3,"author":{"gitId":"RingoftheKing"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-02-05"},{"lineNumber":4,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":5,"author":{"gitId":"RingoftheKing"},"content":"import java.io.File;","lastModifiedDate":"2024-02-05"},{"lineNumber":6,"author":{"gitId":"RingoftheKing"},"content":"import java.io.IOException;","lastModifiedDate":"2024-02-05"},{"lineNumber":7,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":8,"author":{"gitId":"RingoftheKing"},"content":"import static org.junit.jupiter.api.Assertions.*;","lastModifiedDate":"2024-02-05"},{"lineNumber":9,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":10,"author":{"gitId":"RingoftheKing"},"content":"public class ParserTest {","lastModifiedDate":"2024-02-05"},{"lineNumber":11,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":12,"author":{"gitId":"RingoftheKing"},"content":" @Test","lastModifiedDate":"2024-02-05"},{"lineNumber":13,"author":{"gitId":"RingoftheKing"},"content":" public void invalidTodoCommand() {","lastModifiedDate":"2024-02-05"},{"lineNumber":14,"author":{"gitId":"RingoftheKing"},"content":" File file \u003d new File(\"src/main/data/tempFile.txt\");","lastModifiedDate":"2024-02-05"},{"lineNumber":15,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":16,"author":{"gitId":"RingoftheKing"},"content":" try {","lastModifiedDate":"2024-02-05"},{"lineNumber":17,"author":{"gitId":"RingoftheKing"},"content":" Parser.ProcessQuery(\"todo\", file);","lastModifiedDate":"2024-02-05"},{"lineNumber":18,"author":{"gitId":"RingoftheKing"},"content":" boolean isEmpty \u003d TaskList.tasks.isEmpty();","lastModifiedDate":"2024-02-05"},{"lineNumber":19,"author":{"gitId":"RingoftheKing"},"content":" assertTrue(isEmpty);","lastModifiedDate":"2024-02-05"},{"lineNumber":20,"author":{"gitId":"RingoftheKing"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-02-05"},{"lineNumber":21,"author":{"gitId":"RingoftheKing"},"content":" fail();","lastModifiedDate":"2024-02-05"},{"lineNumber":22,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":23,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":24,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":25,"author":{"gitId":"RingoftheKing"},"content":" @Test","lastModifiedDate":"2024-02-05"},{"lineNumber":26,"author":{"gitId":"RingoftheKing"},"content":" public void invalidCommand() {","lastModifiedDate":"2024-02-05"},{"lineNumber":27,"author":{"gitId":"RingoftheKing"},"content":" File file \u003d new File(\"src/main/data/tempFile.txt\");","lastModifiedDate":"2024-02-05"},{"lineNumber":28,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":29,"author":{"gitId":"RingoftheKing"},"content":" try {","lastModifiedDate":"2024-02-05"},{"lineNumber":30,"author":{"gitId":"RingoftheKing"},"content":" int x \u003d TaskList.tasks.size();","lastModifiedDate":"2024-02-05"},{"lineNumber":31,"author":{"gitId":"RingoftheKing"},"content":" Parser.ProcessQuery(\"HELLO WORLD\", file);","lastModifiedDate":"2024-02-05"},{"lineNumber":32,"author":{"gitId":"RingoftheKing"},"content":" int y \u003d TaskList.tasks.size();","lastModifiedDate":"2024-02-05"},{"lineNumber":33,"author":{"gitId":"RingoftheKing"},"content":" assertEquals(x, y);","lastModifiedDate":"2024-02-05"},{"lineNumber":34,"author":{"gitId":"RingoftheKing"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-02-05"},{"lineNumber":35,"author":{"gitId":"RingoftheKing"},"content":" fail();","lastModifiedDate":"2024-02-05"},{"lineNumber":36,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":37,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":38,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":39,"author":{"gitId":"RingoftheKing"},"content":" @Test","lastModifiedDate":"2024-02-05"},{"lineNumber":40,"author":{"gitId":"RingoftheKing"},"content":" public void todoCommand() {","lastModifiedDate":"2024-02-05"},{"lineNumber":41,"author":{"gitId":"RingoftheKing"},"content":" File file \u003d new File(\"src/main/data/tempFile.txt\");","lastModifiedDate":"2024-02-05"},{"lineNumber":42,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":43,"author":{"gitId":"RingoftheKing"},"content":" try {","lastModifiedDate":"2024-02-05"},{"lineNumber":44,"author":{"gitId":"RingoftheKing"},"content":" Parser.ProcessQuery(\"todo DONTCARE\", file);","lastModifiedDate":"2024-02-05"},{"lineNumber":45,"author":{"gitId":"RingoftheKing"},"content":" assertTrue(TaskList.tasks.contains(Todo.extractDetails(\"todo DONTCARE\")));","lastModifiedDate":"2024-02-05"},{"lineNumber":46,"author":{"gitId":"RingoftheKing"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-02-05"},{"lineNumber":47,"author":{"gitId":"RingoftheKing"},"content":" fail();","lastModifiedDate":"2024-02-05"},{"lineNumber":48,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":49,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":50,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":51,"author":{"gitId":"RingoftheKing"},"content":" @Test","lastModifiedDate":"2024-02-05"},{"lineNumber":52,"author":{"gitId":"RingoftheKing"},"content":" public void deadlineCommand() {","lastModifiedDate":"2024-02-05"},{"lineNumber":53,"author":{"gitId":"RingoftheKing"},"content":" File file \u003d new File(\"src/main/data/tempFile.txt\");","lastModifiedDate":"2024-02-05"},{"lineNumber":54,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":55,"author":{"gitId":"RingoftheKing"},"content":" try {","lastModifiedDate":"2024-02-05"},{"lineNumber":56,"author":{"gitId":"RingoftheKing"},"content":" Parser.ProcessQuery(\"deadline CS2103 /by 2024-02-06\", file);","lastModifiedDate":"2024-02-05"},{"lineNumber":57,"author":{"gitId":"RingoftheKing"},"content":" assertEquals(\"Deadline [] CS2103 (by: 06 Feb 2024 )\", TaskList.tasks.get(0).toString());","lastModifiedDate":"2024-02-05"},{"lineNumber":58,"author":{"gitId":"RingoftheKing"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-02-05"},{"lineNumber":59,"author":{"gitId":"RingoftheKing"},"content":" fail();","lastModifiedDate":"2024-02-05"},{"lineNumber":60,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":61,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":62,"author":{"gitId":"RingoftheKing"},"content":"}","lastModifiedDate":"2024-02-05"}],"authorContributionMap":{"RingoftheKing":62}},{"path":"src/test/java/BadApple/task/TodoTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"RingoftheKing"},"content":"package BadApple.task;","lastModifiedDate":"2024-02-05"},{"lineNumber":2,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":3,"author":{"gitId":"RingoftheKing"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-02-05"},{"lineNumber":4,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":5,"author":{"gitId":"RingoftheKing"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-02-05"},{"lineNumber":6,"author":{"gitId":"RingoftheKing"},"content":"import static org.junit.jupiter.api.Assertions.fail;","lastModifiedDate":"2024-02-05"},{"lineNumber":7,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":8,"author":{"gitId":"RingoftheKing"},"content":"public class TodoTest {","lastModifiedDate":"2024-02-05"},{"lineNumber":9,"author":{"gitId":"RingoftheKing"},"content":" @Test","lastModifiedDate":"2024-02-05"},{"lineNumber":10,"author":{"gitId":"RingoftheKing"},"content":" public void initialisationTest() {","lastModifiedDate":"2024-02-05"},{"lineNumber":11,"author":{"gitId":"RingoftheKing"},"content":" Todo todo \u003d new Todo(\"CS2103\");","lastModifiedDate":"2024-02-05"},{"lineNumber":12,"author":{"gitId":"RingoftheKing"},"content":" assertEquals(\"Todo [] CS2103\", todo.toString());","lastModifiedDate":"2024-02-05"},{"lineNumber":13,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":14,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":15,"author":{"gitId":"RingoftheKing"},"content":" @Test","lastModifiedDate":"2024-02-05"},{"lineNumber":16,"author":{"gitId":"RingoftheKing"},"content":" public void markingTest() {","lastModifiedDate":"2024-02-05"},{"lineNumber":17,"author":{"gitId":"RingoftheKing"},"content":" Todo todo \u003d new Todo(\"CS2101\");","lastModifiedDate":"2024-02-05"},{"lineNumber":18,"author":{"gitId":"RingoftheKing"},"content":" TaskList.tasks.add(todo);","lastModifiedDate":"2024-02-05"},{"lineNumber":19,"author":{"gitId":"RingoftheKing"},"content":" todo.mark(true, 1);","lastModifiedDate":"2024-02-05"},{"lineNumber":20,"author":{"gitId":"RingoftheKing"},"content":" assertEquals(\"Todo [X] CS2101\", todo.toString());","lastModifiedDate":"2024-02-05"},{"lineNumber":21,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":22,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":23,"author":{"gitId":"RingoftheKing"},"content":"}","lastModifiedDate":"2024-02-05"}],"authorContributionMap":{"RingoftheKing":23}},{"path":"text-ui-test/runtest.bat","fileType":"bat","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@ECHO OFF","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"REM create bin directory if it doesn\u0027t exist","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"if not exist ..\\bin mkdir ..\\bin","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"REM delete output from previous run","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"if exist ACTUAL.TXT del ACTUAL.TXT","lastModifiedDate":"2020-08-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"REM compile the code into the bin folder","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"javac -cp ..\\src\\main\\java -Xlint:none -d ..\\bin ..\\src\\main\\java\\*.java","lastModifiedDate":"2020-08-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"IF ERRORLEVEL 1 (","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":" echo ********** BUILD FAILURE **********","lastModifiedDate":"2020-05-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":" exit /b 1","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":")","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"REM no error here, errorlevel \u003d\u003d 0","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"REM run the program, feed commands from input.txt file and redirect the output to the ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"RingoftheKing"},"content":"java -classpath ..\\bin BadPingGuo \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-01-27"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"REM compare the output to the expected output","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"FC ACTUAL.TXT EXPECTED.TXT","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"RingoftheKing":1,"-":20}},{"path":"text-ui-test/runtest.sh","fileType":"sh","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"#!/usr/bin/env bash","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"# create bin directory if it doesn\u0027t exist","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"if [ ! -d \"../bin\" ]","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":" mkdir ../bin","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"# delete output from previous run","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"if [ -e \"./ACTUAL.TXT\" ]","lastModifiedDate":"2020-05-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":" rm ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"# compile the code into the bin folder, terminates if error occurred","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"if ! javac -cp ../src/main/java -Xlint:none -d ../bin ../src/main/java/*.java","lastModifiedDate":"2020-08-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" echo \"********** BUILD FAILURE **********\"","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" exit 1","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":"# run the program, feed commands from input.txt file and redirect the output to the ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"RingoftheKing"},"content":"java -classpath ../bin BadPingGuo \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-01-27"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":"# convert to UNIX format","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":"cp EXPECTED.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":"dos2unix ACTUAL.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"# compare the output to the expected output","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"diff ACTUAL.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":"if [ $? -eq 0 ]","lastModifiedDate":"2020-05-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":" echo \"Test result: PASSED\"","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":" exit 0","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":"else","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" echo \"Test result: FAILED\"","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" exit 1","lastModifiedDate":"2020-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"RingoftheKing":1,"-":37}}] +[{"path":"build.gradle","fileType":"gradle","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"plugins {","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":" id \u0027java\u0027","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":" id \u0027application\u0027","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":" id \u0027com.github.johnrengelman.shadow\u0027 version \u00277.1.2\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"repositories {","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":" mavenCentral()","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"dependencies {","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":" testImplementation group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-api\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":" testRuntimeOnly group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-engine\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"RingoftheKing"},"content":" mainClass.set(\"BadApple.main.BadPingGuo\")","lastModifiedDate":"2024-02-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":" archiveBaseName \u003d \"duke\"","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":"run {","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"RingoftheKing":1,"-":41}},{"path":"src/main/java/BadApple/main/BadAppleException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"RingoftheKing"},"content":"package BadApple.main;","lastModifiedDate":"2024-02-04"},{"lineNumber":2,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":3,"author":{"gitId":"RingoftheKing"},"content":"/**","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"RingoftheKing"},"content":" * Any exception that arises from the use of BadApple\u0027s classes","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"RingoftheKing"},"content":" * throws a BadAppleException. Good use cases are","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"RingoftheKing"},"content":" * when a user supplies bad input to a Task.","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"RingoftheKing"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":8,"author":{"gitId":"RingoftheKing"},"content":"public class BadAppleException extends IllegalArgumentException {","lastModifiedDate":"2024-01-27"},{"lineNumber":9,"author":{"gitId":"RingoftheKing"},"content":" public BadAppleException(String s) {","lastModifiedDate":"2024-02-04"},{"lineNumber":10,"author":{"gitId":"RingoftheKing"},"content":" super(s);","lastModifiedDate":"2024-01-27"},{"lineNumber":11,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":12,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":13,"author":{"gitId":"RingoftheKing"},"content":" @Override","lastModifiedDate":"2024-01-27"},{"lineNumber":14,"author":{"gitId":"RingoftheKing"},"content":" public String toString() {","lastModifiedDate":"2024-01-27"},{"lineNumber":15,"author":{"gitId":"RingoftheKing"},"content":" return getMessage();","lastModifiedDate":"2024-01-27"},{"lineNumber":16,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":17,"author":{"gitId":"RingoftheKing"},"content":"}","lastModifiedDate":"2024-01-27"}],"authorContributionMap":{"RingoftheKing":17}},{"path":"src/main/java/BadApple/main/BadPingGuo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"RingoftheKing"},"content":"package BadApple.main;","lastModifiedDate":"2024-02-04"},{"lineNumber":2,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":3,"author":{"gitId":"RingoftheKing"},"content":"import BadApple.task.Parser;","lastModifiedDate":"2024-02-04"},{"lineNumber":4,"author":{"gitId":"RingoftheKing"},"content":"import BadApple.task.Storage;","lastModifiedDate":"2024-02-04"},{"lineNumber":5,"author":{"gitId":"RingoftheKing"},"content":"import BadApple.task.TaskList;","lastModifiedDate":"2024-02-04"},{"lineNumber":6,"author":{"gitId":"RingoftheKing"},"content":"import BadApple.task.Messenger;","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":8,"author":{"gitId":"RingoftheKing"},"content":"import java.io.IOException;","lastModifiedDate":"2024-02-01"},{"lineNumber":9,"author":{"gitId":"RingoftheKing"},"content":"import java.io.File;","lastModifiedDate":"2024-02-01"},{"lineNumber":10,"author":{"gitId":"RingoftheKing"},"content":"import java.io.FileReader;","lastModifiedDate":"2024-02-01"},{"lineNumber":11,"author":{"gitId":"RingoftheKing"},"content":"import java.io.BufferedReader;","lastModifiedDate":"2024-02-01"},{"lineNumber":12,"author":{"gitId":"RingoftheKing"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2024-02-01"},{"lineNumber":13,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":14,"author":{"gitId":"RingoftheKing"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"RingoftheKing"},"content":"/**","lastModifiedDate":"2024-02-06"},{"lineNumber":17,"author":{"gitId":"RingoftheKing"},"content":" * This is the entry point to the program\u0027s code","lastModifiedDate":"2024-02-06"},{"lineNumber":18,"author":{"gitId":"RingoftheKing"},"content":" * It handles the creation of required files and","lastModifiedDate":"2024-02-06"},{"lineNumber":19,"author":{"gitId":"RingoftheKing"},"content":" * kickstarts the application by reading the file","lastModifiedDate":"2024-02-06"},{"lineNumber":20,"author":{"gitId":"RingoftheKing"},"content":" * in the drive.","lastModifiedDate":"2024-02-06"},{"lineNumber":21,"author":{"gitId":"RingoftheKing"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":22,"author":{"gitId":"RingoftheKing"},"content":"public class BadPingGuo {","lastModifiedDate":"2024-01-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2019-07-29"},{"lineNumber":24,"author":{"gitId":"RingoftheKing"},"content":" Ui.showWelcome();","lastModifiedDate":"2024-02-04"},{"lineNumber":25,"author":{"gitId":"RingoftheKing"},"content":" Scanner sc \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-24"},{"lineNumber":26,"author":{"gitId":"RingoftheKing"},"content":" String filename \u003d \"src/main/data/whiteSpace.txt\";","lastModifiedDate":"2024-02-01"},{"lineNumber":27,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":28,"author":{"gitId":"RingoftheKing"},"content":" try {","lastModifiedDate":"2024-02-01"},{"lineNumber":29,"author":{"gitId":"RingoftheKing"},"content":" File file \u003d new File(filename);","lastModifiedDate":"2024-02-01"},{"lineNumber":30,"author":{"gitId":"RingoftheKing"},"content":" FileReader fc \u003d new FileReader(file);","lastModifiedDate":"2024-02-01"},{"lineNumber":31,"author":{"gitId":"RingoftheKing"},"content":" BufferedReader reader \u003d new BufferedReader(fc);","lastModifiedDate":"2024-02-01"},{"lineNumber":32,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":33,"author":{"gitId":"RingoftheKing"},"content":" Messenger.suppressMessages \u003d true;","lastModifiedDate":"2024-02-06"},{"lineNumber":34,"author":{"gitId":"RingoftheKing"},"content":" Storage.parseTasks(file);","lastModifiedDate":"2024-02-04"},{"lineNumber":35,"author":{"gitId":"RingoftheKing"},"content":" Messenger.suppressMessages \u003d false;","lastModifiedDate":"2024-02-06"},{"lineNumber":36,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":37,"author":{"gitId":"RingoftheKing"},"content":" TaskList.listTasks(reader);","lastModifiedDate":"2024-02-04"},{"lineNumber":38,"author":{"gitId":"RingoftheKing"},"content":" System.out.println(\"Waiting for something to happen?\");","lastModifiedDate":"2024-02-01"},{"lineNumber":39,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":40,"author":{"gitId":"RingoftheKing"},"content":" while(true) {","lastModifiedDate":"2024-01-24"},{"lineNumber":41,"author":{"gitId":"RingoftheKing"},"content":" String request \u003d sc.nextLine();","lastModifiedDate":"2024-01-24"},{"lineNumber":42,"author":{"gitId":"RingoftheKing"},"content":" if (request.equalsIgnoreCase(\"bye\")) break;","lastModifiedDate":"2024-01-24"},{"lineNumber":43,"author":{"gitId":"RingoftheKing"},"content":" Parser.ProcessQuery(request, file);","lastModifiedDate":"2024-02-04"},{"lineNumber":44,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":45,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":46,"author":{"gitId":"RingoftheKing"},"content":" Ui.sayGoodbye();","lastModifiedDate":"2024-02-06"},{"lineNumber":47,"author":{"gitId":"RingoftheKing"},"content":" fc.close();","lastModifiedDate":"2024-02-01"},{"lineNumber":48,"author":{"gitId":"RingoftheKing"},"content":" reader.close();","lastModifiedDate":"2024-02-01"},{"lineNumber":49,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":50,"author":{"gitId":"RingoftheKing"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2024-02-01"},{"lineNumber":51,"author":{"gitId":"RingoftheKing"},"content":" Ui.askToCreateFile();","lastModifiedDate":"2024-02-06"},{"lineNumber":52,"author":{"gitId":"RingoftheKing"},"content":" String askToCreateFile \u003d sc.nextLine();","lastModifiedDate":"2024-02-01"},{"lineNumber":53,"author":{"gitId":"RingoftheKing"},"content":" if (askToCreateFile.equalsIgnoreCase(\"yes\")) {","lastModifiedDate":"2024-02-01"},{"lineNumber":54,"author":{"gitId":"RingoftheKing"},"content":" makeFile();","lastModifiedDate":"2024-02-01"},{"lineNumber":55,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":56,"author":{"gitId":"RingoftheKing"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-02-01"},{"lineNumber":57,"author":{"gitId":"RingoftheKing"},"content":" System.out.println(\"unable to process file\");","lastModifiedDate":"2024-02-01"},{"lineNumber":58,"author":{"gitId":"RingoftheKing"},"content":" } catch (BadAppleException be) {","lastModifiedDate":"2024-02-01"},{"lineNumber":59,"author":{"gitId":"RingoftheKing"},"content":" System.out.println(be.toString());","lastModifiedDate":"2024-02-01"},{"lineNumber":60,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":61,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":62,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":63,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":64,"author":{"gitId":"RingoftheKing"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":65,"author":{"gitId":"RingoftheKing"},"content":" * Creates a file and directory for saving data","lastModifiedDate":"2024-02-06"},{"lineNumber":66,"author":{"gitId":"RingoftheKing"},"content":" * to the local drive.","lastModifiedDate":"2024-02-06"},{"lineNumber":67,"author":{"gitId":"RingoftheKing"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":68,"author":{"gitId":"RingoftheKing"},"content":" public static void makeFile() {","lastModifiedDate":"2024-02-06"},{"lineNumber":69,"author":{"gitId":"RingoftheKing"},"content":" try {","lastModifiedDate":"2024-02-01"},{"lineNumber":70,"author":{"gitId":"RingoftheKing"},"content":" File f1 \u003d new File(\"src/main/data\");","lastModifiedDate":"2024-02-01"},{"lineNumber":71,"author":{"gitId":"RingoftheKing"},"content":" File f \u003d new File(\"src/main/data/whiteSpace.txt\");","lastModifiedDate":"2024-02-01"},{"lineNumber":72,"author":{"gitId":"RingoftheKing"},"content":" if (f1.mkdir()) {","lastModifiedDate":"2024-02-06"},{"lineNumber":73,"author":{"gitId":"RingoftheKing"},"content":" f.createNewFile();","lastModifiedDate":"2024-02-06"},{"lineNumber":74,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":75,"author":{"gitId":"RingoftheKing"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-02-01"},{"lineNumber":76,"author":{"gitId":"RingoftheKing"},"content":" System.out.println(\"Humphrey has denied your entrance to white space! \\n \" +","lastModifiedDate":"2024-02-01"},{"lineNumber":77,"author":{"gitId":"RingoftheKing"},"content":" \"perhaps the write permissions aren\u0027t working?\");","lastModifiedDate":"2024-02-01"},{"lineNumber":78,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":80,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"RingoftheKing":77,"-":3}},{"path":"src/main/java/BadApple/main/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"RingoftheKing"},"content":"package BadApple.main;","lastModifiedDate":"2024-02-04"},{"lineNumber":2,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":3,"author":{"gitId":"RingoftheKing"},"content":"public class Ui {","lastModifiedDate":"2024-02-04"},{"lineNumber":4,"author":{"gitId":"RingoftheKing"},"content":" public static void showWelcome() {","lastModifiedDate":"2024-02-04"},{"lineNumber":5,"author":{"gitId":"RingoftheKing"},"content":" String logo \u003d \" __ __.__ .__ __ _________ \\n\" +","lastModifiedDate":"2024-02-04"},{"lineNumber":6,"author":{"gitId":"RingoftheKing"},"content":" \"/ \\\\ / \\\\ |__ |__|/ |_ ____ / _____/__________ ____ ____ \\n\" +","lastModifiedDate":"2024-02-04"},{"lineNumber":7,"author":{"gitId":"RingoftheKing"},"content":" \"\\\\ \\\\/\\\\/ / | \\\\| \\\\ __\\\\/ __ \\\\ \\\\_____ \\\\\\\\____ \\\\__ \\\\ _/ ___\\\\/ __ \\\\ \\n\" +","lastModifiedDate":"2024-02-04"},{"lineNumber":8,"author":{"gitId":"RingoftheKing"},"content":" \" \\\\ /| Y \\\\ || | \\\\ ___/ / \\\\ |_\u003e \u003e __ \\\\\\\\ \\\\__\\\\ ___/ \\n\" +","lastModifiedDate":"2024-02-04"},{"lineNumber":9,"author":{"gitId":"RingoftheKing"},"content":" \" \\\\__/\\\\ / |___| /__||__| \\\\___ \u003e /_______ / __(____ /\\\\___ \u003e___ \u003e\\n\" +","lastModifiedDate":"2024-02-04"},{"lineNumber":10,"author":{"gitId":"RingoftheKing"},"content":" \" \\\\/ \\\\/ \\\\/ \\\\/|__| \\\\/ \\\\/ \\\\/ \";","lastModifiedDate":"2024-02-04"},{"lineNumber":11,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":12,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":13,"author":{"gitId":"RingoftheKing"},"content":" System.out.println(\"Welcome to\");","lastModifiedDate":"2024-02-04"},{"lineNumber":14,"author":{"gitId":"RingoftheKing"},"content":" System.out.println(logo);","lastModifiedDate":"2024-02-04"},{"lineNumber":15,"author":{"gitId":"RingoftheKing"},"content":" System.out.println(\"You booted up your laptop and wonder what to do...\");","lastModifiedDate":"2024-02-04"},{"lineNumber":16,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":17,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":18,"author":{"gitId":"RingoftheKing"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":19,"author":{"gitId":"RingoftheKing"},"content":" * Creates Files needed for BadApple to function.","lastModifiedDate":"2024-02-06"},{"lineNumber":20,"author":{"gitId":"RingoftheKing"},"content":" * (i.e. data/whiteSpace.txt)","lastModifiedDate":"2024-02-06"},{"lineNumber":21,"author":{"gitId":"RingoftheKing"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":22,"author":{"gitId":"RingoftheKing"},"content":" public static void askToCreateFile() {","lastModifiedDate":"2024-02-06"},{"lineNumber":23,"author":{"gitId":"RingoftheKing"},"content":" System.out.println(\"You\u0027ve been living here for as long as... wait, no headspace detected?\");","lastModifiedDate":"2024-02-06"},{"lineNumber":24,"author":{"gitId":"RingoftheKing"},"content":" System.out.println(\"Would you like to enter White Space? \\n\" +","lastModifiedDate":"2024-02-06"},{"lineNumber":25,"author":{"gitId":"RingoftheKing"},"content":" \"Only \u0027yes\u0027 will create the required files\" );","lastModifiedDate":"2024-02-06"},{"lineNumber":26,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":27,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":28,"author":{"gitId":"RingoftheKing"},"content":" public static void sayGoodbye() {","lastModifiedDate":"2024-02-06"},{"lineNumber":29,"author":{"gitId":"RingoftheKing"},"content":" System.out.println(\"--------------------------------\");","lastModifiedDate":"2024-02-06"},{"lineNumber":30,"author":{"gitId":"RingoftheKing"},"content":" System.out.println(\"Everything is going to be okay.\");","lastModifiedDate":"2024-02-06"},{"lineNumber":31,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":32,"author":{"gitId":"RingoftheKing"},"content":"}","lastModifiedDate":"2024-02-04"}],"authorContributionMap":{"RingoftheKing":32}},{"path":"src/main/java/BadApple/task/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"RingoftheKing"},"content":"package BadApple.task;","lastModifiedDate":"2024-02-04"},{"lineNumber":2,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":3,"author":{"gitId":"RingoftheKing"},"content":"import BadApple.main.BadAppleException;","lastModifiedDate":"2024-02-04"},{"lineNumber":4,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":5,"author":{"gitId":"RingoftheKing"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-02-04"},{"lineNumber":6,"author":{"gitId":"RingoftheKing"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"RingoftheKing"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"RingoftheKing"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-02-04"},{"lineNumber":9,"author":{"gitId":"RingoftheKing"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-02-04"},{"lineNumber":10,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"RingoftheKing"},"content":"/**","lastModifiedDate":"2024-02-06"},{"lineNumber":12,"author":{"gitId":"RingoftheKing"},"content":" * A type of task with a Date to indicate","lastModifiedDate":"2024-02-06"},{"lineNumber":13,"author":{"gitId":"RingoftheKing"},"content":" * when a task should be completed. It can also","lastModifiedDate":"2024-02-06"},{"lineNumber":14,"author":{"gitId":"RingoftheKing"},"content":" * extract details to fill its relevant fields","lastModifiedDate":"2024-02-06"},{"lineNumber":15,"author":{"gitId":"RingoftheKing"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":16,"author":{"gitId":"RingoftheKing"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-26"},{"lineNumber":17,"author":{"gitId":"RingoftheKing"},"content":" protected LocalDate by;","lastModifiedDate":"2024-02-04"},{"lineNumber":18,"author":{"gitId":"RingoftheKing"},"content":" private Deadline(String desc, String by) {","lastModifiedDate":"2024-01-26"},{"lineNumber":19,"author":{"gitId":"RingoftheKing"},"content":" super(desc);","lastModifiedDate":"2024-01-26"},{"lineNumber":20,"author":{"gitId":"RingoftheKing"},"content":" this.by \u003d LocalDate.parse(by);","lastModifiedDate":"2024-02-04"},{"lineNumber":21,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":22,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":23,"author":{"gitId":"RingoftheKing"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":24,"author":{"gitId":"RingoftheKing"},"content":" * The String a call to deadline returns","lastModifiedDate":"2024-02-01"},{"lineNumber":25,"author":{"gitId":"RingoftheKing"},"content":" * @return The task with deadline formatted to be readable by parser","lastModifiedDate":"2024-02-01"},{"lineNumber":26,"author":{"gitId":"RingoftheKing"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":27,"author":{"gitId":"RingoftheKing"},"content":" @Override","lastModifiedDate":"2024-01-26"},{"lineNumber":28,"author":{"gitId":"RingoftheKing"},"content":" public String toString() {","lastModifiedDate":"2024-01-26"},{"lineNumber":29,"author":{"gitId":"RingoftheKing"},"content":" return \"Deadline\" + \" \" + super.toString() +","lastModifiedDate":"2024-02-04"},{"lineNumber":30,"author":{"gitId":"RingoftheKing"},"content":" \"(by: \" + by.format(DateTimeFormatter.ofPattern(\"dd MMM yyyy\")) + \" )\";","lastModifiedDate":"2024-02-04"},{"lineNumber":31,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":32,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":33,"author":{"gitId":"RingoftheKing"},"content":" /**","lastModifiedDate":"2024-01-26"},{"lineNumber":34,"author":{"gitId":"RingoftheKing"},"content":" * This is a Factory Method that generates an instance","lastModifiedDate":"2024-01-26"},{"lineNumber":35,"author":{"gitId":"RingoftheKing"},"content":" * @param s an ArrayList after tokenizing the query.","lastModifiedDate":"2024-01-26"},{"lineNumber":36,"author":{"gitId":"RingoftheKing"},"content":" */","lastModifiedDate":"2024-01-26"},{"lineNumber":37,"author":{"gitId":"RingoftheKing"},"content":" public static Deadline extractDetails(ArrayList\u003cString\u003e s) throws BadAppleException, DateTimeParseException {","lastModifiedDate":"2024-02-04"},{"lineNumber":38,"author":{"gitId":"RingoftheKing"},"content":" StringBuilder taskName \u003d new StringBuilder();","lastModifiedDate":"2024-01-26"},{"lineNumber":39,"author":{"gitId":"RingoftheKing"},"content":" StringBuilder deadline \u003d new StringBuilder();","lastModifiedDate":"2024-01-26"},{"lineNumber":40,"author":{"gitId":"RingoftheKing"},"content":" int separatorIndex \u003d s.indexOf(\"/by\");","lastModifiedDate":"2024-01-26"},{"lineNumber":41,"author":{"gitId":"RingoftheKing"},"content":" if (separatorIndex \u003e 0) {","lastModifiedDate":"2024-01-26"},{"lineNumber":42,"author":{"gitId":"RingoftheKing"},"content":" for (int i \u003d 1; i \u003c separatorIndex; i++) {","lastModifiedDate":"2024-01-26"},{"lineNumber":43,"author":{"gitId":"RingoftheKing"},"content":" taskName.append(s.get(i)).append(\" \");","lastModifiedDate":"2024-01-26"},{"lineNumber":44,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":45,"author":{"gitId":"RingoftheKing"},"content":" for (int i \u003d separatorIndex + 1; i \u003c s.size();i++) {","lastModifiedDate":"2024-01-26"},{"lineNumber":46,"author":{"gitId":"RingoftheKing"},"content":" deadline.append(s.get(i));","lastModifiedDate":"2024-02-04"},{"lineNumber":47,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":48,"author":{"gitId":"RingoftheKing"},"content":" return new Deadline(taskName.toString(), deadline.toString());","lastModifiedDate":"2024-01-26"},{"lineNumber":49,"author":{"gitId":"RingoftheKing"},"content":" } else {","lastModifiedDate":"2024-01-27"},{"lineNumber":50,"author":{"gitId":"RingoftheKing"},"content":" throw new BadAppleException(\"Usage: deadline TaskName /by DueTime\");","lastModifiedDate":"2024-01-27"},{"lineNumber":51,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":52,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":53,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":54,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":55,"author":{"gitId":"RingoftheKing"},"content":" // in case anyone tries to throw an un-formatted string, the program still runs","lastModifiedDate":"2024-01-26"},{"lineNumber":56,"author":{"gitId":"RingoftheKing"},"content":" public static Deadline extractDetails(String s) {","lastModifiedDate":"2024-01-26"},{"lineNumber":57,"author":{"gitId":"RingoftheKing"},"content":" return extractDetails(new ArrayList\u003c\u003e(Arrays.asList(s.split(\" \"))));","lastModifiedDate":"2024-01-26"},{"lineNumber":58,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":59,"author":{"gitId":"RingoftheKing"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"RingoftheKing":59}},{"path":"src/main/java/BadApple/task/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"RingoftheKing"},"content":"package BadApple.task;","lastModifiedDate":"2024-02-04"},{"lineNumber":2,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":3,"author":{"gitId":"RingoftheKing"},"content":"import BadApple.main.BadAppleException;","lastModifiedDate":"2024-02-04"},{"lineNumber":4,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":5,"author":{"gitId":"RingoftheKing"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"RingoftheKing"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"RingoftheKing"},"content":"/**","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"RingoftheKing"},"content":" * A type of Task that has a start time and end time","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"RingoftheKing"},"content":" * It can also extract details to fill its relevant fields","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"RingoftheKing"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":12,"author":{"gitId":"RingoftheKing"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-26"},{"lineNumber":13,"author":{"gitId":"RingoftheKing"},"content":" protected String from;","lastModifiedDate":"2024-01-26"},{"lineNumber":14,"author":{"gitId":"RingoftheKing"},"content":" protected String to;","lastModifiedDate":"2024-01-26"},{"lineNumber":15,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":16,"author":{"gitId":"RingoftheKing"},"content":" Event(String desc, String from, String to) {","lastModifiedDate":"2024-01-26"},{"lineNumber":17,"author":{"gitId":"RingoftheKing"},"content":" super(desc);","lastModifiedDate":"2024-01-26"},{"lineNumber":18,"author":{"gitId":"RingoftheKing"},"content":" this.from \u003d from;","lastModifiedDate":"2024-01-26"},{"lineNumber":19,"author":{"gitId":"RingoftheKing"},"content":" this.to \u003d to;","lastModifiedDate":"2024-01-26"},{"lineNumber":20,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":21,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":22,"author":{"gitId":"RingoftheKing"},"content":" @Override","lastModifiedDate":"2024-01-26"},{"lineNumber":23,"author":{"gitId":"RingoftheKing"},"content":" public String toString() {","lastModifiedDate":"2024-01-26"},{"lineNumber":24,"author":{"gitId":"RingoftheKing"},"content":" return \"Event\" + \" \" +","lastModifiedDate":"2024-02-01"},{"lineNumber":25,"author":{"gitId":"RingoftheKing"},"content":" super.toString() +","lastModifiedDate":"2024-01-26"},{"lineNumber":26,"author":{"gitId":"RingoftheKing"},"content":" \"(from: \" + from +","lastModifiedDate":"2024-02-01"},{"lineNumber":27,"author":{"gitId":"RingoftheKing"},"content":" \"to: \" + to + \")\";","lastModifiedDate":"2024-01-26"},{"lineNumber":28,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":29,"author":{"gitId":"RingoftheKing"},"content":" /**","lastModifiedDate":"2024-01-26"},{"lineNumber":30,"author":{"gitId":"RingoftheKing"},"content":" * This is a Factory Method that generates an instance of Event","lastModifiedDate":"2024-01-26"},{"lineNumber":31,"author":{"gitId":"RingoftheKing"},"content":" * @param s an ArrayList after tokenizing the query by WhiteSpace.","lastModifiedDate":"2024-01-26"},{"lineNumber":32,"author":{"gitId":"RingoftheKing"},"content":" */","lastModifiedDate":"2024-01-26"},{"lineNumber":33,"author":{"gitId":"RingoftheKing"},"content":" public static Event extractDetails(ArrayList\u003cString\u003e s) {","lastModifiedDate":"2024-01-26"},{"lineNumber":34,"author":{"gitId":"RingoftheKing"},"content":" StringBuilder taskName \u003d new StringBuilder();","lastModifiedDate":"2024-01-26"},{"lineNumber":35,"author":{"gitId":"RingoftheKing"},"content":" StringBuilder from \u003d new StringBuilder();","lastModifiedDate":"2024-01-26"},{"lineNumber":36,"author":{"gitId":"RingoftheKing"},"content":" StringBuilder to \u003d new StringBuilder();","lastModifiedDate":"2024-01-26"},{"lineNumber":37,"author":{"gitId":"RingoftheKing"},"content":" int fromIndex \u003d s.indexOf(\"/from\");","lastModifiedDate":"2024-01-26"},{"lineNumber":38,"author":{"gitId":"RingoftheKing"},"content":" int toIndex \u003d s.indexOf(\"/to\");","lastModifiedDate":"2024-01-26"},{"lineNumber":39,"author":{"gitId":"RingoftheKing"},"content":" if (fromIndex \u003e -1 \u0026\u0026 toIndex \u003e -1) {","lastModifiedDate":"2024-01-27"},{"lineNumber":40,"author":{"gitId":"RingoftheKing"},"content":" for (int i \u003d 1; i \u003c fromIndex; i++) {","lastModifiedDate":"2024-01-26"},{"lineNumber":41,"author":{"gitId":"RingoftheKing"},"content":" taskName.append(s.get(i)).append(\" \");","lastModifiedDate":"2024-01-26"},{"lineNumber":42,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":43,"author":{"gitId":"RingoftheKing"},"content":" for (int i \u003d fromIndex + 1; i \u003c toIndex;i++) {","lastModifiedDate":"2024-01-26"},{"lineNumber":44,"author":{"gitId":"RingoftheKing"},"content":" from.append(s.get(i)).append(\" \");","lastModifiedDate":"2024-01-26"},{"lineNumber":45,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":46,"author":{"gitId":"RingoftheKing"},"content":" for (int i \u003d toIndex + 1; i \u003c s.size(); i++) {","lastModifiedDate":"2024-01-26"},{"lineNumber":47,"author":{"gitId":"RingoftheKing"},"content":" to.append(s.get(i)).append(\" \");","lastModifiedDate":"2024-01-26"},{"lineNumber":48,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":49,"author":{"gitId":"RingoftheKing"},"content":" return new Event(taskName.toString(), from.toString(), to.toString());","lastModifiedDate":"2024-01-26"},{"lineNumber":50,"author":{"gitId":"RingoftheKing"},"content":" } else {","lastModifiedDate":"2024-01-27"},{"lineNumber":51,"author":{"gitId":"RingoftheKing"},"content":" throw new BadAppleException(\"Usage: event TaskName /from time1 /to time2\");","lastModifiedDate":"2024-01-27"},{"lineNumber":52,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":53,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":54,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":55,"author":{"gitId":"RingoftheKing"},"content":" // in case anyone tries to throw an un-formatted string, the program still runs","lastModifiedDate":"2024-02-01"},{"lineNumber":56,"author":{"gitId":"RingoftheKing"},"content":" public static Event extractDetails(String s) {","lastModifiedDate":"2024-01-26"},{"lineNumber":57,"author":{"gitId":"RingoftheKing"},"content":" return extractDetails(new ArrayList\u003c\u003e(Arrays.asList(s.split(\" \"))));","lastModifiedDate":"2024-01-26"},{"lineNumber":58,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":59,"author":{"gitId":"RingoftheKing"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"RingoftheKing":59}},{"path":"src/main/java/BadApple/task/Messenger.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"RingoftheKing"},"content":"package BadApple.task;","lastModifiedDate":"2024-02-04"},{"lineNumber":2,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":3,"author":{"gitId":"RingoftheKing"},"content":"import java.util.Random;","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"RingoftheKing"},"content":"public class Messenger {","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"RingoftheKing"},"content":" public static boolean suppressMessages \u003d false;","lastModifiedDate":"2024-02-01"},{"lineNumber":7,"author":{"gitId":"RingoftheKing"},"content":" /**","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"RingoftheKing"},"content":" * When a user adds a task, a response of PrependMessages + task is rendered","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"RingoftheKing"},"content":" * To add a message: Write the enum and then place a prepend and append message in brackets","lastModifiedDate":"2024-02-01"},{"lineNumber":10,"author":{"gitId":"RingoftheKing"},"content":" * e.g. ANGRY(\"You better get your ass up and\", \"otherwise Freddy will get you\"),","lastModifiedDate":"2024-02-01"},{"lineNumber":11,"author":{"gitId":"RingoftheKing"},"content":" */","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"RingoftheKing"},"content":" enum CustomMessages {","lastModifiedDate":"2024-01-26"},{"lineNumber":13,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"RingoftheKing"},"content":" DEFAULT(\"Added: \", \"\"),","lastModifiedDate":"2024-01-26"},{"lineNumber":15,"author":{"gitId":"RingoftheKing"},"content":" SUSPENSE(\"Are you sure you want to: \", \" Mewo looks at you, frightened\"),","lastModifiedDate":"2024-01-26"},{"lineNumber":16,"author":{"gitId":"RingoftheKing"},"content":" HAPPY(\"I\u0027m sure you can \", \" I\u0027ll always be By Your Side\"),","lastModifiedDate":"2024-01-26"},{"lineNumber":17,"author":{"gitId":"RingoftheKing"},"content":" DEMEANING(\"Don\u0027t tell me you can\u0027t \", \" don\u0027t disappoint me\");","lastModifiedDate":"2024-01-26"},{"lineNumber":18,"author":{"gitId":"RingoftheKing"},"content":" private final String prepend;","lastModifiedDate":"2024-01-26"},{"lineNumber":19,"author":{"gitId":"RingoftheKing"},"content":" private final String append;","lastModifiedDate":"2024-01-26"},{"lineNumber":20,"author":{"gitId":"RingoftheKing"},"content":" private static final Random RNG \u003d new Random();","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"RingoftheKing"},"content":" CustomMessages(String prepend, String append) {","lastModifiedDate":"2024-02-01"},{"lineNumber":22,"author":{"gitId":"RingoftheKing"},"content":" this.prepend \u003d prepend;","lastModifiedDate":"2024-02-01"},{"lineNumber":23,"author":{"gitId":"RingoftheKing"},"content":" this.append \u003d append;","lastModifiedDate":"2024-01-26"},{"lineNumber":24,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":25,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":26,"author":{"gitId":"RingoftheKing"},"content":" private static String getPrepend(CustomMessages msg) {","lastModifiedDate":"2024-01-26"},{"lineNumber":27,"author":{"gitId":"RingoftheKing"},"content":" return msg.prepend;","lastModifiedDate":"2024-01-26"},{"lineNumber":28,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":29,"author":{"gitId":"RingoftheKing"},"content":" private static String getAppend(CustomMessages msg) {","lastModifiedDate":"2024-02-01"},{"lineNumber":30,"author":{"gitId":"RingoftheKing"},"content":" return msg.append;","lastModifiedDate":"2024-02-01"},{"lineNumber":31,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":32,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":33,"author":{"gitId":"RingoftheKing"},"content":" public static String randomMsg(Task task) {","lastModifiedDate":"2024-01-26"},{"lineNumber":34,"author":{"gitId":"RingoftheKing"},"content":" CustomMessages[] pm \u003d values();","lastModifiedDate":"2024-01-26"},{"lineNumber":35,"author":{"gitId":"RingoftheKing"},"content":" int msgIndex \u003d RNG.nextInt(pm.length);","lastModifiedDate":"2024-01-26"},{"lineNumber":36,"author":{"gitId":"RingoftheKing"},"content":" return getPrepend(pm[msgIndex]) + task.brief() + getAppend(pm[msgIndex]);","lastModifiedDate":"2024-01-26"},{"lineNumber":37,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":38,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":39,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":40,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":41,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":42,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":43,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":44,"author":{"gitId":"RingoftheKing"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"RingoftheKing":44}},{"path":"src/main/java/BadApple/task/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"RingoftheKing"},"content":"package BadApple.task;","lastModifiedDate":"2024-02-04"},{"lineNumber":2,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":3,"author":{"gitId":"RingoftheKing"},"content":"import BadApple.main.BadAppleException;","lastModifiedDate":"2024-02-04"},{"lineNumber":4,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":5,"author":{"gitId":"RingoftheKing"},"content":"import java.io.BufferedReader;","lastModifiedDate":"2024-02-04"},{"lineNumber":6,"author":{"gitId":"RingoftheKing"},"content":"import java.io.File;","lastModifiedDate":"2024-02-04"},{"lineNumber":7,"author":{"gitId":"RingoftheKing"},"content":"import java.io.FileReader;","lastModifiedDate":"2024-02-04"},{"lineNumber":8,"author":{"gitId":"RingoftheKing"},"content":"import java.io.IOException;","lastModifiedDate":"2024-02-04"},{"lineNumber":9,"author":{"gitId":"RingoftheKing"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-02-04"},{"lineNumber":10,"author":{"gitId":"RingoftheKing"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-02-04"},{"lineNumber":11,"author":{"gitId":"RingoftheKing"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-02-04"},{"lineNumber":12,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":13,"author":{"gitId":"RingoftheKing"},"content":"import static java.lang.Integer.parseInt;","lastModifiedDate":"2024-02-04"},{"lineNumber":14,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":15,"author":{"gitId":"RingoftheKing"},"content":"public class Parser {","lastModifiedDate":"2024-02-04"},{"lineNumber":16,"author":{"gitId":"RingoftheKing"},"content":" /**","lastModifiedDate":"2024-02-04"},{"lineNumber":17,"author":{"gitId":"RingoftheKing"},"content":" * Takes in a user query and performs the necessary reading and writing to a file on the drive.","lastModifiedDate":"2024-02-04"},{"lineNumber":18,"author":{"gitId":"RingoftheKing"},"content":" * The file should exist, and is by default handled by BadPingGuo","lastModifiedDate":"2024-02-04"},{"lineNumber":19,"author":{"gitId":"RingoftheKing"},"content":" * @param s the query the user would like to make","lastModifiedDate":"2024-02-04"},{"lineNumber":20,"author":{"gitId":"RingoftheKing"},"content":" * @param file the file to read or write from","lastModifiedDate":"2024-02-04"},{"lineNumber":21,"author":{"gitId":"RingoftheKing"},"content":" */","lastModifiedDate":"2024-02-04"},{"lineNumber":22,"author":{"gitId":"RingoftheKing"},"content":" public static void ProcessQuery(String s, File file) throws IOException {","lastModifiedDate":"2024-02-04"},{"lineNumber":23,"author":{"gitId":"RingoftheKing"},"content":" String[] tokens \u003d s.split(\" \");","lastModifiedDate":"2024-02-04"},{"lineNumber":24,"author":{"gitId":"RingoftheKing"},"content":" ArrayList\u003cString\u003e args \u003d new ArrayList\u003cString\u003e(Arrays.asList(tokens));","lastModifiedDate":"2024-02-04"},{"lineNumber":25,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":26,"author":{"gitId":"RingoftheKing"},"content":" switch (args.get(0).toLowerCase()) {","lastModifiedDate":"2024-02-04"},{"lineNumber":27,"author":{"gitId":"RingoftheKing"},"content":" case \"list\":","lastModifiedDate":"2024-02-04"},{"lineNumber":28,"author":{"gitId":"RingoftheKing"},"content":" TaskList.listTasks(new BufferedReader(new FileReader(file)));","lastModifiedDate":"2024-02-04"},{"lineNumber":29,"author":{"gitId":"RingoftheKing"},"content":" return;","lastModifiedDate":"2024-02-04"},{"lineNumber":30,"author":{"gitId":"RingoftheKing"},"content":" case \"mark\":","lastModifiedDate":"2024-02-04"},{"lineNumber":31,"author":{"gitId":"RingoftheKing"},"content":" try {","lastModifiedDate":"2024-02-04"},{"lineNumber":32,"author":{"gitId":"RingoftheKing"},"content":" int taskIndex \u003d parseInt(tokens[1]) - 1;","lastModifiedDate":"2024-02-04"},{"lineNumber":33,"author":{"gitId":"RingoftheKing"},"content":" Task t \u003d TaskList.tasks.get(taskIndex);","lastModifiedDate":"2024-02-04"},{"lineNumber":34,"author":{"gitId":"RingoftheKing"},"content":" t.mark(true, taskIndex);","lastModifiedDate":"2024-02-04"},{"lineNumber":35,"author":{"gitId":"RingoftheKing"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-02-04"},{"lineNumber":36,"author":{"gitId":"RingoftheKing"},"content":" System.out.println(\"Usage: mark \u003ctaskNumber\u003e\");","lastModifiedDate":"2024-02-04"},{"lineNumber":37,"author":{"gitId":"RingoftheKing"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-02-04"},{"lineNumber":38,"author":{"gitId":"RingoftheKing"},"content":" System.out.println(\"Hey you don\u0027t have that task!\");","lastModifiedDate":"2024-02-04"},{"lineNumber":39,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":40,"author":{"gitId":"RingoftheKing"},"content":" break;","lastModifiedDate":"2024-02-04"},{"lineNumber":41,"author":{"gitId":"RingoftheKing"},"content":" case \"unmark\":","lastModifiedDate":"2024-02-04"},{"lineNumber":42,"author":{"gitId":"RingoftheKing"},"content":" try {","lastModifiedDate":"2024-02-04"},{"lineNumber":43,"author":{"gitId":"RingoftheKing"},"content":" int taskIndex \u003d parseInt(tokens[1]) - 1;","lastModifiedDate":"2024-02-04"},{"lineNumber":44,"author":{"gitId":"RingoftheKing"},"content":" Task t \u003d TaskList.tasks.get(taskIndex);","lastModifiedDate":"2024-02-04"},{"lineNumber":45,"author":{"gitId":"RingoftheKing"},"content":" t.mark(false, taskIndex);","lastModifiedDate":"2024-02-04"},{"lineNumber":46,"author":{"gitId":"RingoftheKing"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-02-04"},{"lineNumber":47,"author":{"gitId":"RingoftheKing"},"content":" System.out.println(\"Usage: mark \u003ctaskNumber\u003e\");","lastModifiedDate":"2024-02-04"},{"lineNumber":48,"author":{"gitId":"RingoftheKing"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-02-04"},{"lineNumber":49,"author":{"gitId":"RingoftheKing"},"content":" System.out.println(\"Calm down! You don\u0027t have THAT many tasks!\");","lastModifiedDate":"2024-02-04"},{"lineNumber":50,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":51,"author":{"gitId":"RingoftheKing"},"content":" break;","lastModifiedDate":"2024-02-04"},{"lineNumber":52,"author":{"gitId":"RingoftheKing"},"content":" case \"todo\":","lastModifiedDate":"2024-02-04"},{"lineNumber":53,"author":{"gitId":"RingoftheKing"},"content":" // it is possible to relegate exception handling to addTask","lastModifiedDate":"2024-02-04"},{"lineNumber":54,"author":{"gitId":"RingoftheKing"},"content":" // you must use fp and implement lazy evaluation","lastModifiedDate":"2024-02-04"},{"lineNumber":55,"author":{"gitId":"RingoftheKing"},"content":" try {","lastModifiedDate":"2024-02-04"},{"lineNumber":56,"author":{"gitId":"RingoftheKing"},"content":" Storage.addTask(Todo.extractDetails(s));","lastModifiedDate":"2024-02-04"},{"lineNumber":57,"author":{"gitId":"RingoftheKing"},"content":" } catch (BadAppleException be) {","lastModifiedDate":"2024-02-04"},{"lineNumber":58,"author":{"gitId":"RingoftheKing"},"content":" System.out.println(be);","lastModifiedDate":"2024-02-04"},{"lineNumber":59,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":60,"author":{"gitId":"RingoftheKing"},"content":" break;","lastModifiedDate":"2024-02-04"},{"lineNumber":61,"author":{"gitId":"RingoftheKing"},"content":" case \"deadline\":","lastModifiedDate":"2024-02-04"},{"lineNumber":62,"author":{"gitId":"RingoftheKing"},"content":" try {","lastModifiedDate":"2024-02-04"},{"lineNumber":63,"author":{"gitId":"RingoftheKing"},"content":" Storage.addTask(Deadline.extractDetails(args));","lastModifiedDate":"2024-02-04"},{"lineNumber":64,"author":{"gitId":"RingoftheKing"},"content":" } catch (BadAppleException be) {","lastModifiedDate":"2024-02-04"},{"lineNumber":65,"author":{"gitId":"RingoftheKing"},"content":" System.out.println(be);","lastModifiedDate":"2024-02-04"},{"lineNumber":66,"author":{"gitId":"RingoftheKing"},"content":" } catch (DateTimeParseException dateError) {","lastModifiedDate":"2024-02-04"},{"lineNumber":67,"author":{"gitId":"RingoftheKing"},"content":" System.out.println(\"Date should be in YYYY-MM-DD format\");","lastModifiedDate":"2024-02-04"},{"lineNumber":68,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":69,"author":{"gitId":"RingoftheKing"},"content":" break;","lastModifiedDate":"2024-02-04"},{"lineNumber":70,"author":{"gitId":"RingoftheKing"},"content":" case \"event\":","lastModifiedDate":"2024-02-04"},{"lineNumber":71,"author":{"gitId":"RingoftheKing"},"content":" try {","lastModifiedDate":"2024-02-04"},{"lineNumber":72,"author":{"gitId":"RingoftheKing"},"content":" Storage.addTask(Event.extractDetails(args));","lastModifiedDate":"2024-02-04"},{"lineNumber":73,"author":{"gitId":"RingoftheKing"},"content":" } catch (BadAppleException be) {","lastModifiedDate":"2024-02-04"},{"lineNumber":74,"author":{"gitId":"RingoftheKing"},"content":" System.out.println(be);","lastModifiedDate":"2024-02-04"},{"lineNumber":75,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":76,"author":{"gitId":"RingoftheKing"},"content":" break;","lastModifiedDate":"2024-02-04"},{"lineNumber":77,"author":{"gitId":"RingoftheKing"},"content":" case \"delete\":","lastModifiedDate":"2024-02-04"},{"lineNumber":78,"author":{"gitId":"RingoftheKing"},"content":" if (tokens.length \u003c\u003d 1) {","lastModifiedDate":"2024-02-04"},{"lineNumber":79,"author":{"gitId":"RingoftheKing"},"content":" System.out.println(\"Kel nuked, but he missed what task you wanted to remove!\");","lastModifiedDate":"2024-02-04"},{"lineNumber":80,"author":{"gitId":"RingoftheKing"},"content":" break;","lastModifiedDate":"2024-02-04"},{"lineNumber":81,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":82,"author":{"gitId":"RingoftheKing"},"content":" int taskIndex;","lastModifiedDate":"2024-02-04"},{"lineNumber":83,"author":{"gitId":"RingoftheKing"},"content":" try {","lastModifiedDate":"2024-02-04"},{"lineNumber":84,"author":{"gitId":"RingoftheKing"},"content":" taskIndex \u003d parseInt(tokens[1]) - 1;","lastModifiedDate":"2024-02-04"},{"lineNumber":85,"author":{"gitId":"RingoftheKing"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-02-04"},{"lineNumber":86,"author":{"gitId":"RingoftheKing"},"content":" System.out.println(\"Usage: delete \u003ctaskNumber\u003e\");","lastModifiedDate":"2024-02-04"},{"lineNumber":87,"author":{"gitId":"RingoftheKing"},"content":" break;","lastModifiedDate":"2024-02-04"},{"lineNumber":88,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":89,"author":{"gitId":"RingoftheKing"},"content":" if (taskIndex \u003e\u003d 0 \u0026\u0026 taskIndex \u003c TaskList.tasks.size()) {","lastModifiedDate":"2024-02-04"},{"lineNumber":90,"author":{"gitId":"RingoftheKing"},"content":" Storage.removeTask(taskIndex);","lastModifiedDate":"2024-02-04"},{"lineNumber":91,"author":{"gitId":"RingoftheKing"},"content":" } else {","lastModifiedDate":"2024-02-04"},{"lineNumber":92,"author":{"gitId":"RingoftheKing"},"content":" System.out.println(\"welcome to BLACK SPACE, you keyed in a non-existent task!\");","lastModifiedDate":"2024-02-04"},{"lineNumber":93,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":94,"author":{"gitId":"RingoftheKing"},"content":" break;","lastModifiedDate":"2024-02-04"},{"lineNumber":95,"author":{"gitId":"RingoftheKing"},"content":" case \"find\":","lastModifiedDate":"2024-02-07"},{"lineNumber":96,"author":{"gitId":"RingoftheKing"},"content":" if (tokens.length \u003c\u003d 1) {","lastModifiedDate":"2024-02-07"},{"lineNumber":97,"author":{"gitId":"RingoftheKing"},"content":" System.out.println(\"There is nothing here... to find\");","lastModifiedDate":"2024-02-07"},{"lineNumber":98,"author":{"gitId":"RingoftheKing"},"content":" break;","lastModifiedDate":"2024-02-07"},{"lineNumber":99,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":100,"author":{"gitId":"RingoftheKing"},"content":" TaskList.filterTasks(s.substring(5).trim());","lastModifiedDate":"2024-02-07"},{"lineNumber":101,"author":{"gitId":"RingoftheKing"},"content":" break;","lastModifiedDate":"2024-02-07"},{"lineNumber":102,"author":{"gitId":"RingoftheKing"},"content":" default:","lastModifiedDate":"2024-02-04"},{"lineNumber":103,"author":{"gitId":"RingoftheKing"},"content":" System.out.println(\"Whatcha sayin? scream \u0027help!\u0027 for list of my services\");","lastModifiedDate":"2024-02-04"},{"lineNumber":104,"author":{"gitId":"RingoftheKing"},"content":" return;","lastModifiedDate":"2024-02-04"},{"lineNumber":105,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":106,"author":{"gitId":"RingoftheKing"},"content":" Storage.updateTasks(file);","lastModifiedDate":"2024-02-04"},{"lineNumber":107,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":108,"author":{"gitId":"RingoftheKing"},"content":"}","lastModifiedDate":"2024-02-04"}],"authorContributionMap":{"RingoftheKing":108}},{"path":"src/main/java/BadApple/task/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"RingoftheKing"},"content":"package BadApple.task;","lastModifiedDate":"2024-02-04"},{"lineNumber":2,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":3,"author":{"gitId":"RingoftheKing"},"content":"import BadApple.main.BadAppleException;","lastModifiedDate":"2024-02-04"},{"lineNumber":4,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":5,"author":{"gitId":"RingoftheKing"},"content":"import java.io.*;","lastModifiedDate":"2024-02-04"},{"lineNumber":6,"author":{"gitId":"RingoftheKing"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-02-04"},{"lineNumber":7,"author":{"gitId":"RingoftheKing"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-02-04"},{"lineNumber":8,"author":{"gitId":"RingoftheKing"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-02-04"},{"lineNumber":9,"author":{"gitId":"RingoftheKing"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-02-04"},{"lineNumber":10,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":11,"author":{"gitId":"RingoftheKing"},"content":"/**","lastModifiedDate":"2024-02-06"},{"lineNumber":12,"author":{"gitId":"RingoftheKing"},"content":" * Manages the changes in tasks due to a user\u0027s commands.","lastModifiedDate":"2024-02-06"},{"lineNumber":13,"author":{"gitId":"RingoftheKing"},"content":" * Commands are passed from the Parser into actual actions","lastModifiedDate":"2024-02-06"},{"lineNumber":14,"author":{"gitId":"RingoftheKing"},"content":" * which this class then updates the program\u0027s task list.","lastModifiedDate":"2024-02-06"},{"lineNumber":15,"author":{"gitId":"RingoftheKing"},"content":" * Currently, updateTask is called by Parser after each command.","lastModifiedDate":"2024-02-06"},{"lineNumber":16,"author":{"gitId":"RingoftheKing"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":17,"author":{"gitId":"RingoftheKing"},"content":"public class Storage {","lastModifiedDate":"2024-02-04"},{"lineNumber":18,"author":{"gitId":"RingoftheKing"},"content":" /**","lastModifiedDate":"2024-02-04"},{"lineNumber":19,"author":{"gitId":"RingoftheKing"},"content":" * After each request by the user, erases previous contents of the file","lastModifiedDate":"2024-02-04"},{"lineNumber":20,"author":{"gitId":"RingoftheKing"},"content":" * and rebuilds the file based on task list","lastModifiedDate":"2024-02-04"},{"lineNumber":21,"author":{"gitId":"RingoftheKing"},"content":" * @param file the file to write tasks to","lastModifiedDate":"2024-02-04"},{"lineNumber":22,"author":{"gitId":"RingoftheKing"},"content":" * @throws IOException if file writing fails for any reason","lastModifiedDate":"2024-02-04"},{"lineNumber":23,"author":{"gitId":"RingoftheKing"},"content":" */","lastModifiedDate":"2024-02-04"},{"lineNumber":24,"author":{"gitId":"RingoftheKing"},"content":" public static void updateTasks(File file) throws IOException {","lastModifiedDate":"2024-02-04"},{"lineNumber":25,"author":{"gitId":"RingoftheKing"},"content":" BufferedWriter bufferedWriter \u003d new BufferedWriter(new FileWriter(file));","lastModifiedDate":"2024-02-04"},{"lineNumber":26,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":27,"author":{"gitId":"RingoftheKing"},"content":" // write to file","lastModifiedDate":"2024-02-04"},{"lineNumber":28,"author":{"gitId":"RingoftheKing"},"content":" int index \u003d 1;","lastModifiedDate":"2024-02-04"},{"lineNumber":29,"author":{"gitId":"RingoftheKing"},"content":" for (Task t : TaskList.tasks) {","lastModifiedDate":"2024-02-04"},{"lineNumber":30,"author":{"gitId":"RingoftheKing"},"content":" String task \u003d index + \" \" + t.toString() + \"\\n\";","lastModifiedDate":"2024-02-04"},{"lineNumber":31,"author":{"gitId":"RingoftheKing"},"content":" bufferedWriter.write(task);","lastModifiedDate":"2024-02-04"},{"lineNumber":32,"author":{"gitId":"RingoftheKing"},"content":" index++;","lastModifiedDate":"2024-02-04"},{"lineNumber":33,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":34,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":35,"author":{"gitId":"RingoftheKing"},"content":" bufferedWriter.close();","lastModifiedDate":"2024-02-04"},{"lineNumber":36,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":37,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":38,"author":{"gitId":"RingoftheKing"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":39,"author":{"gitId":"RingoftheKing"},"content":" * Adds a task to the program\u0027s task list.","lastModifiedDate":"2024-02-06"},{"lineNumber":40,"author":{"gitId":"RingoftheKing"},"content":" * Meant to display messages to signal a task being added","lastModifiedDate":"2024-02-06"},{"lineNumber":41,"author":{"gitId":"RingoftheKing"},"content":" * except when first loading in a task","lastModifiedDate":"2024-02-06"},{"lineNumber":42,"author":{"gitId":"RingoftheKing"},"content":" * @param task Task to add to the TaskList","lastModifiedDate":"2024-02-06"},{"lineNumber":43,"author":{"gitId":"RingoftheKing"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":44,"author":{"gitId":"RingoftheKing"},"content":" public static void addTask(Task task) {","lastModifiedDate":"2024-02-04"},{"lineNumber":45,"author":{"gitId":"RingoftheKing"},"content":" TaskList.tasks.add(task);","lastModifiedDate":"2024-02-04"},{"lineNumber":46,"author":{"gitId":"RingoftheKing"},"content":" if (!Messenger.suppressMessages) {","lastModifiedDate":"2024-02-06"},{"lineNumber":47,"author":{"gitId":"RingoftheKing"},"content":" System.out.println(Messenger.CustomMessages.randomMsg(task));","lastModifiedDate":"2024-02-06"},{"lineNumber":48,"author":{"gitId":"RingoftheKing"},"content":" System.out.println(task);","lastModifiedDate":"2024-02-04"},{"lineNumber":49,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":50,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":51,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":52,"author":{"gitId":"RingoftheKing"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":53,"author":{"gitId":"RingoftheKing"},"content":" * Removes a task from the program\u0027s task list","lastModifiedDate":"2024-02-06"},{"lineNumber":54,"author":{"gitId":"RingoftheKing"},"content":" * Usually called by the \"delete\" command","lastModifiedDate":"2024-02-06"},{"lineNumber":55,"author":{"gitId":"RingoftheKing"},"content":" * @param i the index at which a task should be removed","lastModifiedDate":"2024-02-06"},{"lineNumber":56,"author":{"gitId":"RingoftheKing"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":57,"author":{"gitId":"RingoftheKing"},"content":" public static void removeTask(int i) {","lastModifiedDate":"2024-02-04"},{"lineNumber":58,"author":{"gitId":"RingoftheKing"},"content":" System.out.println(\"Exploooosion! now task \" + TaskList.tasks.remove(i).brief() + \" has been Kazuma-ed out of existence\");","lastModifiedDate":"2024-02-04"},{"lineNumber":59,"author":{"gitId":"RingoftheKing"},"content":" System.out.println(\"You now have \" + TaskList.tasks.size() + \" tasks in your list\");","lastModifiedDate":"2024-02-04"},{"lineNumber":60,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":61,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":62,"author":{"gitId":"RingoftheKing"},"content":" /**","lastModifiedDate":"2024-02-04"},{"lineNumber":63,"author":{"gitId":"RingoftheKing"},"content":" * Loads in the local drive\u0027s save file of Tasks.","lastModifiedDate":"2024-02-06"},{"lineNumber":64,"author":{"gitId":"RingoftheKing"},"content":" * given a File and its contents, add it into the Tracker\u0027s taskList","lastModifiedDate":"2024-02-04"},{"lineNumber":65,"author":{"gitId":"RingoftheKing"},"content":" * @param file the file to read from","lastModifiedDate":"2024-02-04"},{"lineNumber":66,"author":{"gitId":"RingoftheKing"},"content":" * @throws IOException when a file can\u0027t be read from","lastModifiedDate":"2024-02-04"},{"lineNumber":67,"author":{"gitId":"RingoftheKing"},"content":" * @throws BadAppleException when the file contents are in the wrong format (i.e. non-command)","lastModifiedDate":"2024-02-04"},{"lineNumber":68,"author":{"gitId":"RingoftheKing"},"content":" */","lastModifiedDate":"2024-02-04"},{"lineNumber":69,"author":{"gitId":"RingoftheKing"},"content":" public static void parseTasks(File file) throws IOException, BadAppleException {","lastModifiedDate":"2024-02-04"},{"lineNumber":70,"author":{"gitId":"RingoftheKing"},"content":" // check the file to see what tasks are already available.","lastModifiedDate":"2024-02-04"},{"lineNumber":71,"author":{"gitId":"RingoftheKing"},"content":" BufferedReader bufferedReader \u003d new BufferedReader(new FileReader(file));","lastModifiedDate":"2024-02-04"},{"lineNumber":72,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":73,"author":{"gitId":"RingoftheKing"},"content":" int taskIndex \u003d 1;","lastModifiedDate":"2024-02-04"},{"lineNumber":74,"author":{"gitId":"RingoftheKing"},"content":" while (bufferedReader.ready()) {","lastModifiedDate":"2024-02-04"},{"lineNumber":75,"author":{"gitId":"RingoftheKing"},"content":" String line \u003d bufferedReader.readLine();","lastModifiedDate":"2024-02-04"},{"lineNumber":76,"author":{"gitId":"RingoftheKing"},"content":" // deconstruct the line:","lastModifiedDate":"2024-02-04"},{"lineNumber":77,"author":{"gitId":"RingoftheKing"},"content":" ArrayList\u003cString\u003e args \u003d new ArrayList\u003c\u003e(Arrays.asList(line.split(\" \")));","lastModifiedDate":"2024-02-04"},{"lineNumber":78,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":79,"author":{"gitId":"RingoftheKing"},"content":" String command;","lastModifiedDate":"2024-02-06"},{"lineNumber":80,"author":{"gitId":"RingoftheKing"},"content":" String query;","lastModifiedDate":"2024-02-06"},{"lineNumber":81,"author":{"gitId":"RingoftheKing"},"content":" StringBuilder taskName;","lastModifiedDate":"2024-02-04"},{"lineNumber":82,"author":{"gitId":"RingoftheKing"},"content":" boolean status \u003d args.get(2).equals(\"[X]\");","lastModifiedDate":"2024-02-04"},{"lineNumber":83,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":84,"author":{"gitId":"RingoftheKing"},"content":" if (!(args.size() \u003c 2)) {","lastModifiedDate":"2024-02-04"},{"lineNumber":85,"author":{"gitId":"RingoftheKing"},"content":" command \u003d args.get(1);","lastModifiedDate":"2024-02-04"},{"lineNumber":86,"author":{"gitId":"RingoftheKing"},"content":" } else {","lastModifiedDate":"2024-02-04"},{"lineNumber":87,"author":{"gitId":"RingoftheKing"},"content":" return;","lastModifiedDate":"2024-02-04"},{"lineNumber":88,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":89,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":90,"author":{"gitId":"RingoftheKing"},"content":" switch (command.toLowerCase()) {","lastModifiedDate":"2024-02-04"},{"lineNumber":91,"author":{"gitId":"RingoftheKing"},"content":" case \"todo\":","lastModifiedDate":"2024-02-04"},{"lineNumber":92,"author":{"gitId":"RingoftheKing"},"content":" // the fourth token should be the task name for this command.","lastModifiedDate":"2024-02-04"},{"lineNumber":93,"author":{"gitId":"RingoftheKing"},"content":" if (args.size() \u003c 4) {","lastModifiedDate":"2024-02-04"},{"lineNumber":94,"author":{"gitId":"RingoftheKing"},"content":" throw new BadAppleException(\"Todo Task in wrong format, \" +","lastModifiedDate":"2024-02-04"},{"lineNumber":95,"author":{"gitId":"RingoftheKing"},"content":" \"should be \u003cnumber\u003e todo \u003cstatus\u003e \u003ctaskName\u003e\");","lastModifiedDate":"2024-02-04"},{"lineNumber":96,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":97,"author":{"gitId":"RingoftheKing"},"content":" taskName \u003d new StringBuilder();","lastModifiedDate":"2024-02-04"},{"lineNumber":98,"author":{"gitId":"RingoftheKing"},"content":" for (int i \u003d 3; i \u003c args.size(); i++) {","lastModifiedDate":"2024-02-04"},{"lineNumber":99,"author":{"gitId":"RingoftheKing"},"content":" taskName.append(args.get(i));","lastModifiedDate":"2024-02-04"},{"lineNumber":100,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":101,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":102,"author":{"gitId":"RingoftheKing"},"content":" query \u003d \"todo \" + taskName;","lastModifiedDate":"2024-02-04"},{"lineNumber":103,"author":{"gitId":"RingoftheKing"},"content":" break;","lastModifiedDate":"2024-02-04"},{"lineNumber":104,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":105,"author":{"gitId":"RingoftheKing"},"content":" case \"deadline\":","lastModifiedDate":"2024-02-04"},{"lineNumber":106,"author":{"gitId":"RingoftheKing"},"content":" if (args.size() \u003c 6 || !args.contains(\"(by:\")) {","lastModifiedDate":"2024-02-04"},{"lineNumber":107,"author":{"gitId":"RingoftheKing"},"content":" throw new BadAppleException(\"Deadline in wrong format\" +","lastModifiedDate":"2024-02-04"},{"lineNumber":108,"author":{"gitId":"RingoftheKing"},"content":" \"should be \u003cnumber\u003e \u0027deadline\u0027 \u003cstatus\u003e \u003cdescription\u003e \u0027(by: \u0027 \u003cByValue\u003e\");","lastModifiedDate":"2024-02-04"},{"lineNumber":109,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":110,"author":{"gitId":"RingoftheKing"},"content":" taskName \u003d new StringBuilder();","lastModifiedDate":"2024-02-04"},{"lineNumber":111,"author":{"gitId":"RingoftheKing"},"content":" StringBuilder by \u003d new StringBuilder();","lastModifiedDate":"2024-02-04"},{"lineNumber":112,"author":{"gitId":"RingoftheKing"},"content":" int separator \u003d args.indexOf(\"(by:\");","lastModifiedDate":"2024-02-04"},{"lineNumber":113,"author":{"gitId":"RingoftheKing"},"content":" for (int i \u003d 3; i \u003c separator; i++) {","lastModifiedDate":"2024-02-04"},{"lineNumber":114,"author":{"gitId":"RingoftheKing"},"content":" taskName.append(args.get(i)).append(\" \");","lastModifiedDate":"2024-02-04"},{"lineNumber":115,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":116,"author":{"gitId":"RingoftheKing"},"content":" for (int i \u003d separator + 1; i \u003c args.size() - 1; i++) {","lastModifiedDate":"2024-02-04"},{"lineNumber":117,"author":{"gitId":"RingoftheKing"},"content":" by.append(args.get(i)).append(\" \");","lastModifiedDate":"2024-02-04"},{"lineNumber":118,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":119,"author":{"gitId":"RingoftheKing"},"content":" by.deleteCharAt(by.length() - 1);","lastModifiedDate":"2024-02-04"},{"lineNumber":120,"author":{"gitId":"RingoftheKing"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"dd MMM uuuu\");","lastModifiedDate":"2024-02-04"},{"lineNumber":121,"author":{"gitId":"RingoftheKing"},"content":" LocalDate byValue \u003d LocalDate.parse(by, formatter);","lastModifiedDate":"2024-02-04"},{"lineNumber":122,"author":{"gitId":"RingoftheKing"},"content":" query \u003d \"deadline \" + taskName + \"/by \" + byValue;","lastModifiedDate":"2024-02-04"},{"lineNumber":123,"author":{"gitId":"RingoftheKing"},"content":" break;","lastModifiedDate":"2024-02-04"},{"lineNumber":124,"author":{"gitId":"RingoftheKing"},"content":" case \"event\":","lastModifiedDate":"2024-02-04"},{"lineNumber":125,"author":{"gitId":"RingoftheKing"},"content":" if (args.size() \u003c 8 || !(args.contains(\"(from:\") \u0026\u0026 args.contains(\"to:\"))) {","lastModifiedDate":"2024-02-04"},{"lineNumber":126,"author":{"gitId":"RingoftheKing"},"content":" throw new BadAppleException(\"Event in wrong format\" +","lastModifiedDate":"2024-02-04"},{"lineNumber":127,"author":{"gitId":"RingoftheKing"},"content":" \"should be \u003cno.\u003e \u0027event\u0027 \u003cstatus\u003e \u003cdescription\u003e \" +","lastModifiedDate":"2024-02-04"},{"lineNumber":128,"author":{"gitId":"RingoftheKing"},"content":" \"\u0027(from: \u0027 \u003cfromValue\u003e \u0027to: \u0027 \u003ctoValue\u003e\");","lastModifiedDate":"2024-02-04"},{"lineNumber":129,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":130,"author":{"gitId":"RingoftheKing"},"content":" taskName \u003d new StringBuilder();","lastModifiedDate":"2024-02-04"},{"lineNumber":131,"author":{"gitId":"RingoftheKing"},"content":" StringBuilder from \u003d new StringBuilder();","lastModifiedDate":"2024-02-04"},{"lineNumber":132,"author":{"gitId":"RingoftheKing"},"content":" StringBuilder to \u003d new StringBuilder();","lastModifiedDate":"2024-02-04"},{"lineNumber":133,"author":{"gitId":"RingoftheKing"},"content":" int fromSeparator \u003d args.indexOf(\"(from:\");","lastModifiedDate":"2024-02-04"},{"lineNumber":134,"author":{"gitId":"RingoftheKing"},"content":" for (int i \u003d 3; i \u003c fromSeparator; i++) {","lastModifiedDate":"2024-02-04"},{"lineNumber":135,"author":{"gitId":"RingoftheKing"},"content":" taskName.append(args.get(i)).append(\" \");","lastModifiedDate":"2024-02-04"},{"lineNumber":136,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":137,"author":{"gitId":"RingoftheKing"},"content":" int toSeparator \u003d args.indexOf(\"to:\");","lastModifiedDate":"2024-02-04"},{"lineNumber":138,"author":{"gitId":"RingoftheKing"},"content":" for (int i \u003d fromSeparator + 1; i \u003c toSeparator; i++) {","lastModifiedDate":"2024-02-04"},{"lineNumber":139,"author":{"gitId":"RingoftheKing"},"content":" from.append(args.get(i)).append(\" \");","lastModifiedDate":"2024-02-04"},{"lineNumber":140,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":141,"author":{"gitId":"RingoftheKing"},"content":" for (int i \u003d toSeparator + 1; i \u003c args.size() - 1; i++) {","lastModifiedDate":"2024-02-04"},{"lineNumber":142,"author":{"gitId":"RingoftheKing"},"content":" to.append(args.get(i)).append(\" \");","lastModifiedDate":"2024-02-04"},{"lineNumber":143,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":144,"author":{"gitId":"RingoftheKing"},"content":" query \u003d \"event \" + taskName + \"/from \" + from + \"/to \" + to;","lastModifiedDate":"2024-02-04"},{"lineNumber":145,"author":{"gitId":"RingoftheKing"},"content":" break;","lastModifiedDate":"2024-02-04"},{"lineNumber":146,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":147,"author":{"gitId":"RingoftheKing"},"content":" default:","lastModifiedDate":"2024-02-04"},{"lineNumber":148,"author":{"gitId":"RingoftheKing"},"content":" System.out.println(\"unrecognizable command detected\");","lastModifiedDate":"2024-02-04"},{"lineNumber":149,"author":{"gitId":"RingoftheKing"},"content":" throw new BadAppleException(\"The sun shined brighter when your files weren\u0027t corrupted\");","lastModifiedDate":"2024-02-04"},{"lineNumber":150,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":151,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":152,"author":{"gitId":"RingoftheKing"},"content":" // upon reconstructing the command, execute it.","lastModifiedDate":"2024-02-04"},{"lineNumber":153,"author":{"gitId":"RingoftheKing"},"content":" Parser.ProcessQuery(query, file);","lastModifiedDate":"2024-02-04"},{"lineNumber":154,"author":{"gitId":"RingoftheKing"},"content":" if (status) {","lastModifiedDate":"2024-02-04"},{"lineNumber":155,"author":{"gitId":"RingoftheKing"},"content":" // if this task is already complete, mark it.","lastModifiedDate":"2024-02-04"},{"lineNumber":156,"author":{"gitId":"RingoftheKing"},"content":" Parser.ProcessQuery(\"mark \" + taskIndex, file);","lastModifiedDate":"2024-02-04"},{"lineNumber":157,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":158,"author":{"gitId":"RingoftheKing"},"content":" taskIndex++;","lastModifiedDate":"2024-02-04"},{"lineNumber":159,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":160,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":161,"author":{"gitId":"RingoftheKing"},"content":"}","lastModifiedDate":"2024-02-04"}],"authorContributionMap":{"RingoftheKing":161}},{"path":"src/main/java/BadApple/task/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"RingoftheKing"},"content":"package BadApple.task;","lastModifiedDate":"2024-02-04"},{"lineNumber":2,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":3,"author":{"gitId":"RingoftheKing"},"content":"/**","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"RingoftheKing"},"content":" * A Task is an item that has a description,","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"RingoftheKing"},"content":" * it can be marked as done or unmarked.","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"RingoftheKing"},"content":" * Many other types of Task inherit this simple template.","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"RingoftheKing"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":8,"author":{"gitId":"RingoftheKing"},"content":"public class Task {","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"RingoftheKing"},"content":" protected String description;","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"RingoftheKing"},"content":" protected boolean isComplete \u003d false;","lastModifiedDate":"2024-01-26"},{"lineNumber":12,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"RingoftheKing"},"content":" public Task(String desc) {","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"RingoftheKing"},"content":" description \u003d desc;","lastModifiedDate":"2024-02-06"},{"lineNumber":15,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"RingoftheKing"},"content":" public void mark(boolean b, int taskIndex) {","lastModifiedDate":"2024-01-26"},{"lineNumber":18,"author":{"gitId":"RingoftheKing"},"content":" String MARK \u003d b ? \"marked\" : \"unmarked\"; //use enums if more needed","lastModifiedDate":"2024-01-26"},{"lineNumber":19,"author":{"gitId":"RingoftheKing"},"content":" if (TaskList.tasks.isEmpty()) {","lastModifiedDate":"2024-02-04"},{"lineNumber":20,"author":{"gitId":"RingoftheKing"},"content":" System.out.println(\"There\u0027s nothing to mark, Yay!\");","lastModifiedDate":"2024-01-26"},{"lineNumber":21,"author":{"gitId":"RingoftheKing"},"content":" return;","lastModifiedDate":"2024-01-26"},{"lineNumber":22,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"RingoftheKing"},"content":" try {","lastModifiedDate":"2024-01-26"},{"lineNumber":24,"author":{"gitId":"RingoftheKing"},"content":" if (taskIndex \u003e TaskList.tasks.size() || taskIndex \u003c 0) {","lastModifiedDate":"2024-02-04"},{"lineNumber":25,"author":{"gitId":"RingoftheKing"},"content":" System.out.println(\"You don\u0027t have that task silly!\");","lastModifiedDate":"2024-01-26"},{"lineNumber":26,"author":{"gitId":"RingoftheKing"},"content":" return;","lastModifiedDate":"2024-01-26"},{"lineNumber":27,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":28,"author":{"gitId":"RingoftheKing"},"content":" this.isComplete \u003d b;","lastModifiedDate":"2024-01-25"},{"lineNumber":29,"author":{"gitId":"RingoftheKing"},"content":" if (!Messenger.suppressMessages) {","lastModifiedDate":"2024-02-06"},{"lineNumber":30,"author":{"gitId":"RingoftheKing"},"content":" System.out.println(\"I\u0027ve \" + MARK + \" task \" + (taskIndex+1));","lastModifiedDate":"2024-02-01"},{"lineNumber":31,"author":{"gitId":"RingoftheKing"},"content":" System.out.println(this);","lastModifiedDate":"2024-01-26"},{"lineNumber":32,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":33,"author":{"gitId":"RingoftheKing"},"content":" } catch(NumberFormatException | IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-26"},{"lineNumber":34,"author":{"gitId":"RingoftheKing"},"content":" System.out.println(\"Usage: mark \u003ctaskNumber\u003e\");","lastModifiedDate":"2024-01-26"},{"lineNumber":35,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":36,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":37,"author":{"gitId":"RingoftheKing"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":38,"author":{"gitId":"RingoftheKing"},"content":" public String toString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":39,"author":{"gitId":"RingoftheKing"},"content":" String completion \u003d isComplete ? \"[X]\" : \"[]\";","lastModifiedDate":"2024-01-25"},{"lineNumber":40,"author":{"gitId":"RingoftheKing"},"content":" return completion + \" \" + description;","lastModifiedDate":"2024-01-26"},{"lineNumber":41,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":42,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":43,"author":{"gitId":"RingoftheKing"},"content":" public String brief() {","lastModifiedDate":"2024-01-26"},{"lineNumber":44,"author":{"gitId":"RingoftheKing"},"content":" return description;","lastModifiedDate":"2024-01-26"},{"lineNumber":45,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":46,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":47,"author":{"gitId":"RingoftheKing"},"content":" @Override","lastModifiedDate":"2024-02-05"},{"lineNumber":48,"author":{"gitId":"RingoftheKing"},"content":" public boolean equals(Object o) {","lastModifiedDate":"2024-02-05"},{"lineNumber":49,"author":{"gitId":"RingoftheKing"},"content":" if (this \u003d\u003d o) {","lastModifiedDate":"2024-02-05"},{"lineNumber":50,"author":{"gitId":"RingoftheKing"},"content":" return true;","lastModifiedDate":"2024-02-05"},{"lineNumber":51,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":52,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":53,"author":{"gitId":"RingoftheKing"},"content":" if (o instanceof Task) {","lastModifiedDate":"2024-02-05"},{"lineNumber":54,"author":{"gitId":"RingoftheKing"},"content":" Task task \u003d (Task) o;","lastModifiedDate":"2024-02-05"},{"lineNumber":55,"author":{"gitId":"RingoftheKing"},"content":" return task.description.equals(this.description);","lastModifiedDate":"2024-02-05"},{"lineNumber":56,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":57,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":58,"author":{"gitId":"RingoftheKing"},"content":" return false;","lastModifiedDate":"2024-02-05"},{"lineNumber":59,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":60,"author":{"gitId":"RingoftheKing"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"RingoftheKing":60}},{"path":"src/main/java/BadApple/task/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"RingoftheKing"},"content":"package BadApple.task;","lastModifiedDate":"2024-02-04"},{"lineNumber":2,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":3,"author":{"gitId":"RingoftheKing"},"content":"import java.io.BufferedReader;","lastModifiedDate":"2024-02-04"},{"lineNumber":4,"author":{"gitId":"RingoftheKing"},"content":"import java.io.IOException;","lastModifiedDate":"2024-02-04"},{"lineNumber":5,"author":{"gitId":"RingoftheKing"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-02-04"},{"lineNumber":6,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":7,"author":{"gitId":"RingoftheKing"},"content":"/**","lastModifiedDate":"2024-02-06"},{"lineNumber":8,"author":{"gitId":"RingoftheKing"},"content":" * Handles Keep Track of tasks that are in the program.","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"RingoftheKing"},"content":" * Able to list out what tasks exist currently in the Drive.","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"RingoftheKing"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"RingoftheKing"},"content":"public class TaskList {","lastModifiedDate":"2024-02-04"},{"lineNumber":12,"author":{"gitId":"RingoftheKing"},"content":" public static ArrayList\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e(); // Globally accessible Tasks in memory.","lastModifiedDate":"2024-02-04"},{"lineNumber":13,"author":{"gitId":"RingoftheKing"},"content":" public static void listTasks(BufferedReader bufferedReader) throws IOException {","lastModifiedDate":"2024-02-04"},{"lineNumber":14,"author":{"gitId":"RingoftheKing"},"content":" while (bufferedReader.ready()) {","lastModifiedDate":"2024-02-04"},{"lineNumber":15,"author":{"gitId":"RingoftheKing"},"content":" System.out.println(bufferedReader.readLine());","lastModifiedDate":"2024-02-04"},{"lineNumber":16,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":17,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":18,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":19,"author":{"gitId":"RingoftheKing"},"content":" public static void filterTasks(String filter) {","lastModifiedDate":"2024-02-07"},{"lineNumber":20,"author":{"gitId":"RingoftheKing"},"content":" for (Task t : tasks) {","lastModifiedDate":"2024-02-07"},{"lineNumber":21,"author":{"gitId":"RingoftheKing"},"content":" if (t.brief().toLowerCase().contains(filter.toLowerCase())) {","lastModifiedDate":"2024-02-07"},{"lineNumber":22,"author":{"gitId":"RingoftheKing"},"content":" System.out.println(t);","lastModifiedDate":"2024-02-07"},{"lineNumber":23,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":24,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":25,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":26,"author":{"gitId":"RingoftheKing"},"content":"}","lastModifiedDate":"2024-02-04"}],"authorContributionMap":{"RingoftheKing":26}},{"path":"src/main/java/BadApple/task/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"RingoftheKing"},"content":"package BadApple.task;","lastModifiedDate":"2024-02-04"},{"lineNumber":2,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":3,"author":{"gitId":"RingoftheKing"},"content":"import BadApple.main.BadAppleException;","lastModifiedDate":"2024-02-04"},{"lineNumber":4,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"RingoftheKing"},"content":"/**","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"RingoftheKing"},"content":" * Todo shares the same features as its parent class Task","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"RingoftheKing"},"content":" * with the added feature of being able to extract its own","lastModifiedDate":"2024-02-06"},{"lineNumber":8,"author":{"gitId":"RingoftheKing"},"content":" * description for the Task. It rejects empty task names.","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"RingoftheKing"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"RingoftheKing"},"content":"public class Todo extends Task {","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":12,"author":{"gitId":"RingoftheKing"},"content":" protected Todo(String desc) {","lastModifiedDate":"2024-02-05"},{"lineNumber":13,"author":{"gitId":"RingoftheKing"},"content":" super(desc);","lastModifiedDate":"2024-02-01"},{"lineNumber":14,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":15,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":16,"author":{"gitId":"RingoftheKing"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":17,"author":{"gitId":"RingoftheKing"},"content":" * This is a Factory Method that generates a Todo instance","lastModifiedDate":"2024-02-01"},{"lineNumber":18,"author":{"gitId":"RingoftheKing"},"content":" * @param s an ArrayList after tokenizing the query.","lastModifiedDate":"2024-02-01"},{"lineNumber":19,"author":{"gitId":"RingoftheKing"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":20,"author":{"gitId":"RingoftheKing"},"content":" public static Todo extractDetails(String s) throws BadAppleException {","lastModifiedDate":"2024-01-27"},{"lineNumber":21,"author":{"gitId":"RingoftheKing"},"content":" if (s.split(\" \").length \u003d\u003d 1) {","lastModifiedDate":"2024-01-27"},{"lineNumber":22,"author":{"gitId":"RingoftheKing"},"content":" throw new BadAppleException(\"There is nothing here.\");","lastModifiedDate":"2024-01-27"},{"lineNumber":23,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":24,"author":{"gitId":"RingoftheKing"},"content":" // This removes the \"todo\" from the front","lastModifiedDate":"2024-01-26"},{"lineNumber":25,"author":{"gitId":"RingoftheKing"},"content":" return new Todo(s.substring(5));","lastModifiedDate":"2024-01-26"},{"lineNumber":26,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":27,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":28,"author":{"gitId":"RingoftheKing"},"content":" @Override","lastModifiedDate":"2024-01-26"},{"lineNumber":29,"author":{"gitId":"RingoftheKing"},"content":" public String toString() {","lastModifiedDate":"2024-01-26"},{"lineNumber":30,"author":{"gitId":"RingoftheKing"},"content":" return \"Todo\" + \" \" + super.toString();","lastModifiedDate":"2024-02-01"},{"lineNumber":31,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":32,"author":{"gitId":"RingoftheKing"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"RingoftheKing":32}},{"path":"src/test/java/BadApple/task/ParserTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"RingoftheKing"},"content":"package BadApple.task;","lastModifiedDate":"2024-02-05"},{"lineNumber":2,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":3,"author":{"gitId":"RingoftheKing"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-02-05"},{"lineNumber":4,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":5,"author":{"gitId":"RingoftheKing"},"content":"import java.io.File;","lastModifiedDate":"2024-02-05"},{"lineNumber":6,"author":{"gitId":"RingoftheKing"},"content":"import java.io.IOException;","lastModifiedDate":"2024-02-05"},{"lineNumber":7,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":8,"author":{"gitId":"RingoftheKing"},"content":"import static org.junit.jupiter.api.Assertions.*;","lastModifiedDate":"2024-02-05"},{"lineNumber":9,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":10,"author":{"gitId":"RingoftheKing"},"content":"public class ParserTest {","lastModifiedDate":"2024-02-05"},{"lineNumber":11,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":12,"author":{"gitId":"RingoftheKing"},"content":" @Test","lastModifiedDate":"2024-02-05"},{"lineNumber":13,"author":{"gitId":"RingoftheKing"},"content":" public void invalidTodoCommand() {","lastModifiedDate":"2024-02-05"},{"lineNumber":14,"author":{"gitId":"RingoftheKing"},"content":" File file \u003d new File(\"src/main/data/tempFile.txt\");","lastModifiedDate":"2024-02-05"},{"lineNumber":15,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":16,"author":{"gitId":"RingoftheKing"},"content":" try {","lastModifiedDate":"2024-02-05"},{"lineNumber":17,"author":{"gitId":"RingoftheKing"},"content":" Parser.ProcessQuery(\"todo\", file);","lastModifiedDate":"2024-02-05"},{"lineNumber":18,"author":{"gitId":"RingoftheKing"},"content":" boolean isEmpty \u003d TaskList.tasks.isEmpty();","lastModifiedDate":"2024-02-05"},{"lineNumber":19,"author":{"gitId":"RingoftheKing"},"content":" assertTrue(isEmpty);","lastModifiedDate":"2024-02-05"},{"lineNumber":20,"author":{"gitId":"RingoftheKing"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-02-05"},{"lineNumber":21,"author":{"gitId":"RingoftheKing"},"content":" fail();","lastModifiedDate":"2024-02-05"},{"lineNumber":22,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":23,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":24,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":25,"author":{"gitId":"RingoftheKing"},"content":" @Test","lastModifiedDate":"2024-02-05"},{"lineNumber":26,"author":{"gitId":"RingoftheKing"},"content":" public void invalidCommand() {","lastModifiedDate":"2024-02-05"},{"lineNumber":27,"author":{"gitId":"RingoftheKing"},"content":" File file \u003d new File(\"src/main/data/tempFile.txt\");","lastModifiedDate":"2024-02-05"},{"lineNumber":28,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":29,"author":{"gitId":"RingoftheKing"},"content":" try {","lastModifiedDate":"2024-02-05"},{"lineNumber":30,"author":{"gitId":"RingoftheKing"},"content":" int x \u003d TaskList.tasks.size();","lastModifiedDate":"2024-02-05"},{"lineNumber":31,"author":{"gitId":"RingoftheKing"},"content":" Parser.ProcessQuery(\"HELLO WORLD\", file);","lastModifiedDate":"2024-02-05"},{"lineNumber":32,"author":{"gitId":"RingoftheKing"},"content":" int y \u003d TaskList.tasks.size();","lastModifiedDate":"2024-02-05"},{"lineNumber":33,"author":{"gitId":"RingoftheKing"},"content":" assertEquals(x, y);","lastModifiedDate":"2024-02-05"},{"lineNumber":34,"author":{"gitId":"RingoftheKing"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-02-05"},{"lineNumber":35,"author":{"gitId":"RingoftheKing"},"content":" fail();","lastModifiedDate":"2024-02-05"},{"lineNumber":36,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":37,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":38,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":39,"author":{"gitId":"RingoftheKing"},"content":" @Test","lastModifiedDate":"2024-02-05"},{"lineNumber":40,"author":{"gitId":"RingoftheKing"},"content":" public void todoCommand() {","lastModifiedDate":"2024-02-05"},{"lineNumber":41,"author":{"gitId":"RingoftheKing"},"content":" File file \u003d new File(\"src/main/data/tempFile.txt\");","lastModifiedDate":"2024-02-05"},{"lineNumber":42,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":43,"author":{"gitId":"RingoftheKing"},"content":" try {","lastModifiedDate":"2024-02-05"},{"lineNumber":44,"author":{"gitId":"RingoftheKing"},"content":" Parser.ProcessQuery(\"todo DONTCARE\", file);","lastModifiedDate":"2024-02-05"},{"lineNumber":45,"author":{"gitId":"RingoftheKing"},"content":" assertTrue(TaskList.tasks.contains(Todo.extractDetails(\"todo DONTCARE\")));","lastModifiedDate":"2024-02-05"},{"lineNumber":46,"author":{"gitId":"RingoftheKing"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-02-05"},{"lineNumber":47,"author":{"gitId":"RingoftheKing"},"content":" fail();","lastModifiedDate":"2024-02-05"},{"lineNumber":48,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":49,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":50,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":51,"author":{"gitId":"RingoftheKing"},"content":" @Test","lastModifiedDate":"2024-02-05"},{"lineNumber":52,"author":{"gitId":"RingoftheKing"},"content":" public void deadlineCommand() {","lastModifiedDate":"2024-02-05"},{"lineNumber":53,"author":{"gitId":"RingoftheKing"},"content":" File file \u003d new File(\"src/main/data/tempFile.txt\");","lastModifiedDate":"2024-02-05"},{"lineNumber":54,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":55,"author":{"gitId":"RingoftheKing"},"content":" try {","lastModifiedDate":"2024-02-05"},{"lineNumber":56,"author":{"gitId":"RingoftheKing"},"content":" Parser.ProcessQuery(\"deadline CS2103 /by 2024-02-06\", file);","lastModifiedDate":"2024-02-05"},{"lineNumber":57,"author":{"gitId":"RingoftheKing"},"content":" assertEquals(\"Deadline [] CS2103 (by: 06 Feb 2024 )\", TaskList.tasks.get(0).toString());","lastModifiedDate":"2024-02-05"},{"lineNumber":58,"author":{"gitId":"RingoftheKing"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-02-05"},{"lineNumber":59,"author":{"gitId":"RingoftheKing"},"content":" fail();","lastModifiedDate":"2024-02-05"},{"lineNumber":60,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":61,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":62,"author":{"gitId":"RingoftheKing"},"content":"}","lastModifiedDate":"2024-02-05"}],"authorContributionMap":{"RingoftheKing":62}},{"path":"src/test/java/BadApple/task/TodoTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"RingoftheKing"},"content":"package BadApple.task;","lastModifiedDate":"2024-02-05"},{"lineNumber":2,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":3,"author":{"gitId":"RingoftheKing"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-02-05"},{"lineNumber":4,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":5,"author":{"gitId":"RingoftheKing"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-02-05"},{"lineNumber":6,"author":{"gitId":"RingoftheKing"},"content":"import static org.junit.jupiter.api.Assertions.fail;","lastModifiedDate":"2024-02-05"},{"lineNumber":7,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":8,"author":{"gitId":"RingoftheKing"},"content":"public class TodoTest {","lastModifiedDate":"2024-02-05"},{"lineNumber":9,"author":{"gitId":"RingoftheKing"},"content":" @Test","lastModifiedDate":"2024-02-05"},{"lineNumber":10,"author":{"gitId":"RingoftheKing"},"content":" public void initialisationTest() {","lastModifiedDate":"2024-02-05"},{"lineNumber":11,"author":{"gitId":"RingoftheKing"},"content":" Todo todo \u003d new Todo(\"CS2103\");","lastModifiedDate":"2024-02-05"},{"lineNumber":12,"author":{"gitId":"RingoftheKing"},"content":" assertEquals(\"Todo [] CS2103\", todo.toString());","lastModifiedDate":"2024-02-05"},{"lineNumber":13,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":14,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":15,"author":{"gitId":"RingoftheKing"},"content":" @Test","lastModifiedDate":"2024-02-05"},{"lineNumber":16,"author":{"gitId":"RingoftheKing"},"content":" public void markingTest() {","lastModifiedDate":"2024-02-05"},{"lineNumber":17,"author":{"gitId":"RingoftheKing"},"content":" Todo todo \u003d new Todo(\"CS2101\");","lastModifiedDate":"2024-02-05"},{"lineNumber":18,"author":{"gitId":"RingoftheKing"},"content":" TaskList.tasks.add(todo);","lastModifiedDate":"2024-02-05"},{"lineNumber":19,"author":{"gitId":"RingoftheKing"},"content":" todo.mark(true, 1);","lastModifiedDate":"2024-02-05"},{"lineNumber":20,"author":{"gitId":"RingoftheKing"},"content":" assertEquals(\"Todo [X] CS2101\", todo.toString());","lastModifiedDate":"2024-02-05"},{"lineNumber":21,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":22,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":23,"author":{"gitId":"RingoftheKing"},"content":"}","lastModifiedDate":"2024-02-05"}],"authorContributionMap":{"RingoftheKing":23}},{"path":"text-ui-test/runtest.bat","fileType":"bat","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@ECHO OFF","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"REM create bin directory if it doesn\u0027t exist","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"if not exist ..\\bin mkdir ..\\bin","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"REM delete output from previous run","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"if exist ACTUAL.TXT del ACTUAL.TXT","lastModifiedDate":"2020-08-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"REM compile the code into the bin folder","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"javac -cp ..\\src\\main\\java -Xlint:none -d ..\\bin ..\\src\\main\\java\\*.java","lastModifiedDate":"2020-08-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"IF ERRORLEVEL 1 (","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":" echo ********** BUILD FAILURE **********","lastModifiedDate":"2020-05-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":" exit /b 1","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":")","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"REM no error here, errorlevel \u003d\u003d 0","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"REM run the program, feed commands from input.txt file and redirect the output to the ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"RingoftheKing"},"content":"java -classpath ..\\bin BadPingGuo \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-01-27"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"REM compare the output to the expected output","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"FC ACTUAL.TXT EXPECTED.TXT","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"RingoftheKing":1,"-":20}},{"path":"text-ui-test/runtest.sh","fileType":"sh","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"#!/usr/bin/env bash","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"# create bin directory if it doesn\u0027t exist","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"if [ ! -d \"../bin\" ]","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":" mkdir ../bin","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"# delete output from previous run","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"if [ -e \"./ACTUAL.TXT\" ]","lastModifiedDate":"2020-05-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":" rm ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"# compile the code into the bin folder, terminates if error occurred","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"if ! javac -cp ../src/main/java -Xlint:none -d ../bin ../src/main/java/*.java","lastModifiedDate":"2020-08-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" echo \"********** BUILD FAILURE **********\"","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" exit 1","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":"# run the program, feed commands from input.txt file and redirect the output to the ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"RingoftheKing"},"content":"java -classpath ../bin BadPingGuo \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-01-27"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":"# convert to UNIX format","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":"cp EXPECTED.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":"dos2unix ACTUAL.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"# compare the output to the expected output","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"diff ACTUAL.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":"if [ $? -eq 0 ]","lastModifiedDate":"2020-05-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":" echo \"Test result: PASSED\"","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":" exit 0","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":"else","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" echo \"Test result: FAILED\"","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" exit 1","lastModifiedDate":"2020-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"RingoftheKing":1,"-":37}}] diff --git a/RingoftheKing_ip_master/commits.json b/RingoftheKing_ip_master/commits.json index 4f0c69ea..de127721 100644 --- a/RingoftheKing_ip_master/commits.json +++ b/RingoftheKing_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"RingoftheKing":[{"date":"2024-01-24","commitResults":[{"hash":"94f35d68a7dd4fc30cefb2df098c76e647e613c7","isMergeCommit":false,"messageTitle":"Initialise entry and exit lines","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":5,"deletions":2}}},{"hash":"d98b184d3257e5ed622648dc9bdb94731117ce06","isMergeCommit":false,"messageTitle":"Added Echoing function","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":11,"deletions":0}}},{"hash":"1fe5266aae2d055fe93b93cdf0e2b8e1b9c7fe3b","isMergeCommit":false,"messageTitle":"Added \u0027add\u0027 and \u0027List\u0027 functions","messageBody":"","tags":["Level-2-main"],"fileTypesAndContributionMap":{"java":{"insertions":75,"deletions":0}}},{"hash":"bcc048885950985f2691b29879d966e28c48aebb","isMergeCommit":false,"messageTitle":"added functionality to Entry Point of program","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":3}}}]},{"date":"2024-01-25","commitResults":[{"hash":"99260b195b53005410ba02ce17d6cb66a93df7f4","isMergeCommit":false,"messageTitle":"Added Marking functionality, including Exception Handling","messageBody":"","tags":["Level-4-pre-fix"],"fileTypesAndContributionMap":{"java":{"insertions":77,"deletions":9}}}]},{"date":"2024-01-26","commitResults":[{"hash":"840981bfc48fc9ba8aa6dd4bd8dadbc35aadc328","isMergeCommit":false,"messageTitle":"added types of Tasks: TODO, Event, Deadline","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":58,"deletions":41}}},{"hash":"255a596f17ed4d947ff37b904678966c76afb3d6","isMergeCommit":false,"messageTitle":"corrected empty files, added Task display when marking","messageBody":"","tags":["Level-5","A-TextUITesting"],"fileTypesAndContributionMap":{"java":{"insertions":139,"deletions":52}}}]},{"date":"2024-01-27","commitResults":[{"hash":"b85dd45d012cba21a756a7825550082540f5800c","isMergeCommit":false,"messageTitle":"Add args handling to Tasks and inheritors","messageBody":"Deadline, Event, Todo accept all args after.\nIncorrect args generate an empty Task and empty fields.\n\nIt should handle incorrect formatting of args\n\nAdd args handling to Task inheritors, add Exception handling in Tracker\n\nThis prevents users from entering incorrect inputs and creating\nredundant entries in list. Exceptions NOT handled in tasks, future\nfeatures may need to know such exceptions. Exception handled in Tracker.\n","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":47,"deletions":13},"sh":{"insertions":1,"deletions":1}}},{"hash":"e1c99a67282e16887c7010c8081b0446543109f8","isMergeCommit":false,"messageTitle":"Add Delete Function","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":18,"deletions":0}}},{"hash":"881931f0959963108de8d94f75921dd6334bdc83","isMergeCommit":false,"messageTitle":"Configure runtest.bat to correct input file","messageBody":"","fileTypesAndContributionMap":{"bat":{"insertions":1,"deletions":1}}},{"hash":"dc22a00437655d0953f4a710f2eb038235540b84","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/RingoftheKing/ip","messageBody":"","tags":["branch-level-7-functionality"],"fileTypesAndContributionMap":{}}]},{"date":"2024-02-01","commitResults":[{"hash":"0d9265577475dd59dd7b0e985fd246945f5f85eb","isMergeCommit":false,"messageTitle":"Relegate Task reading and writing to files","messageBody":"Tasks are now written to a file on the computer\n(or generated if not exist)\n\nUsers can fetch data after inputing their Tasks\nrather than having it disappear\n\ntxt files are easy to write to and easy to read from\nmaking them a good way enforce permanence in data.\n","fileTypesAndContributionMap":{"java":{"insertions":194,"deletions":34}}},{"hash":"4035dc597f691e60e8db5c9fd53a7ec85bd9f8bf","isMergeCommit":false,"messageTitle":"Merge branch-level-7 with master","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":48,"deletions":18}}}]},{"date":"2024-02-02","commitResults":[{"hash":"cc35b3b4bbdd96401cbdb4a3d51e908893aaf5ba","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/RingoftheKing/ip","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-02-04","commitResults":[{"hash":"7ccf4a824cd80be7bbb3409719b3a8c15c21bc07","isMergeCommit":false,"messageTitle":"Specify Dates to be used in Deadline","messageBody":"Deadline originally allowed any String to be set\nas its /by value.\n\nIt is better to use an actual date so future filters\ncan search for deadlines and prioritise them\n","tags":["Level-8"],"fileTypesAndContributionMap":{"java":{"insertions":20,"deletions":7}}},{"hash":"f84ad139e1513711b291c4f8288d616df61a4054","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"1524ca6ad86f9e2850d224c78b4b7c8657529aeb","isMergeCommit":false,"messageTitle":"Add Ui, TaskList, Storage, Parser classes","messageBody":"Code logic was all placed in Tracker.java\nThis impedes new developers from understanding\nwhat the Tracker\u0027s function is.\n\nIt is better to have a segregation of concerns\nso that each feature is placed in its own classes\n\nAs such 4 new classes are made to accomodate\nsuch functions\n","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{"java":{"insertions":279,"deletions":235}}},{"hash":"02b1fee0faf533edc2b36b6535bc07f67c25b0d4","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-more-OOP\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"6978aea4a41aa6f7f2dc73edf02e76fb944b5e4b","isMergeCommit":false,"messageTitle":"Move classes to packages Main, Tasks","messageBody":"Besides relegating code logic to more classes\nIt is also good to move classes to packages\nthat clearly denote their functions\n\nAdditonal segregation of concerns thus added\n","tags":["A-Packages"],"fileTypesAndContributionMap":{"java":{"insertions":37,"deletions":10}}}]},{"date":"2024-02-05","commitResults":[{"hash":"23e327c5f5d586421880dc7262c7ea0e03d822eb","isMergeCommit":true,"messageTitle":"Merge branch \u0027add-gradle-support\u0027 of https://github.com/RingoftheKing/ip","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"8ea55647af7a74affff9a0903d5e45ca4f505d7d","isMergeCommit":false,"messageTitle":"Add gradle build","messageBody":"Created a better environment for junit testing\n","tags":["A-Gradle"],"fileTypesAndContributionMap":{"gradle":{"insertions":2,"deletions":2}}},{"hash":"12d0e9bbdd6e359bca72b34449d6b49eeba16d83","isMergeCommit":false,"messageTitle":"Add Testcases for Todo and Parser","messageBody":"It is good to do testing on methods to\nensure that future code edits do not\ncause dependency failures.\n\nTherefore we added some preliminary\ntest cases.\n","tags":["A-JUnit"],"fileTypesAndContributionMap":{"java":{"insertions":101,"deletions":2}}}]}]},"authorFileTypeContributionMap":{"RingoftheKing":{"java":693,"md":0,"fxml":0,"sh":1,"bat":1,"gradle":1,"txt":0}},"authorContributionVariance":{"RingoftheKing":23270.32},"authorDisplayNameMap":{"RingoftheKing":"CS2103T-T15-2 GUO ..UHAO"}} +{"authorDailyContributionsMap":{"RingoftheKing":[{"date":"2024-01-24","commitResults":[{"hash":"94f35d68a7dd4fc30cefb2df098c76e647e613c7","isMergeCommit":false,"messageTitle":"Initialise entry and exit lines","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":5,"deletions":2}}},{"hash":"d98b184d3257e5ed622648dc9bdb94731117ce06","isMergeCommit":false,"messageTitle":"Added Echoing function","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":11,"deletions":0}}},{"hash":"1fe5266aae2d055fe93b93cdf0e2b8e1b9c7fe3b","isMergeCommit":false,"messageTitle":"Added \u0027add\u0027 and \u0027List\u0027 functions","messageBody":"","tags":["Level-2-main"],"fileTypesAndContributionMap":{"java":{"insertions":75,"deletions":0}}},{"hash":"bcc048885950985f2691b29879d966e28c48aebb","isMergeCommit":false,"messageTitle":"added functionality to Entry Point of program","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":3}}}]},{"date":"2024-01-25","commitResults":[{"hash":"99260b195b53005410ba02ce17d6cb66a93df7f4","isMergeCommit":false,"messageTitle":"Added Marking functionality, including Exception Handling","messageBody":"","tags":["Level-4-pre-fix"],"fileTypesAndContributionMap":{"java":{"insertions":77,"deletions":9}}}]},{"date":"2024-01-26","commitResults":[{"hash":"840981bfc48fc9ba8aa6dd4bd8dadbc35aadc328","isMergeCommit":false,"messageTitle":"added types of Tasks: TODO, Event, Deadline","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":58,"deletions":41}}},{"hash":"255a596f17ed4d947ff37b904678966c76afb3d6","isMergeCommit":false,"messageTitle":"corrected empty files, added Task display when marking","messageBody":"","tags":["Level-5","A-TextUITesting"],"fileTypesAndContributionMap":{"java":{"insertions":139,"deletions":52}}}]},{"date":"2024-01-27","commitResults":[{"hash":"b85dd45d012cba21a756a7825550082540f5800c","isMergeCommit":false,"messageTitle":"Add args handling to Tasks and inheritors","messageBody":"Deadline, Event, Todo accept all args after.\nIncorrect args generate an empty Task and empty fields.\n\nIt should handle incorrect formatting of args\n\nAdd args handling to Task inheritors, add Exception handling in Tracker\n\nThis prevents users from entering incorrect inputs and creating\nredundant entries in list. Exceptions NOT handled in tasks, future\nfeatures may need to know such exceptions. Exception handled in Tracker.\n","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":47,"deletions":13},"sh":{"insertions":1,"deletions":1}}},{"hash":"e1c99a67282e16887c7010c8081b0446543109f8","isMergeCommit":false,"messageTitle":"Add Delete Function","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":18,"deletions":0}}},{"hash":"881931f0959963108de8d94f75921dd6334bdc83","isMergeCommit":false,"messageTitle":"Configure runtest.bat to correct input file","messageBody":"","fileTypesAndContributionMap":{"bat":{"insertions":1,"deletions":1}}},{"hash":"dc22a00437655d0953f4a710f2eb038235540b84","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/RingoftheKing/ip","messageBody":"","tags":["branch-level-7-functionality"],"fileTypesAndContributionMap":{}}]},{"date":"2024-02-01","commitResults":[{"hash":"0d9265577475dd59dd7b0e985fd246945f5f85eb","isMergeCommit":false,"messageTitle":"Relegate Task reading and writing to files","messageBody":"Tasks are now written to a file on the computer\n(or generated if not exist)\n\nUsers can fetch data after inputing their Tasks\nrather than having it disappear\n\ntxt files are easy to write to and easy to read from\nmaking them a good way enforce permanence in data.\n","fileTypesAndContributionMap":{"java":{"insertions":194,"deletions":34}}},{"hash":"4035dc597f691e60e8db5c9fd53a7ec85bd9f8bf","isMergeCommit":false,"messageTitle":"Merge branch-level-7 with master","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":48,"deletions":18}}}]},{"date":"2024-02-02","commitResults":[{"hash":"cc35b3b4bbdd96401cbdb4a3d51e908893aaf5ba","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/RingoftheKing/ip","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-02-04","commitResults":[{"hash":"7ccf4a824cd80be7bbb3409719b3a8c15c21bc07","isMergeCommit":false,"messageTitle":"Specify Dates to be used in Deadline","messageBody":"Deadline originally allowed any String to be set\nas its /by value.\n\nIt is better to use an actual date so future filters\ncan search for deadlines and prioritise them\n","tags":["Level-8"],"fileTypesAndContributionMap":{"java":{"insertions":20,"deletions":7}}},{"hash":"f84ad139e1513711b291c4f8288d616df61a4054","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"1524ca6ad86f9e2850d224c78b4b7c8657529aeb","isMergeCommit":false,"messageTitle":"Add Ui, TaskList, Storage, Parser classes","messageBody":"Code logic was all placed in Tracker.java\nThis impedes new developers from understanding\nwhat the Tracker\u0027s function is.\n\nIt is better to have a segregation of concerns\nso that each feature is placed in its own classes\n\nAs such 4 new classes are made to accomodate\nsuch functions\n","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{"java":{"insertions":279,"deletions":235}}},{"hash":"02b1fee0faf533edc2b36b6535bc07f67c25b0d4","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-more-OOP\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"6978aea4a41aa6f7f2dc73edf02e76fb944b5e4b","isMergeCommit":false,"messageTitle":"Move classes to packages Main, Tasks","messageBody":"Besides relegating code logic to more classes\nIt is also good to move classes to packages\nthat clearly denote their functions\n\nAdditonal segregation of concerns thus added\n","tags":["A-Packages"],"fileTypesAndContributionMap":{"java":{"insertions":37,"deletions":10}}}]},{"date":"2024-02-05","commitResults":[{"hash":"23e327c5f5d586421880dc7262c7ea0e03d822eb","isMergeCommit":true,"messageTitle":"Merge branch \u0027add-gradle-support\u0027 of https://github.com/RingoftheKing/ip","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"8ea55647af7a74affff9a0903d5e45ca4f505d7d","isMergeCommit":false,"messageTitle":"Add gradle build","messageBody":"Created a better environment for junit testing\n","tags":["A-Gradle"],"fileTypesAndContributionMap":{"gradle":{"insertions":2,"deletions":2}}},{"hash":"12d0e9bbdd6e359bca72b34449d6b49eeba16d83","isMergeCommit":false,"messageTitle":"Add Testcases for Todo and Parser","messageBody":"It is good to do testing on methods to\nensure that future code edits do not\ncause dependency failures.\n\nTherefore we added some preliminary\ntest cases.\n","tags":["A-JUnit"],"fileTypesAndContributionMap":{"java":{"insertions":101,"deletions":2}}}]},{"date":"2024-02-06","commitResults":[{"hash":"d1b08f7dcc69c50b7fcd3ac0deab9b46fa83f3fa","isMergeCommit":false,"messageTitle":"Add JavaDoc to all classes","messageBody":"For easier understanding of what each class does.\n","fileTypesAndContributionMap":{"java":{"insertions":86,"deletions":34}}},{"hash":"3617dbad845788cfcdc0f2a7df6f11b6f591eef0","isMergeCommit":false,"messageTitle":"Follow SE-Edu coding standard.","messageBody":"Coding standards are good practices\nFollowing them provides readability.\n","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}}]},{"date":"2024-02-07","commitResults":[{"hash":"5df6469adf7f4c1253c99dae12d87359142bb5f0","isMergeCommit":false,"messageTitle":"Add Find functionality","messageBody":"Users can now find tasks that\nmatch a given search string.\nMatches need not be exact, for example\nCS will find CS2103\n","fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":0}}},{"hash":"db254faa78cf4b2d2693b5e5873711104f6b6f81","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027origin/branch-A-CodingStandard\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"a94d74792248b1100f813518cb78fb03c23e1748","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027origin/branch-Level-9\u0027","messageBody":"","tags":["Level-9","A-JavaDoc","A-CodingStandard"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"RingoftheKing":{"java":760,"md":0,"fxml":0,"sh":1,"bat":1,"gradle":1,"txt":0}},"authorContributionVariance":{"RingoftheKing":21256.73},"authorDisplayNameMap":{"RingoftheKing":"CS2103T-T15-2 GUO ..UHAO"}} diff --git a/archive.zip b/archive.zip index ba838c32b0f82c486249137a29eda9686716eb7f..ecf180e29fbc3058a48f20ea7830baf5f5612977 100644 GIT binary patch delta 98046 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∈vI`x2_4RU7pj!p*b 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