diff --git a/AY2324S1-CS2113-T17-1_tp_master/authorship.json b/AY2324S1-CS2113-T17-1_tp_master/authorship.json index b0b15f9..b36339a 100644 --- a/AY2324S1-CS2113-T17-1_tp_master/authorship.json +++ b/AY2324S1-CS2113-T17-1_tp_master/authorship.json @@ -1 +1 @@ -[{"path":"README.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"AlWo223"},"content":"# AthletiCLI project template","lastModifiedDate":"2023-10-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"This is a project template for a greenfield Java project. It\u0027s named after the Java mascot _Duke_. Given below are instructions on how to use it.","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"## Setting up in Intellij","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"Prerequisites: JDK 11 (use the exact version), update Intellij to the most recent version.","lastModifiedDate":"2020-05-24"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":"1. **Ensure Intellij JDK 11 is defined as an SDK**, as described [here](https://www.jetbrains.com/help/idea/sdk.html#set-up-jdk) -- this step is not needed if you have used JDK 11 in a previous Intellij project.","lastModifiedDate":"2020-05-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":"1. **Import the project _as a Gradle project_**, as described [here](https://se-education.org/guides/tutorials/intellijImportGradleProject.html).","lastModifiedDate":"2020-05-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":"1. **Verify the set up**: After the importing is complete, locate the `src/main/java/seedu/duke/Duke.java` file, right-click it, and choose `Run Duke.main()`. If the setup is correct, you should see something like the below:","lastModifiedDate":"2020-05-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":" \u003e Task :compileJava","lastModifiedDate":"2020-05-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":" \u003e Task :processResources NO-SOURCE","lastModifiedDate":"2020-05-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003e Task :classes","lastModifiedDate":"2020-05-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":" ","lastModifiedDate":"2020-05-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003e Task :Duke.main()","lastModifiedDate":"2020-05-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":" Hello from","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" ____ _ ","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" | _ \\ _ _| | _____ ","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" | | | | | | | |/ / _ \\","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" | |_| | |_| | \u003c __/","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" |____/ \\__,_|_|\\_\\___|","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" ","lastModifiedDate":"2020-05-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":" What is your name?","lastModifiedDate":"2020-05-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" Type some word and press enter to let the execution proceed to the end.","lastModifiedDate":"2020-05-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":"## Build automation using Gradle","lastModifiedDate":"2020-05-24"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-24"},{"lineNumber":31,"author":{"gitId":"-"},"content":"* This project uses Gradle for build automation and dependency management. It includes a basic build script as well (i.e. the `build.gradle` file).","lastModifiedDate":"2020-05-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":"* If you are new to Gradle, refer to the [Gradle Tutorial at se-education.org/guides](https://se-education.org/guides/tutorials/gradle.html).","lastModifiedDate":"2020-05-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":"## Testing","lastModifiedDate":"2020-05-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":"### I/O redirection tests","lastModifiedDate":"2020-05-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":"* To run _I/O redirection_ tests (aka _Text UI tests_), navigate to the `text-ui-test` and run the `runtest(.bat/.sh)` script.","lastModifiedDate":"2020-05-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":"### JUnit tests","lastModifiedDate":"2020-05-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":"* A skeleton JUnit test (`src/test/java/seedu/duke/DukeTest.java`) is provided with this project template. ","lastModifiedDate":"2020-05-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":"* If you are new to JUnit, refer to the [JUnit Tutorial at se-education.org/guides](https://se-education.org/guides/tutorials/junit.html).","lastModifiedDate":"2020-05-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-24"},{"lineNumber":45,"author":{"gitId":"-"},"content":"## Checkstyle","lastModifiedDate":"2020-05-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":"* A sample CheckStyle rule configuration is provided in this project.","lastModifiedDate":"2020-05-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":"* If you are new to Checkstyle, refer to the [Checkstyle Tutorial at se-education.org/guides](https://se-education.org/guides/tutorials/checkstyle.html).","lastModifiedDate":"2020-05-24"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-24"},{"lineNumber":50,"author":{"gitId":"-"},"content":"## CI using GitHub Actions","lastModifiedDate":"2020-05-24"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-24"},{"lineNumber":52,"author":{"gitId":"-"},"content":"The project uses [GitHub actions](https://github.com/features/actions) for CI. When you push a commit to this repo or PR against it, GitHub actions will run automatically to build and verify the code as updated by the commit/PR.","lastModifiedDate":"2020-05-24"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-24"},{"lineNumber":54,"author":{"gitId":"-"},"content":"## Documentation","lastModifiedDate":"2020-05-24"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-24"},{"lineNumber":56,"author":{"gitId":"-"},"content":"`/docs` folder contains a skeleton version of the project documentation.","lastModifiedDate":"2020-05-24"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-24"},{"lineNumber":58,"author":{"gitId":"-"},"content":"Steps for publishing documentation to the public: ","lastModifiedDate":"2020-05-24"},{"lineNumber":59,"author":{"gitId":"-"},"content":"1. If you are using this project template for an individual project, go your fork on GitHub.\u003cbr\u003e","lastModifiedDate":"2020-05-24"},{"lineNumber":60,"author":{"gitId":"-"},"content":" If you are using this project template for a team project, go to the team fork on GitHub.","lastModifiedDate":"2020-05-24"},{"lineNumber":61,"author":{"gitId":"-"},"content":"1. Click on the `settings` tab.","lastModifiedDate":"2020-05-24"},{"lineNumber":62,"author":{"gitId":"-"},"content":"1. Scroll down to the `GitHub Pages` section.","lastModifiedDate":"2020-05-24"},{"lineNumber":63,"author":{"gitId":"-"},"content":"1. Set the `source` as `master branch /docs folder`.","lastModifiedDate":"2020-05-24"},{"lineNumber":64,"author":{"gitId":"-"},"content":"1. Optionally, use the `choose a theme` button to choose a theme for your documentation.","lastModifiedDate":"2020-05-24"}],"authorContributionMap":{"AlWo223":1,"-":63}},{"path":"build.gradle","fileType":"other","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"plugins {","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":" id \u0027java\u0027","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":" id \u0027application\u0027","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":" id \u0027checkstyle\u0027","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":" id \u0027com.github.johnrengelman.shadow\u0027 version \u00277.1.2\u0027","lastModifiedDate":"2022-06-17"},{"lineNumber":6,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"repositories {","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":" mavenCentral()","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":"dependencies {","lastModifiedDate":"2020-05-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":" testImplementation group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-api\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":" testRuntimeOnly group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-engine\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":32,"author":{"gitId":"skylee03"},"content":" mainClass.set(\"athleticli.AthletiCLI\")","lastModifiedDate":"2023-10-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"skylee03"},"content":" archiveBaseName.set(\"athleticli\")","lastModifiedDate":"2023-10-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":" archiveClassifier.set(\"\")","lastModifiedDate":"2023-09-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":"checkstyle {","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":" toolVersion \u003d \u002710.2\u0027","lastModifiedDate":"2022-04-29"},{"lineNumber":42,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":"run{","lastModifiedDate":"2020-05-25"},{"lineNumber":45,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":46,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"skylee03":2,"-":44}},{"path":"docs/AboutUs.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"# About us","lastModifiedDate":"2020-05-24"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-24"},{"lineNumber":3,"author":{"gitId":"yicheng-toh"},"content":"| Display | Name | Github Profile | Portfolio |","lastModifiedDate":"2023-10-09"},{"lineNumber":4,"author":{"gitId":"yicheng-toh"},"content":"|-----------------------------------------------------------|:-----------------:|:----------------------------------------:|:-----------------------------------------:|","lastModifiedDate":"2023-10-09"},{"lineNumber":5,"author":{"gitId":"yicheng-toh"},"content":"| ![](https://via.placeholder.com/100.png?text\u003dPhoto) | Alexander Wolters | [Github](https://github.com/AlWo223) | [Portfolio](docs/team/johndoe.md) |","lastModifiedDate":"2023-10-09"},{"lineNumber":6,"author":{"gitId":"yicheng-toh"},"content":"| ![](https://via.placeholder.com/100.png?text\u003dPhoto) | Nihal | [Github](https://github.com/nihalzp) | [Portfolio](docs/team/nihalzp.md) |","lastModifiedDate":"2023-10-09"},{"lineNumber":7,"author":{"gitId":"yicheng-toh"},"content":"| ![](https://github.com/DaDevChia) | Dylan Chia | [Github](https://github.com/DaDevChia) | [Portfolio](https://github.com/DaDevChia) |","lastModifiedDate":"2023-10-09"},{"lineNumber":8,"author":{"gitId":"yicheng-toh"},"content":"| ![](https://via.placeholder.com/100.png?text\u003dPhoto) | Yi Cheng | [Github](https://github.com/yicheng-toh) | [Portfolio](docs/team/yicheng.md) |","lastModifiedDate":"2023-10-09"},{"lineNumber":9,"author":{"gitId":"yicheng-toh"},"content":"| ![](https://avatars.githubusercontent.com/u/24489025?v\u003d4) | Yang Ming-Tian | [Github](https://github.com/skylee03) | [Portfolio](docs/team/skylee03.md) |","lastModifiedDate":"2023-10-09"},{"lineNumber":10,"author":{"gitId":"yicheng-toh"},"content":"","lastModifiedDate":"2023-10-05"}],"authorContributionMap":{"yicheng-toh":8,"-":2}},{"path":"docs/team/skylee03.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"skylee03"},"content":"# Yang Ming-Tian - Project Portfolio Page","lastModifiedDate":"2023-10-05"},{"lineNumber":2,"author":{"gitId":"skylee03"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":3,"author":{"gitId":"skylee03"},"content":"## Overview","lastModifiedDate":"2023-10-05"},{"lineNumber":4,"author":{"gitId":"skylee03"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":5,"author":{"gitId":"skylee03"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":6,"author":{"gitId":"skylee03"},"content":"### Summary of Contributions","lastModifiedDate":"2023-10-05"}],"authorContributionMap":{"skylee03":6}},{"path":"docs/team/yicheng.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"yicheng-toh"},"content":"# John Doe - Project Portfolio Page","lastModifiedDate":"2023-10-05"},{"lineNumber":2,"author":{"gitId":"yicheng-toh"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":3,"author":{"gitId":"yicheng-toh"},"content":"## Overview","lastModifiedDate":"2023-10-05"},{"lineNumber":4,"author":{"gitId":"yicheng-toh"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":5,"author":{"gitId":"yicheng-toh"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":6,"author":{"gitId":"yicheng-toh"},"content":"### Summary of Contributions","lastModifiedDate":"2023-10-05"}],"authorContributionMap":{"yicheng-toh":6}},{"path":"src/main/java/athleticli/AthletiCLI.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"skylee03"},"content":"package athleticli;","lastModifiedDate":"2023-10-08"},{"lineNumber":2,"author":{"gitId":"skylee03"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":3,"author":{"gitId":"skylee03"},"content":"import athleticli.commands.Command;","lastModifiedDate":"2023-10-08"},{"lineNumber":4,"author":{"gitId":"skylee03"},"content":"import athleticli.data.Data;","lastModifiedDate":"2023-10-08"},{"lineNumber":5,"author":{"gitId":"skylee03"},"content":"import athleticli.exceptions.AthletiException;","lastModifiedDate":"2023-10-08"},{"lineNumber":6,"author":{"gitId":"skylee03"},"content":"import athleticli.ui.Parser;","lastModifiedDate":"2023-10-08"},{"lineNumber":7,"author":{"gitId":"skylee03"},"content":"import athleticli.ui.Ui;","lastModifiedDate":"2023-10-08"},{"lineNumber":8,"author":{"gitId":"skylee03"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":9,"author":{"gitId":"skylee03"},"content":"/**","lastModifiedDate":"2023-10-08"},{"lineNumber":10,"author":{"gitId":"skylee03"},"content":" * Defines the basic structure and the behavior of AthletiCLI.","lastModifiedDate":"2023-10-08"},{"lineNumber":11,"author":{"gitId":"skylee03"},"content":" */","lastModifiedDate":"2023-10-08"},{"lineNumber":12,"author":{"gitId":"skylee03"},"content":"public class AthletiCLI {","lastModifiedDate":"2023-10-08"},{"lineNumber":13,"author":{"gitId":"skylee03"},"content":" private Ui ui;","lastModifiedDate":"2023-10-08"},{"lineNumber":14,"author":{"gitId":"skylee03"},"content":" private Data data;","lastModifiedDate":"2023-10-08"},{"lineNumber":15,"author":{"gitId":"skylee03"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":16,"author":{"gitId":"skylee03"},"content":" /**","lastModifiedDate":"2023-10-08"},{"lineNumber":17,"author":{"gitId":"skylee03"},"content":" * Constructs an \u003ccode\u003eAthletiCLI\u003c/code\u003e object.","lastModifiedDate":"2023-10-08"},{"lineNumber":18,"author":{"gitId":"skylee03"},"content":" */","lastModifiedDate":"2023-10-08"},{"lineNumber":19,"author":{"gitId":"skylee03"},"content":" public AthletiCLI() {","lastModifiedDate":"2023-10-08"},{"lineNumber":20,"author":{"gitId":"skylee03"},"content":" ui \u003d new Ui();","lastModifiedDate":"2023-10-08"},{"lineNumber":21,"author":{"gitId":"skylee03"},"content":" data \u003d new Data();","lastModifiedDate":"2023-10-08"},{"lineNumber":22,"author":{"gitId":"skylee03"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":23,"author":{"gitId":"skylee03"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":24,"author":{"gitId":"skylee03"},"content":" /**","lastModifiedDate":"2023-10-08"},{"lineNumber":25,"author":{"gitId":"skylee03"},"content":" * Creates an `AthletiCLI` object and runs it.","lastModifiedDate":"2023-10-08"},{"lineNumber":26,"author":{"gitId":"skylee03"},"content":" *","lastModifiedDate":"2023-10-08"},{"lineNumber":27,"author":{"gitId":"skylee03"},"content":" * @param args Arguments obtained from the command line.","lastModifiedDate":"2023-10-08"},{"lineNumber":28,"author":{"gitId":"skylee03"},"content":" */","lastModifiedDate":"2023-10-08"},{"lineNumber":29,"author":{"gitId":"skylee03"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-10-08"},{"lineNumber":30,"author":{"gitId":"skylee03"},"content":" new AthletiCLI().run();","lastModifiedDate":"2023-10-08"},{"lineNumber":31,"author":{"gitId":"skylee03"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":32,"author":{"gitId":"skylee03"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":33,"author":{"gitId":"skylee03"},"content":" /**","lastModifiedDate":"2023-10-08"},{"lineNumber":34,"author":{"gitId":"skylee03"},"content":" * Displays the welcome interface, continuously reads user input","lastModifiedDate":"2023-10-08"},{"lineNumber":35,"author":{"gitId":"skylee03"},"content":" * and executes corresponding instructions until exiting.","lastModifiedDate":"2023-10-08"},{"lineNumber":36,"author":{"gitId":"skylee03"},"content":" */","lastModifiedDate":"2023-10-08"},{"lineNumber":37,"author":{"gitId":"skylee03"},"content":" public void run() {","lastModifiedDate":"2023-10-08"},{"lineNumber":38,"author":{"gitId":"skylee03"},"content":" ui.showWelcome();","lastModifiedDate":"2023-10-08"},{"lineNumber":39,"author":{"gitId":"skylee03"},"content":" boolean isExit \u003d false;","lastModifiedDate":"2023-10-08"},{"lineNumber":40,"author":{"gitId":"skylee03"},"content":" while (!isExit) {","lastModifiedDate":"2023-10-08"},{"lineNumber":41,"author":{"gitId":"skylee03"},"content":" final String rawUserInput \u003d ui.getUserCommand();","lastModifiedDate":"2023-10-08"},{"lineNumber":42,"author":{"gitId":"skylee03"},"content":" try {","lastModifiedDate":"2023-10-08"},{"lineNumber":43,"author":{"gitId":"skylee03"},"content":" final Command command \u003d Parser.parseCommand(rawUserInput);","lastModifiedDate":"2023-10-08"},{"lineNumber":44,"author":{"gitId":"skylee03"},"content":" final String[] feedback \u003d command.execute(data);","lastModifiedDate":"2023-10-08"},{"lineNumber":45,"author":{"gitId":"skylee03"},"content":" ui.showMessages(feedback);","lastModifiedDate":"2023-10-08"},{"lineNumber":46,"author":{"gitId":"skylee03"},"content":" isExit \u003d command.isExit();","lastModifiedDate":"2023-10-08"},{"lineNumber":47,"author":{"gitId":"skylee03"},"content":" } catch (AthletiException e) {","lastModifiedDate":"2023-10-08"},{"lineNumber":48,"author":{"gitId":"skylee03"},"content":" ui.showException(e);","lastModifiedDate":"2023-10-08"},{"lineNumber":49,"author":{"gitId":"skylee03"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":50,"author":{"gitId":"skylee03"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":51,"author":{"gitId":"skylee03"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":52,"author":{"gitId":"skylee03"},"content":"}","lastModifiedDate":"2023-10-08"}],"authorContributionMap":{"skylee03":52}},{"path":"src/main/java/athleticli/commands/ByeCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"skylee03"},"content":"package athleticli.commands;","lastModifiedDate":"2023-10-08"},{"lineNumber":2,"author":{"gitId":"skylee03"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":3,"author":{"gitId":"skylee03"},"content":"import athleticli.data.Data;","lastModifiedDate":"2023-10-08"},{"lineNumber":4,"author":{"gitId":"skylee03"},"content":"import athleticli.ui.Message;","lastModifiedDate":"2023-10-08"},{"lineNumber":5,"author":{"gitId":"skylee03"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":6,"author":{"gitId":"skylee03"},"content":"public class ByeCommand extends Command {","lastModifiedDate":"2023-10-08"},{"lineNumber":7,"author":{"gitId":"skylee03"},"content":" /**","lastModifiedDate":"2023-10-08"},{"lineNumber":8,"author":{"gitId":"skylee03"},"content":" * Returns \u003ccode\u003etrue\u003c/code\u003e if this is a \u003ccode\u003eByeCommand\u003c/code\u003e object, otherwise returns \u003ccode\u003efalse\u003c/code\u003e.","lastModifiedDate":"2023-10-08"},{"lineNumber":9,"author":{"gitId":"skylee03"},"content":" *","lastModifiedDate":"2023-10-08"},{"lineNumber":10,"author":{"gitId":"skylee03"},"content":" * @return \u003ccode\u003etrue\u003c/code\u003e if this is a \u003ccode\u003eByeCommand\u003c/code\u003e object, otherwise returns \u003ccode\u003efalse\u003c/code\u003e.","lastModifiedDate":"2023-10-08"},{"lineNumber":11,"author":{"gitId":"skylee03"},"content":" */","lastModifiedDate":"2023-10-08"},{"lineNumber":12,"author":{"gitId":"skylee03"},"content":" @Override","lastModifiedDate":"2023-10-08"},{"lineNumber":13,"author":{"gitId":"skylee03"},"content":" public boolean isExit() {","lastModifiedDate":"2023-10-08"},{"lineNumber":14,"author":{"gitId":"skylee03"},"content":" return true;","lastModifiedDate":"2023-10-08"},{"lineNumber":15,"author":{"gitId":"skylee03"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":16,"author":{"gitId":"skylee03"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":17,"author":{"gitId":"skylee03"},"content":" /**","lastModifiedDate":"2023-10-08"},{"lineNumber":18,"author":{"gitId":"skylee03"},"content":" * Returns the bye message to be shown to the user.","lastModifiedDate":"2023-10-08"},{"lineNumber":19,"author":{"gitId":"skylee03"},"content":" *","lastModifiedDate":"2023-10-08"},{"lineNumber":20,"author":{"gitId":"skylee03"},"content":" * @return The messages to be shown to the user.","lastModifiedDate":"2023-10-08"},{"lineNumber":21,"author":{"gitId":"skylee03"},"content":" */","lastModifiedDate":"2023-10-08"},{"lineNumber":22,"author":{"gitId":"skylee03"},"content":" public String[] execute(Data data) {","lastModifiedDate":"2023-10-08"},{"lineNumber":23,"author":{"gitId":"skylee03"},"content":" return new String[] {Message.MESSAGE_BYE};","lastModifiedDate":"2023-10-08"},{"lineNumber":24,"author":{"gitId":"skylee03"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":25,"author":{"gitId":"skylee03"},"content":"}","lastModifiedDate":"2023-10-08"}],"authorContributionMap":{"skylee03":25}},{"path":"src/main/java/athleticli/commands/Command.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"skylee03"},"content":"package athleticli.commands;","lastModifiedDate":"2023-10-08"},{"lineNumber":2,"author":{"gitId":"skylee03"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":3,"author":{"gitId":"skylee03"},"content":"import athleticli.data.Data;","lastModifiedDate":"2023-10-08"},{"lineNumber":4,"author":{"gitId":"skylee03"},"content":"import athleticli.exceptions.AthletiException;","lastModifiedDate":"2023-10-08"},{"lineNumber":5,"author":{"gitId":"skylee03"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":6,"author":{"gitId":"skylee03"},"content":"/**","lastModifiedDate":"2023-10-08"},{"lineNumber":7,"author":{"gitId":"skylee03"},"content":" * Defines the basic methods of a command.","lastModifiedDate":"2023-10-08"},{"lineNumber":8,"author":{"gitId":"skylee03"},"content":" */","lastModifiedDate":"2023-10-08"},{"lineNumber":9,"author":{"gitId":"skylee03"},"content":"public abstract class Command {","lastModifiedDate":"2023-10-08"},{"lineNumber":10,"author":{"gitId":"skylee03"},"content":" /**","lastModifiedDate":"2023-10-08"},{"lineNumber":11,"author":{"gitId":"skylee03"},"content":" * Executes the command and returns the messages to be shown to the user.","lastModifiedDate":"2023-10-08"},{"lineNumber":12,"author":{"gitId":"skylee03"},"content":" *","lastModifiedDate":"2023-10-08"},{"lineNumber":13,"author":{"gitId":"skylee03"},"content":" * @param data The current data.","lastModifiedDate":"2023-10-08"},{"lineNumber":14,"author":{"gitId":"skylee03"},"content":" * @return The messages to be shown to the user.","lastModifiedDate":"2023-10-08"},{"lineNumber":15,"author":{"gitId":"skylee03"},"content":" * @throws AthletiException","lastModifiedDate":"2023-10-08"},{"lineNumber":16,"author":{"gitId":"skylee03"},"content":" */","lastModifiedDate":"2023-10-08"},{"lineNumber":17,"author":{"gitId":"skylee03"},"content":" public abstract String[] execute(Data data) throws AthletiException;","lastModifiedDate":"2023-10-08"},{"lineNumber":18,"author":{"gitId":"skylee03"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":19,"author":{"gitId":"skylee03"},"content":" /**","lastModifiedDate":"2023-10-08"},{"lineNumber":20,"author":{"gitId":"skylee03"},"content":" * Returns \u003ccode\u003etrue\u003c/code\u003e if this is a \u003ccode\u003eByeCommand\u003c/code\u003e object, otherwise returns \u003ccode\u003efalse\u003c/code\u003e.","lastModifiedDate":"2023-10-08"},{"lineNumber":21,"author":{"gitId":"skylee03"},"content":" *","lastModifiedDate":"2023-10-08"},{"lineNumber":22,"author":{"gitId":"skylee03"},"content":" * @return \u003ccode\u003etrue\u003c/code\u003e if this is a \u003ccode\u003eByeCommand\u003c/code\u003e object, otherwise returns \u003ccode\u003efalse\u003c/code\u003e.","lastModifiedDate":"2023-10-08"},{"lineNumber":23,"author":{"gitId":"skylee03"},"content":" */","lastModifiedDate":"2023-10-08"},{"lineNumber":24,"author":{"gitId":"skylee03"},"content":" public boolean isExit() {","lastModifiedDate":"2023-10-08"},{"lineNumber":25,"author":{"gitId":"skylee03"},"content":" return false;","lastModifiedDate":"2023-10-08"},{"lineNumber":26,"author":{"gitId":"skylee03"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":27,"author":{"gitId":"skylee03"},"content":"}","lastModifiedDate":"2023-10-08"}],"authorContributionMap":{"skylee03":27}},{"path":"src/main/java/athleticli/commands/activity/AddActivityCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"skylee03"},"content":"package athleticli.commands.activity;","lastModifiedDate":"2023-10-08"},{"lineNumber":2,"author":{"gitId":"skylee03"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":3,"author":{"gitId":"skylee03"},"content":"public class AddActivityCommand {","lastModifiedDate":"2023-10-08"},{"lineNumber":4,"author":{"gitId":"skylee03"},"content":"}","lastModifiedDate":"2023-10-08"}],"authorContributionMap":{"skylee03":4}},{"path":"src/main/java/athleticli/commands/activity/DeleteActivityCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"skylee03"},"content":"package athleticli.commands.activity;","lastModifiedDate":"2023-10-08"},{"lineNumber":2,"author":{"gitId":"skylee03"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":3,"author":{"gitId":"skylee03"},"content":"public class DeleteActivityCommand {","lastModifiedDate":"2023-10-08"},{"lineNumber":4,"author":{"gitId":"skylee03"},"content":"}","lastModifiedDate":"2023-10-08"}],"authorContributionMap":{"skylee03":4}},{"path":"src/main/java/athleticli/commands/activity/EditActivityCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"skylee03"},"content":"package athleticli.commands.activity;","lastModifiedDate":"2023-10-08"},{"lineNumber":2,"author":{"gitId":"skylee03"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":3,"author":{"gitId":"skylee03"},"content":"public class EditActivityCommand {","lastModifiedDate":"2023-10-08"},{"lineNumber":4,"author":{"gitId":"skylee03"},"content":"}","lastModifiedDate":"2023-10-08"}],"authorContributionMap":{"skylee03":4}},{"path":"src/main/java/athleticli/commands/activity/ListActivityCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"skylee03"},"content":"package athleticli.commands.activity;","lastModifiedDate":"2023-10-08"},{"lineNumber":2,"author":{"gitId":"skylee03"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":3,"author":{"gitId":"skylee03"},"content":"public class ListActivityCommand {","lastModifiedDate":"2023-10-08"},{"lineNumber":4,"author":{"gitId":"skylee03"},"content":"}","lastModifiedDate":"2023-10-08"}],"authorContributionMap":{"skylee03":4}},{"path":"src/main/java/athleticli/commands/diet/AddMealCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"skylee03"},"content":"package athleticli.commands.diet;","lastModifiedDate":"2023-10-08"},{"lineNumber":2,"author":{"gitId":"skylee03"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":3,"author":{"gitId":"skylee03"},"content":"public class AddMealCommand {","lastModifiedDate":"2023-10-08"},{"lineNumber":4,"author":{"gitId":"skylee03"},"content":"}","lastModifiedDate":"2023-10-08"}],"authorContributionMap":{"skylee03":4}},{"path":"src/main/java/athleticli/commands/diet/DeleteMealCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"skylee03"},"content":"package athleticli.commands.diet;","lastModifiedDate":"2023-10-08"},{"lineNumber":2,"author":{"gitId":"skylee03"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":3,"author":{"gitId":"skylee03"},"content":"public class DeleteMealCommand {","lastModifiedDate":"2023-10-08"},{"lineNumber":4,"author":{"gitId":"skylee03"},"content":"}","lastModifiedDate":"2023-10-08"}],"authorContributionMap":{"skylee03":4}},{"path":"src/main/java/athleticli/commands/diet/EditDietGoalCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"skylee03"},"content":"package athleticli.commands.diet;","lastModifiedDate":"2023-10-08"},{"lineNumber":2,"author":{"gitId":"skylee03"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":3,"author":{"gitId":"skylee03"},"content":"public class EditDietGoalCommand {","lastModifiedDate":"2023-10-08"},{"lineNumber":4,"author":{"gitId":"skylee03"},"content":"}","lastModifiedDate":"2023-10-08"}],"authorContributionMap":{"skylee03":4}},{"path":"src/main/java/athleticli/commands/diet/ListMealCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"skylee03"},"content":"package athleticli.commands.diet;","lastModifiedDate":"2023-10-08"},{"lineNumber":2,"author":{"gitId":"skylee03"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":3,"author":{"gitId":"skylee03"},"content":"public class ListMealCommand {","lastModifiedDate":"2023-10-08"},{"lineNumber":4,"author":{"gitId":"skylee03"},"content":"}","lastModifiedDate":"2023-10-08"}],"authorContributionMap":{"skylee03":4}},{"path":"src/main/java/athleticli/commands/diet/SetDietGoalCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"skylee03"},"content":"package athleticli.commands.diet;","lastModifiedDate":"2023-10-08"},{"lineNumber":2,"author":{"gitId":"skylee03"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":3,"author":{"gitId":"skylee03"},"content":"public class SetDietGoalCommand {","lastModifiedDate":"2023-10-08"},{"lineNumber":4,"author":{"gitId":"skylee03"},"content":"}","lastModifiedDate":"2023-10-08"}],"authorContributionMap":{"skylee03":4}},{"path":"src/main/java/athleticli/commands/sleep/AddSleepCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"skylee03"},"content":"package athleticli.commands.sleep;","lastModifiedDate":"2023-10-08"},{"lineNumber":2,"author":{"gitId":"skylee03"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":3,"author":{"gitId":"skylee03"},"content":"public class AddSleepCommand {","lastModifiedDate":"2023-10-08"},{"lineNumber":4,"author":{"gitId":"skylee03"},"content":"}","lastModifiedDate":"2023-10-08"}],"authorContributionMap":{"skylee03":4}},{"path":"src/main/java/athleticli/commands/sleep/DeleteSleepCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"skylee03"},"content":"package athleticli.commands.sleep;","lastModifiedDate":"2023-10-08"},{"lineNumber":2,"author":{"gitId":"skylee03"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":3,"author":{"gitId":"skylee03"},"content":"public class DeleteSleepCommand {","lastModifiedDate":"2023-10-08"},{"lineNumber":4,"author":{"gitId":"skylee03"},"content":"}","lastModifiedDate":"2023-10-08"}],"authorContributionMap":{"skylee03":4}},{"path":"src/main/java/athleticli/commands/sleep/EditSleepCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"skylee03"},"content":"package athleticli.commands.sleep;","lastModifiedDate":"2023-10-08"},{"lineNumber":2,"author":{"gitId":"skylee03"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":3,"author":{"gitId":"skylee03"},"content":"public class EditSleepCommand {","lastModifiedDate":"2023-10-08"},{"lineNumber":4,"author":{"gitId":"skylee03"},"content":"}","lastModifiedDate":"2023-10-08"}],"authorContributionMap":{"skylee03":4}},{"path":"src/main/java/athleticli/commands/sleep/ListSleepCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"skylee03"},"content":"package athleticli.commands.sleep;","lastModifiedDate":"2023-10-08"},{"lineNumber":2,"author":{"gitId":"skylee03"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":3,"author":{"gitId":"skylee03"},"content":"public class ListSleepCommand {","lastModifiedDate":"2023-10-08"},{"lineNumber":4,"author":{"gitId":"skylee03"},"content":"}","lastModifiedDate":"2023-10-08"}],"authorContributionMap":{"skylee03":4}},{"path":"src/main/java/athleticli/commands/sleep/ListSleepGoalCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"skylee03"},"content":"package athleticli.commands.sleep;","lastModifiedDate":"2023-10-08"},{"lineNumber":2,"author":{"gitId":"skylee03"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":3,"author":{"gitId":"skylee03"},"content":"public class ListSleepGoalCommand {","lastModifiedDate":"2023-10-08"},{"lineNumber":4,"author":{"gitId":"skylee03"},"content":"}","lastModifiedDate":"2023-10-08"}],"authorContributionMap":{"skylee03":4}},{"path":"src/main/java/athleticli/commands/sleep/SetSleepGoalCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"skylee03"},"content":"package athleticli.commands.sleep;","lastModifiedDate":"2023-10-08"},{"lineNumber":2,"author":{"gitId":"skylee03"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":3,"author":{"gitId":"skylee03"},"content":"public class SetSleepGoalCommand {","lastModifiedDate":"2023-10-08"},{"lineNumber":4,"author":{"gitId":"skylee03"},"content":"}","lastModifiedDate":"2023-10-08"}],"authorContributionMap":{"skylee03":4}},{"path":"src/main/java/athleticli/data/Data.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"skylee03"},"content":"package athleticli.data;","lastModifiedDate":"2023-10-08"},{"lineNumber":2,"author":{"gitId":"skylee03"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":3,"author":{"gitId":"skylee03"},"content":"import athleticli.data.activity.ActivityGoalList;","lastModifiedDate":"2023-10-08"},{"lineNumber":4,"author":{"gitId":"skylee03"},"content":"import athleticli.data.activity.ActivityList;","lastModifiedDate":"2023-10-08"},{"lineNumber":5,"author":{"gitId":"skylee03"},"content":"import athleticli.data.diet.DietGoalList;","lastModifiedDate":"2023-10-08"},{"lineNumber":6,"author":{"gitId":"skylee03"},"content":"import athleticli.data.diet.MealList;","lastModifiedDate":"2023-10-08"},{"lineNumber":7,"author":{"gitId":"skylee03"},"content":"import athleticli.data.sleep.SleepGoalList;","lastModifiedDate":"2023-10-08"},{"lineNumber":8,"author":{"gitId":"skylee03"},"content":"import athleticli.data.sleep.SleepList;","lastModifiedDate":"2023-10-08"},{"lineNumber":9,"author":{"gitId":"skylee03"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":10,"author":{"gitId":"skylee03"},"content":"/**","lastModifiedDate":"2023-10-08"},{"lineNumber":11,"author":{"gitId":"skylee03"},"content":" * Defines the basic fields and methods of data.","lastModifiedDate":"2023-10-08"},{"lineNumber":12,"author":{"gitId":"skylee03"},"content":" */","lastModifiedDate":"2023-10-08"},{"lineNumber":13,"author":{"gitId":"skylee03"},"content":"public class Data {","lastModifiedDate":"2023-10-08"},{"lineNumber":14,"author":{"gitId":"skylee03"},"content":" private ActivityList activities;","lastModifiedDate":"2023-10-08"},{"lineNumber":15,"author":{"gitId":"skylee03"},"content":" private ActivityGoalList activityGoals;","lastModifiedDate":"2023-10-08"},{"lineNumber":16,"author":{"gitId":"skylee03"},"content":" private MealList meals;","lastModifiedDate":"2023-10-08"},{"lineNumber":17,"author":{"gitId":"skylee03"},"content":" private DietGoalList dietGoals;","lastModifiedDate":"2023-10-08"},{"lineNumber":18,"author":{"gitId":"skylee03"},"content":" private SleepList sleeps;","lastModifiedDate":"2023-10-08"},{"lineNumber":19,"author":{"gitId":"skylee03"},"content":" private SleepGoalList sleepGoals;","lastModifiedDate":"2023-10-08"},{"lineNumber":20,"author":{"gitId":"skylee03"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":21,"author":{"gitId":"skylee03"},"content":" /**","lastModifiedDate":"2023-10-08"},{"lineNumber":22,"author":{"gitId":"skylee03"},"content":" * Constructs an empty \u003ccode\u003eData\u003c/code\u003e object.","lastModifiedDate":"2023-10-08"},{"lineNumber":23,"author":{"gitId":"skylee03"},"content":" */","lastModifiedDate":"2023-10-08"},{"lineNumber":24,"author":{"gitId":"skylee03"},"content":" public Data() {","lastModifiedDate":"2023-10-08"},{"lineNumber":25,"author":{"gitId":"skylee03"},"content":" this.activities \u003d new ActivityList();","lastModifiedDate":"2023-10-08"},{"lineNumber":26,"author":{"gitId":"skylee03"},"content":" this.activityGoals \u003d new ActivityGoalList();","lastModifiedDate":"2023-10-08"},{"lineNumber":27,"author":{"gitId":"skylee03"},"content":" this.meals \u003d new MealList();","lastModifiedDate":"2023-10-08"},{"lineNumber":28,"author":{"gitId":"skylee03"},"content":" this.dietGoals \u003d new DietGoalList();","lastModifiedDate":"2023-10-08"},{"lineNumber":29,"author":{"gitId":"skylee03"},"content":" this.sleeps \u003d new SleepList();","lastModifiedDate":"2023-10-08"},{"lineNumber":30,"author":{"gitId":"skylee03"},"content":" this.sleepGoals \u003d new SleepGoalList();","lastModifiedDate":"2023-10-08"},{"lineNumber":31,"author":{"gitId":"skylee03"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":32,"author":{"gitId":"skylee03"},"content":"}","lastModifiedDate":"2023-10-08"}],"authorContributionMap":{"skylee03":32}},{"path":"src/main/java/athleticli/data/activity/Activity.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"skylee03"},"content":"package athleticli.data.activity;","lastModifiedDate":"2023-10-08"},{"lineNumber":2,"author":{"gitId":"skylee03"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":3,"author":{"gitId":"skylee03"},"content":"public class Activity {","lastModifiedDate":"2023-10-08"},{"lineNumber":4,"author":{"gitId":"skylee03"},"content":"}","lastModifiedDate":"2023-10-08"}],"authorContributionMap":{"skylee03":4}},{"path":"src/main/java/athleticli/data/activity/ActivityGoal.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"skylee03"},"content":"package athleticli.data.activity;","lastModifiedDate":"2023-10-08"},{"lineNumber":2,"author":{"gitId":"skylee03"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":3,"author":{"gitId":"skylee03"},"content":"public class ActivityGoal {","lastModifiedDate":"2023-10-08"},{"lineNumber":4,"author":{"gitId":"skylee03"},"content":"}","lastModifiedDate":"2023-10-08"}],"authorContributionMap":{"skylee03":4}},{"path":"src/main/java/athleticli/data/activity/ActivityGoalList.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"skylee03"},"content":"package athleticli.data.activity;","lastModifiedDate":"2023-10-08"},{"lineNumber":2,"author":{"gitId":"skylee03"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":3,"author":{"gitId":"skylee03"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-10-08"},{"lineNumber":4,"author":{"gitId":"skylee03"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":5,"author":{"gitId":"skylee03"},"content":"public class ActivityGoalList extends ArrayList\u003cActivityGoal\u003e {","lastModifiedDate":"2023-10-08"},{"lineNumber":6,"author":{"gitId":"skylee03"},"content":"}","lastModifiedDate":"2023-10-08"}],"authorContributionMap":{"skylee03":6}},{"path":"src/main/java/athleticli/data/activity/ActivityList.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"skylee03"},"content":"package athleticli.data.activity;","lastModifiedDate":"2023-10-08"},{"lineNumber":2,"author":{"gitId":"skylee03"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":3,"author":{"gitId":"skylee03"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-10-08"},{"lineNumber":4,"author":{"gitId":"skylee03"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":5,"author":{"gitId":"skylee03"},"content":"public class ActivityList extends ArrayList\u003cActivity\u003e {","lastModifiedDate":"2023-10-08"},{"lineNumber":6,"author":{"gitId":"skylee03"},"content":"}","lastModifiedDate":"2023-10-08"}],"authorContributionMap":{"skylee03":6}},{"path":"src/main/java/athleticli/data/diet/DietGoal.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"skylee03"},"content":"package athleticli.data.diet;","lastModifiedDate":"2023-10-08"},{"lineNumber":2,"author":{"gitId":"skylee03"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":3,"author":{"gitId":"skylee03"},"content":"public class DietGoal {","lastModifiedDate":"2023-10-08"},{"lineNumber":4,"author":{"gitId":"skylee03"},"content":"}","lastModifiedDate":"2023-10-08"}],"authorContributionMap":{"skylee03":4}},{"path":"src/main/java/athleticli/data/diet/DietGoalList.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"skylee03"},"content":"package athleticli.data.diet;","lastModifiedDate":"2023-10-08"},{"lineNumber":2,"author":{"gitId":"skylee03"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":3,"author":{"gitId":"skylee03"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-10-08"},{"lineNumber":4,"author":{"gitId":"skylee03"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":5,"author":{"gitId":"skylee03"},"content":"public class DietGoalList extends ArrayList\u003cDietGoal\u003e {","lastModifiedDate":"2023-10-08"},{"lineNumber":6,"author":{"gitId":"skylee03"},"content":"}","lastModifiedDate":"2023-10-08"}],"authorContributionMap":{"skylee03":6}},{"path":"src/main/java/athleticli/data/diet/Meal.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"skylee03"},"content":"package athleticli.data.diet;","lastModifiedDate":"2023-10-08"},{"lineNumber":2,"author":{"gitId":"skylee03"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":3,"author":{"gitId":"skylee03"},"content":"public class Meal {","lastModifiedDate":"2023-10-08"},{"lineNumber":4,"author":{"gitId":"skylee03"},"content":"}","lastModifiedDate":"2023-10-08"}],"authorContributionMap":{"skylee03":4}},{"path":"src/main/java/athleticli/data/diet/MealList.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"skylee03"},"content":"package athleticli.data.diet;","lastModifiedDate":"2023-10-08"},{"lineNumber":2,"author":{"gitId":"skylee03"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":3,"author":{"gitId":"skylee03"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-10-08"},{"lineNumber":4,"author":{"gitId":"skylee03"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":5,"author":{"gitId":"skylee03"},"content":"public class MealList extends ArrayList\u003cMeal\u003e {","lastModifiedDate":"2023-10-08"},{"lineNumber":6,"author":{"gitId":"skylee03"},"content":"}","lastModifiedDate":"2023-10-08"}],"authorContributionMap":{"skylee03":6}},{"path":"src/main/java/athleticli/data/sleep/Sleep.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"skylee03"},"content":"package athleticli.data.sleep;","lastModifiedDate":"2023-10-08"},{"lineNumber":2,"author":{"gitId":"skylee03"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":3,"author":{"gitId":"skylee03"},"content":"public class Sleep {","lastModifiedDate":"2023-10-08"},{"lineNumber":4,"author":{"gitId":"skylee03"},"content":"}","lastModifiedDate":"2023-10-08"}],"authorContributionMap":{"skylee03":4}},{"path":"src/main/java/athleticli/data/sleep/SleepGoal.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"skylee03"},"content":"package athleticli.data.sleep;","lastModifiedDate":"2023-10-08"},{"lineNumber":2,"author":{"gitId":"skylee03"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":3,"author":{"gitId":"skylee03"},"content":"public class SleepGoal {","lastModifiedDate":"2023-10-08"},{"lineNumber":4,"author":{"gitId":"skylee03"},"content":"}","lastModifiedDate":"2023-10-08"}],"authorContributionMap":{"skylee03":4}},{"path":"src/main/java/athleticli/data/sleep/SleepGoalList.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"skylee03"},"content":"package athleticli.data.sleep;","lastModifiedDate":"2023-10-08"},{"lineNumber":2,"author":{"gitId":"skylee03"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":3,"author":{"gitId":"skylee03"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-10-08"},{"lineNumber":4,"author":{"gitId":"skylee03"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":5,"author":{"gitId":"skylee03"},"content":"public class SleepGoalList extends ArrayList\u003cSleepGoal\u003e {","lastModifiedDate":"2023-10-08"},{"lineNumber":6,"author":{"gitId":"skylee03"},"content":"}","lastModifiedDate":"2023-10-08"}],"authorContributionMap":{"skylee03":6}},{"path":"src/main/java/athleticli/data/sleep/SleepList.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"skylee03"},"content":"package athleticli.data.sleep;","lastModifiedDate":"2023-10-08"},{"lineNumber":2,"author":{"gitId":"skylee03"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":3,"author":{"gitId":"skylee03"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-10-08"},{"lineNumber":4,"author":{"gitId":"skylee03"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":5,"author":{"gitId":"skylee03"},"content":"public class SleepList extends ArrayList\u003cSleep\u003e {","lastModifiedDate":"2023-10-08"},{"lineNumber":6,"author":{"gitId":"skylee03"},"content":"}","lastModifiedDate":"2023-10-08"}],"authorContributionMap":{"skylee03":6}},{"path":"src/main/java/athleticli/exceptions/AthletiException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"skylee03"},"content":"package athleticli.exceptions;","lastModifiedDate":"2023-10-08"},{"lineNumber":2,"author":{"gitId":"skylee03"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":3,"author":{"gitId":"skylee03"},"content":"/**","lastModifiedDate":"2023-10-08"},{"lineNumber":4,"author":{"gitId":"skylee03"},"content":" * Represents the exceptions that need to be shown to the user.","lastModifiedDate":"2023-10-08"},{"lineNumber":5,"author":{"gitId":"skylee03"},"content":" */","lastModifiedDate":"2023-10-08"},{"lineNumber":6,"author":{"gitId":"skylee03"},"content":"public class AthletiException extends Exception {","lastModifiedDate":"2023-10-08"},{"lineNumber":7,"author":{"gitId":"skylee03"},"content":" public AthletiException(String message) {","lastModifiedDate":"2023-10-08"},{"lineNumber":8,"author":{"gitId":"skylee03"},"content":" super(message);","lastModifiedDate":"2023-10-08"},{"lineNumber":9,"author":{"gitId":"skylee03"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":10,"author":{"gitId":"skylee03"},"content":"}","lastModifiedDate":"2023-10-08"}],"authorContributionMap":{"skylee03":10}},{"path":"src/main/java/athleticli/exceptions/UnknownCommandException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"skylee03"},"content":"package athleticli.exceptions;","lastModifiedDate":"2023-10-08"},{"lineNumber":2,"author":{"gitId":"skylee03"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":3,"author":{"gitId":"skylee03"},"content":"public class UnknownCommandException extends AthletiException {","lastModifiedDate":"2023-10-08"},{"lineNumber":4,"author":{"gitId":"skylee03"},"content":" public UnknownCommandException() {","lastModifiedDate":"2023-10-08"},{"lineNumber":5,"author":{"gitId":"skylee03"},"content":" super(\"I\u0027m sorry, but I don\u0027t know what that means :-(\");","lastModifiedDate":"2023-10-08"},{"lineNumber":6,"author":{"gitId":"skylee03"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":7,"author":{"gitId":"skylee03"},"content":"}","lastModifiedDate":"2023-10-08"}],"authorContributionMap":{"skylee03":7}},{"path":"src/main/java/athleticli/ui/CommandName.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"skylee03"},"content":"package athleticli.ui;","lastModifiedDate":"2023-10-08"},{"lineNumber":2,"author":{"gitId":"skylee03"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":3,"author":{"gitId":"skylee03"},"content":"/**","lastModifiedDate":"2023-10-08"},{"lineNumber":4,"author":{"gitId":"skylee03"},"content":" * Defines string literals for command names.","lastModifiedDate":"2023-10-08"},{"lineNumber":5,"author":{"gitId":"skylee03"},"content":" */","lastModifiedDate":"2023-10-08"},{"lineNumber":6,"author":{"gitId":"skylee03"},"content":"public class CommandName {","lastModifiedDate":"2023-10-08"},{"lineNumber":7,"author":{"gitId":"skylee03"},"content":" public static final String COMMAND_BYE \u003d \"bye\";","lastModifiedDate":"2023-10-08"},{"lineNumber":8,"author":{"gitId":"skylee03"},"content":"}","lastModifiedDate":"2023-10-08"}],"authorContributionMap":{"skylee03":8}},{"path":"src/main/java/athleticli/ui/Message.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"skylee03"},"content":"package athleticli.ui;","lastModifiedDate":"2023-10-08"},{"lineNumber":2,"author":{"gitId":"skylee03"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":3,"author":{"gitId":"skylee03"},"content":"public class Message {","lastModifiedDate":"2023-10-08"},{"lineNumber":4,"author":{"gitId":"skylee03"},"content":" public static final String PROMPT \u003d \"\u003e \";","lastModifiedDate":"2023-10-08"},{"lineNumber":5,"author":{"gitId":"skylee03"},"content":" public static final String LINE \u003d \"____________________________________________________________\\n\";","lastModifiedDate":"2023-10-08"},{"lineNumber":6,"author":{"gitId":"skylee03"},"content":" public static final String PREFIX_MESSAGE \u003d \" \";","lastModifiedDate":"2023-10-08"},{"lineNumber":7,"author":{"gitId":"skylee03"},"content":" public static final String PREFIX_EXCEPTION \u003d \"OOPS!!! \";","lastModifiedDate":"2023-10-08"},{"lineNumber":8,"author":{"gitId":"skylee03"},"content":" public static final String MESSAGE_BYE \u003d \"Bye. Hope to see you again soon!\";","lastModifiedDate":"2023-10-08"},{"lineNumber":9,"author":{"gitId":"skylee03"},"content":" public static final String[] MESSAGE_HELLO \u003d {\"Hello! I\u0027m AthletiCLI!\", \"What can I do for you?\"};","lastModifiedDate":"2023-10-08"},{"lineNumber":10,"author":{"gitId":"skylee03"},"content":"}","lastModifiedDate":"2023-10-08"}],"authorContributionMap":{"skylee03":10}},{"path":"src/main/java/athleticli/ui/Parser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"skylee03"},"content":"package athleticli.ui;","lastModifiedDate":"2023-10-08"},{"lineNumber":2,"author":{"gitId":"skylee03"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":3,"author":{"gitId":"skylee03"},"content":"import athleticli.commands.ByeCommand;","lastModifiedDate":"2023-10-08"},{"lineNumber":4,"author":{"gitId":"skylee03"},"content":"import athleticli.commands.Command;","lastModifiedDate":"2023-10-08"},{"lineNumber":5,"author":{"gitId":"skylee03"},"content":"import athleticli.exceptions.AthletiException;","lastModifiedDate":"2023-10-08"},{"lineNumber":6,"author":{"gitId":"skylee03"},"content":"import athleticli.exceptions.UnknownCommandException;","lastModifiedDate":"2023-10-08"},{"lineNumber":7,"author":{"gitId":"skylee03"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":8,"author":{"gitId":"skylee03"},"content":"/**","lastModifiedDate":"2023-10-08"},{"lineNumber":9,"author":{"gitId":"skylee03"},"content":" * Defines the basic methods for command parser.","lastModifiedDate":"2023-10-08"},{"lineNumber":10,"author":{"gitId":"skylee03"},"content":" */","lastModifiedDate":"2023-10-08"},{"lineNumber":11,"author":{"gitId":"skylee03"},"content":"public class Parser {","lastModifiedDate":"2023-10-08"},{"lineNumber":12,"author":{"gitId":"skylee03"},"content":" /**","lastModifiedDate":"2023-10-08"},{"lineNumber":13,"author":{"gitId":"skylee03"},"content":" * Splits the raw user input into two parts, and then returns them.","lastModifiedDate":"2023-10-08"},{"lineNumber":14,"author":{"gitId":"skylee03"},"content":" * The first part is the command type, while the second part is the command arguments.","lastModifiedDate":"2023-10-08"},{"lineNumber":15,"author":{"gitId":"skylee03"},"content":" * The second part can be empty.","lastModifiedDate":"2023-10-08"},{"lineNumber":16,"author":{"gitId":"skylee03"},"content":" *","lastModifiedDate":"2023-10-08"},{"lineNumber":17,"author":{"gitId":"skylee03"},"content":" * @param rawUserInput The raw user input.","lastModifiedDate":"2023-10-08"},{"lineNumber":18,"author":{"gitId":"skylee03"},"content":" * @return A string array whose first element is the command type","lastModifiedDate":"2023-10-08"},{"lineNumber":19,"author":{"gitId":"skylee03"},"content":" * and the second element is the command arguments.","lastModifiedDate":"2023-10-08"},{"lineNumber":20,"author":{"gitId":"skylee03"},"content":" */","lastModifiedDate":"2023-10-08"},{"lineNumber":21,"author":{"gitId":"skylee03"},"content":" public static String[] splitCommandWordAndArgs(String rawUserInput) {","lastModifiedDate":"2023-10-08"},{"lineNumber":22,"author":{"gitId":"skylee03"},"content":" final String[] split \u003d rawUserInput.trim().split(\"\\\\s+\", 2);","lastModifiedDate":"2023-10-08"},{"lineNumber":23,"author":{"gitId":"skylee03"},"content":" return split.length \u003d\u003d 2 ? split : new String[] { split[0] , \"\" };","lastModifiedDate":"2023-10-08"},{"lineNumber":24,"author":{"gitId":"skylee03"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":25,"author":{"gitId":"skylee03"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":26,"author":{"gitId":"skylee03"},"content":" /**","lastModifiedDate":"2023-10-08"},{"lineNumber":27,"author":{"gitId":"skylee03"},"content":" * Parses the raw user input and returns the corresponding command object.","lastModifiedDate":"2023-10-08"},{"lineNumber":28,"author":{"gitId":"skylee03"},"content":" *","lastModifiedDate":"2023-10-08"},{"lineNumber":29,"author":{"gitId":"skylee03"},"content":" * @param rawUserInput The raw user input.","lastModifiedDate":"2023-10-08"},{"lineNumber":30,"author":{"gitId":"skylee03"},"content":" * @return An object representing the command.","lastModifiedDate":"2023-10-08"},{"lineNumber":31,"author":{"gitId":"skylee03"},"content":" * @throws AthletiException","lastModifiedDate":"2023-10-08"},{"lineNumber":32,"author":{"gitId":"skylee03"},"content":" */","lastModifiedDate":"2023-10-08"},{"lineNumber":33,"author":{"gitId":"skylee03"},"content":" public static Command parseCommand(String rawUserInput) throws AthletiException {","lastModifiedDate":"2023-10-08"},{"lineNumber":34,"author":{"gitId":"skylee03"},"content":" final String[] commandTypeAndParams \u003d splitCommandWordAndArgs(rawUserInput);","lastModifiedDate":"2023-10-08"},{"lineNumber":35,"author":{"gitId":"skylee03"},"content":" final String commandType \u003d commandTypeAndParams[0];","lastModifiedDate":"2023-10-08"},{"lineNumber":36,"author":{"gitId":"skylee03"},"content":" final String commandArgs \u003d commandTypeAndParams[1];","lastModifiedDate":"2023-10-08"},{"lineNumber":37,"author":{"gitId":"skylee03"},"content":" try {","lastModifiedDate":"2023-10-08"},{"lineNumber":38,"author":{"gitId":"skylee03"},"content":" switch (commandType) {","lastModifiedDate":"2023-10-08"},{"lineNumber":39,"author":{"gitId":"skylee03"},"content":" case CommandName.COMMAND_BYE:","lastModifiedDate":"2023-10-08"},{"lineNumber":40,"author":{"gitId":"skylee03"},"content":" return new ByeCommand();","lastModifiedDate":"2023-10-08"},{"lineNumber":41,"author":{"gitId":"skylee03"},"content":" default:","lastModifiedDate":"2023-10-08"},{"lineNumber":42,"author":{"gitId":"skylee03"},"content":" throw new UnknownCommandException();","lastModifiedDate":"2023-10-08"},{"lineNumber":43,"author":{"gitId":"skylee03"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":44,"author":{"gitId":"skylee03"},"content":" } catch (AthletiException e) {","lastModifiedDate":"2023-10-08"},{"lineNumber":45,"author":{"gitId":"skylee03"},"content":" throw e;","lastModifiedDate":"2023-10-08"},{"lineNumber":46,"author":{"gitId":"skylee03"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":47,"author":{"gitId":"skylee03"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":48,"author":{"gitId":"skylee03"},"content":"}","lastModifiedDate":"2023-10-08"}],"authorContributionMap":{"skylee03":48}},{"path":"src/main/java/athleticli/ui/Ui.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"skylee03"},"content":"package athleticli.ui;","lastModifiedDate":"2023-10-08"},{"lineNumber":2,"author":{"gitId":"skylee03"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":3,"author":{"gitId":"skylee03"},"content":"import java.io.InputStream;","lastModifiedDate":"2023-10-08"},{"lineNumber":4,"author":{"gitId":"skylee03"},"content":"import java.io.PrintStream;","lastModifiedDate":"2023-10-08"},{"lineNumber":5,"author":{"gitId":"skylee03"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-10-08"},{"lineNumber":6,"author":{"gitId":"skylee03"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":7,"author":{"gitId":"skylee03"},"content":"/**","lastModifiedDate":"2023-10-08"},{"lineNumber":8,"author":{"gitId":"skylee03"},"content":" * Defines the behavior of the CLI.","lastModifiedDate":"2023-10-08"},{"lineNumber":9,"author":{"gitId":"skylee03"},"content":" */","lastModifiedDate":"2023-10-08"},{"lineNumber":10,"author":{"gitId":"skylee03"},"content":"public class Ui {","lastModifiedDate":"2023-10-08"},{"lineNumber":11,"author":{"gitId":"skylee03"},"content":" private final Scanner in;","lastModifiedDate":"2023-10-08"},{"lineNumber":12,"author":{"gitId":"skylee03"},"content":" private final PrintStream out;","lastModifiedDate":"2023-10-08"},{"lineNumber":13,"author":{"gitId":"skylee03"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":14,"author":{"gitId":"skylee03"},"content":" /**","lastModifiedDate":"2023-10-08"},{"lineNumber":15,"author":{"gitId":"skylee03"},"content":" * Constructs a \u003ccode\u003eUi\u003c/code\u003e object, whose input \u003ccode\u003ein\u003c/code\u003e","lastModifiedDate":"2023-10-08"},{"lineNumber":16,"author":{"gitId":"skylee03"},"content":" * and output \u003ccode\u003eout\u003c/code\u003e is the standard input and the standard","lastModifiedDate":"2023-10-08"},{"lineNumber":17,"author":{"gitId":"skylee03"},"content":" * output, respectively.","lastModifiedDate":"2023-10-08"},{"lineNumber":18,"author":{"gitId":"skylee03"},"content":" */","lastModifiedDate":"2023-10-08"},{"lineNumber":19,"author":{"gitId":"skylee03"},"content":" public Ui() {","lastModifiedDate":"2023-10-08"},{"lineNumber":20,"author":{"gitId":"skylee03"},"content":" this(System.in, System.out);","lastModifiedDate":"2023-10-08"},{"lineNumber":21,"author":{"gitId":"skylee03"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":22,"author":{"gitId":"skylee03"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":23,"author":{"gitId":"skylee03"},"content":" /**","lastModifiedDate":"2023-10-08"},{"lineNumber":24,"author":{"gitId":"skylee03"},"content":" * Constructs a \u003ccode\u003eUi\u003c/code\u003e object, whose input is an \u003ccode\u003eInputStream\u003c/code\u003e","lastModifiedDate":"2023-10-08"},{"lineNumber":25,"author":{"gitId":"skylee03"},"content":" * object \u003ccode\u003ein\u003c/code\u003e and output is an \u003ccode\u003ePrintStream\u003c/code\u003e object \u003ccode\u003eout\u003c/code\u003e.","lastModifiedDate":"2023-10-08"},{"lineNumber":26,"author":{"gitId":"skylee03"},"content":" *","lastModifiedDate":"2023-10-08"},{"lineNumber":27,"author":{"gitId":"skylee03"},"content":" * @param in The \u003ccode\u003eInputStream\u003c/code\u003e accepting the user\u0027s input.","lastModifiedDate":"2023-10-08"},{"lineNumber":28,"author":{"gitId":"skylee03"},"content":" * @param out The \u003ccode\u003ePrintStream\u003c/code\u003e displaying the program\u0027s output.","lastModifiedDate":"2023-10-08"},{"lineNumber":29,"author":{"gitId":"skylee03"},"content":" */","lastModifiedDate":"2023-10-08"},{"lineNumber":30,"author":{"gitId":"skylee03"},"content":" public Ui(InputStream in, PrintStream out) {","lastModifiedDate":"2023-10-08"},{"lineNumber":31,"author":{"gitId":"skylee03"},"content":" this.in \u003d new Scanner(in);","lastModifiedDate":"2023-10-08"},{"lineNumber":32,"author":{"gitId":"skylee03"},"content":" this.out \u003d out;","lastModifiedDate":"2023-10-08"},{"lineNumber":33,"author":{"gitId":"skylee03"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":34,"author":{"gitId":"skylee03"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":35,"author":{"gitId":"skylee03"},"content":" /**","lastModifiedDate":"2023-10-08"},{"lineNumber":36,"author":{"gitId":"skylee03"},"content":" * Returns the user\u0027s input.","lastModifiedDate":"2023-10-08"},{"lineNumber":37,"author":{"gitId":"skylee03"},"content":" *","lastModifiedDate":"2023-10-08"},{"lineNumber":38,"author":{"gitId":"skylee03"},"content":" * @return The user\u0027s input.","lastModifiedDate":"2023-10-08"},{"lineNumber":39,"author":{"gitId":"skylee03"},"content":" */","lastModifiedDate":"2023-10-08"},{"lineNumber":40,"author":{"gitId":"skylee03"},"content":" public String getUserCommand() {","lastModifiedDate":"2023-10-08"},{"lineNumber":41,"author":{"gitId":"skylee03"},"content":" out.print(Message.PROMPT);","lastModifiedDate":"2023-10-08"},{"lineNumber":42,"author":{"gitId":"skylee03"},"content":" return in.nextLine();","lastModifiedDate":"2023-10-08"},{"lineNumber":43,"author":{"gitId":"skylee03"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":44,"author":{"gitId":"skylee03"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":45,"author":{"gitId":"skylee03"},"content":" /**","lastModifiedDate":"2023-10-08"},{"lineNumber":46,"author":{"gitId":"skylee03"},"content":" * Shows the \u003ccode\u003emessages\u003c/code\u003e in a beautiful format.","lastModifiedDate":"2023-10-08"},{"lineNumber":47,"author":{"gitId":"skylee03"},"content":" *","lastModifiedDate":"2023-10-08"},{"lineNumber":48,"author":{"gitId":"skylee03"},"content":" * @param messages The messages to be shown.","lastModifiedDate":"2023-10-08"},{"lineNumber":49,"author":{"gitId":"skylee03"},"content":" */","lastModifiedDate":"2023-10-08"},{"lineNumber":50,"author":{"gitId":"skylee03"},"content":" public void showMessages(String... messages) {","lastModifiedDate":"2023-10-08"},{"lineNumber":51,"author":{"gitId":"skylee03"},"content":" out.print(Message.LINE);","lastModifiedDate":"2023-10-08"},{"lineNumber":52,"author":{"gitId":"skylee03"},"content":" for (String message : messages) {","lastModifiedDate":"2023-10-08"},{"lineNumber":53,"author":{"gitId":"skylee03"},"content":" out.println(Message.PREFIX_MESSAGE + message);","lastModifiedDate":"2023-10-08"},{"lineNumber":54,"author":{"gitId":"skylee03"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":55,"author":{"gitId":"skylee03"},"content":" out.println(Message.LINE);","lastModifiedDate":"2023-10-08"},{"lineNumber":56,"author":{"gitId":"skylee03"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":57,"author":{"gitId":"skylee03"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":58,"author":{"gitId":"skylee03"},"content":" /**","lastModifiedDate":"2023-10-08"},{"lineNumber":59,"author":{"gitId":"skylee03"},"content":" * Shows message for exception \u003ccode\u003ee\u003c/code\u003e.","lastModifiedDate":"2023-10-08"},{"lineNumber":60,"author":{"gitId":"skylee03"},"content":" *","lastModifiedDate":"2023-10-08"},{"lineNumber":61,"author":{"gitId":"skylee03"},"content":" * @param e The exception whose message will be shown.","lastModifiedDate":"2023-10-08"},{"lineNumber":62,"author":{"gitId":"skylee03"},"content":" */","lastModifiedDate":"2023-10-08"},{"lineNumber":63,"author":{"gitId":"skylee03"},"content":" public void showException(Exception e) {","lastModifiedDate":"2023-10-08"},{"lineNumber":64,"author":{"gitId":"skylee03"},"content":" showMessages(Message.PREFIX_EXCEPTION + e.getMessage());","lastModifiedDate":"2023-10-08"},{"lineNumber":65,"author":{"gitId":"skylee03"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":66,"author":{"gitId":"skylee03"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":67,"author":{"gitId":"skylee03"},"content":" /**","lastModifiedDate":"2023-10-08"},{"lineNumber":68,"author":{"gitId":"skylee03"},"content":" * Shows the welcome message.","lastModifiedDate":"2023-10-08"},{"lineNumber":69,"author":{"gitId":"skylee03"},"content":" */","lastModifiedDate":"2023-10-08"},{"lineNumber":70,"author":{"gitId":"skylee03"},"content":" public void showWelcome() {","lastModifiedDate":"2023-10-08"},{"lineNumber":71,"author":{"gitId":"skylee03"},"content":" showMessages(Message.MESSAGE_HELLO);","lastModifiedDate":"2023-10-08"},{"lineNumber":72,"author":{"gitId":"skylee03"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":73,"author":{"gitId":"skylee03"},"content":"}","lastModifiedDate":"2023-10-08"}],"authorContributionMap":{"skylee03":73}},{"path":"src/test/java/athleticli/ui/ParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"skylee03"},"content":"package athleticli.ui;","lastModifiedDate":"2023-10-08"},{"lineNumber":2,"author":{"gitId":"skylee03"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":3,"author":{"gitId":"skylee03"},"content":"import static athleticli.ui.Parser.parseCommand;","lastModifiedDate":"2023-10-08"},{"lineNumber":4,"author":{"gitId":"skylee03"},"content":"import static athleticli.ui.Parser.splitCommandWordAndArgs;","lastModifiedDate":"2023-10-08"},{"lineNumber":5,"author":{"gitId":"skylee03"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-08"},{"lineNumber":6,"author":{"gitId":"skylee03"},"content":"import static org.junit.jupiter.api.Assertions.assertInstanceOf;","lastModifiedDate":"2023-10-08"},{"lineNumber":7,"author":{"gitId":"skylee03"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2023-10-08"},{"lineNumber":8,"author":{"gitId":"skylee03"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":9,"author":{"gitId":"skylee03"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-08"},{"lineNumber":10,"author":{"gitId":"skylee03"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":11,"author":{"gitId":"skylee03"},"content":"import athleticli.commands.ByeCommand;","lastModifiedDate":"2023-10-08"},{"lineNumber":12,"author":{"gitId":"skylee03"},"content":"import athleticli.exceptions.AthletiException;","lastModifiedDate":"2023-10-08"},{"lineNumber":13,"author":{"gitId":"skylee03"},"content":"import athleticli.exceptions.UnknownCommandException;","lastModifiedDate":"2023-10-08"},{"lineNumber":14,"author":{"gitId":"skylee03"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":15,"author":{"gitId":"skylee03"},"content":"class ParserTest {","lastModifiedDate":"2023-10-08"},{"lineNumber":16,"author":{"gitId":"skylee03"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":17,"author":{"gitId":"skylee03"},"content":" @Test","lastModifiedDate":"2023-10-08"},{"lineNumber":18,"author":{"gitId":"skylee03"},"content":" void splitCommandWordAndArgs_noArgs_expectTwoParts() {","lastModifiedDate":"2023-10-08"},{"lineNumber":19,"author":{"gitId":"skylee03"},"content":" final String commandWithNoArgs \u003d \"bye\";","lastModifiedDate":"2023-10-08"},{"lineNumber":20,"author":{"gitId":"skylee03"},"content":" assertEquals(splitCommandWordAndArgs(commandWithNoArgs).length, 2);","lastModifiedDate":"2023-10-08"},{"lineNumber":21,"author":{"gitId":"skylee03"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":22,"author":{"gitId":"skylee03"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":23,"author":{"gitId":"skylee03"},"content":" @Test","lastModifiedDate":"2023-10-08"},{"lineNumber":24,"author":{"gitId":"skylee03"},"content":" void splitCommandWordAndArgs_multipleArgs_expectTwoParts() {","lastModifiedDate":"2023-10-08"},{"lineNumber":25,"author":{"gitId":"skylee03"},"content":" final String commandWithMultipleArgs \u003d \"set-diet-goal calories/1 carb/3\";","lastModifiedDate":"2023-10-08"},{"lineNumber":26,"author":{"gitId":"skylee03"},"content":" assertEquals(splitCommandWordAndArgs(commandWithMultipleArgs).length, 2);","lastModifiedDate":"2023-10-08"},{"lineNumber":27,"author":{"gitId":"skylee03"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":28,"author":{"gitId":"skylee03"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":29,"author":{"gitId":"skylee03"},"content":" @Test","lastModifiedDate":"2023-10-08"},{"lineNumber":30,"author":{"gitId":"skylee03"},"content":" void parseCommand_unknownCommand_expectUnknownCommandException() {","lastModifiedDate":"2023-10-08"},{"lineNumber":31,"author":{"gitId":"skylee03"},"content":" final String unknownCommand \u003d \"hello\";","lastModifiedDate":"2023-10-08"},{"lineNumber":32,"author":{"gitId":"skylee03"},"content":" assertThrows(UnknownCommandException.class, () -\u003e parseCommand(unknownCommand));","lastModifiedDate":"2023-10-08"},{"lineNumber":33,"author":{"gitId":"skylee03"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":34,"author":{"gitId":"skylee03"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":35,"author":{"gitId":"skylee03"},"content":" @Test","lastModifiedDate":"2023-10-08"},{"lineNumber":36,"author":{"gitId":"skylee03"},"content":" void parseCommand_byeCommand_expectByeCommand() throws AthletiException {","lastModifiedDate":"2023-10-08"},{"lineNumber":37,"author":{"gitId":"skylee03"},"content":" final String byeCommand \u003d \"bye\";","lastModifiedDate":"2023-10-08"},{"lineNumber":38,"author":{"gitId":"skylee03"},"content":" assertInstanceOf(ByeCommand.class, parseCommand(byeCommand));","lastModifiedDate":"2023-10-08"},{"lineNumber":39,"author":{"gitId":"skylee03"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":40,"author":{"gitId":"skylee03"},"content":"}","lastModifiedDate":"2023-10-08"}],"authorContributionMap":{"skylee03":40}}] +[{"path":"README.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"AlWo223"},"content":"# AthletiCLI project template","lastModifiedDate":"2023-10-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"This is a project template for a greenfield Java project. It\u0027s named after the Java mascot _Duke_. Given below are instructions on how to use it.","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"## Setting up in Intellij","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"Prerequisites: JDK 11 (use the exact version), update Intellij to the most recent version.","lastModifiedDate":"2020-05-24"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":"1. **Ensure Intellij JDK 11 is defined as an SDK**, as described [here](https://www.jetbrains.com/help/idea/sdk.html#set-up-jdk) -- this step is not needed if you have used JDK 11 in a previous Intellij project.","lastModifiedDate":"2020-05-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":"1. **Import the project _as a Gradle project_**, as described [here](https://se-education.org/guides/tutorials/intellijImportGradleProject.html).","lastModifiedDate":"2020-05-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":"1. **Verify the set up**: After the importing is complete, locate the `src/main/java/seedu/duke/Duke.java` file, right-click it, and choose `Run Duke.main()`. If the setup is correct, you should see something like the below:","lastModifiedDate":"2020-05-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":" \u003e Task :compileJava","lastModifiedDate":"2020-05-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":" \u003e Task :processResources NO-SOURCE","lastModifiedDate":"2020-05-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003e Task :classes","lastModifiedDate":"2020-05-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":" ","lastModifiedDate":"2020-05-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003e Task :Duke.main()","lastModifiedDate":"2020-05-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":" Hello from","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" ____ _ ","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" | _ \\ _ _| | _____ ","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" | | | | | | | |/ / _ \\","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" | |_| | |_| | \u003c __/","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" |____/ \\__,_|_|\\_\\___|","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" ","lastModifiedDate":"2020-05-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":" What is your name?","lastModifiedDate":"2020-05-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" Type some word and press enter to let the execution proceed to the end.","lastModifiedDate":"2020-05-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":"## Build automation using Gradle","lastModifiedDate":"2020-05-24"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-24"},{"lineNumber":31,"author":{"gitId":"-"},"content":"* This project uses Gradle for build automation and dependency management. It includes a basic build script as well (i.e. the `build.gradle` file).","lastModifiedDate":"2020-05-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":"* If you are new to Gradle, refer to the [Gradle Tutorial at se-education.org/guides](https://se-education.org/guides/tutorials/gradle.html).","lastModifiedDate":"2020-05-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":"## Testing","lastModifiedDate":"2020-05-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":"### I/O redirection tests","lastModifiedDate":"2020-05-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":"* To run _I/O redirection_ tests (aka _Text UI tests_), navigate to the `text-ui-test` and run the `runtest(.bat/.sh)` script.","lastModifiedDate":"2020-05-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":"### JUnit tests","lastModifiedDate":"2020-05-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":"* A skeleton JUnit test (`src/test/java/seedu/duke/DukeTest.java`) is provided with this project template. ","lastModifiedDate":"2020-05-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":"* If you are new to JUnit, refer to the [JUnit Tutorial at se-education.org/guides](https://se-education.org/guides/tutorials/junit.html).","lastModifiedDate":"2020-05-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-24"},{"lineNumber":45,"author":{"gitId":"-"},"content":"## Checkstyle","lastModifiedDate":"2020-05-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":"* A sample CheckStyle rule configuration is provided in this project.","lastModifiedDate":"2020-05-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":"* If you are new to Checkstyle, refer to the [Checkstyle Tutorial at se-education.org/guides](https://se-education.org/guides/tutorials/checkstyle.html).","lastModifiedDate":"2020-05-24"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-24"},{"lineNumber":50,"author":{"gitId":"-"},"content":"## CI using GitHub Actions","lastModifiedDate":"2020-05-24"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-24"},{"lineNumber":52,"author":{"gitId":"-"},"content":"The project uses [GitHub actions](https://github.com/features/actions) for CI. When you push a commit to this repo or PR against it, GitHub actions will run automatically to build and verify the code as updated by the commit/PR.","lastModifiedDate":"2020-05-24"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-24"},{"lineNumber":54,"author":{"gitId":"-"},"content":"## Documentation","lastModifiedDate":"2020-05-24"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-24"},{"lineNumber":56,"author":{"gitId":"-"},"content":"`/docs` folder contains a skeleton version of the project documentation.","lastModifiedDate":"2020-05-24"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-24"},{"lineNumber":58,"author":{"gitId":"-"},"content":"Steps for publishing documentation to the public: ","lastModifiedDate":"2020-05-24"},{"lineNumber":59,"author":{"gitId":"-"},"content":"1. If you are using this project template for an individual project, go your fork on GitHub.\u003cbr\u003e","lastModifiedDate":"2020-05-24"},{"lineNumber":60,"author":{"gitId":"-"},"content":" If you are using this project template for a team project, go to the team fork on GitHub.","lastModifiedDate":"2020-05-24"},{"lineNumber":61,"author":{"gitId":"-"},"content":"1. Click on the `settings` tab.","lastModifiedDate":"2020-05-24"},{"lineNumber":62,"author":{"gitId":"-"},"content":"1. Scroll down to the `GitHub Pages` section.","lastModifiedDate":"2020-05-24"},{"lineNumber":63,"author":{"gitId":"-"},"content":"1. Set the `source` as `master branch /docs folder`.","lastModifiedDate":"2020-05-24"},{"lineNumber":64,"author":{"gitId":"-"},"content":"1. Optionally, use the `choose a theme` button to choose a theme for your documentation.","lastModifiedDate":"2020-05-24"}],"authorContributionMap":{"AlWo223":1,"-":63}},{"path":"build.gradle","fileType":"other","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"plugins {","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":" id \u0027java\u0027","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":" id \u0027application\u0027","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":" id \u0027checkstyle\u0027","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":" id \u0027com.github.johnrengelman.shadow\u0027 version \u00277.1.2\u0027","lastModifiedDate":"2022-06-17"},{"lineNumber":6,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"repositories {","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":" mavenCentral()","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":"dependencies {","lastModifiedDate":"2020-05-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":" testImplementation group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-api\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":" testRuntimeOnly group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-engine\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":32,"author":{"gitId":"skylee03"},"content":" mainClass.set(\"athleticli.AthletiCLI\")","lastModifiedDate":"2023-10-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"skylee03"},"content":" archiveBaseName.set(\"athleticli\")","lastModifiedDate":"2023-10-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":" archiveClassifier.set(\"\")","lastModifiedDate":"2023-09-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":"checkstyle {","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":" toolVersion \u003d \u002710.2\u0027","lastModifiedDate":"2022-04-29"},{"lineNumber":42,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":"run{","lastModifiedDate":"2020-05-25"},{"lineNumber":45,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":46,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"skylee03":2,"-":44}},{"path":"docs/AboutUs.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"# About us","lastModifiedDate":"2020-05-24"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-24"},{"lineNumber":3,"author":{"gitId":"yicheng-toh"},"content":"| Display | Name | Github Profile | Portfolio |","lastModifiedDate":"2023-10-09"},{"lineNumber":4,"author":{"gitId":"yicheng-toh"},"content":"|-----------------------------------------------------------|:-----------------:|:----------------------------------------:|:-----------------------------------------:|","lastModifiedDate":"2023-10-09"},{"lineNumber":5,"author":{"gitId":"yicheng-toh"},"content":"| ![](https://via.placeholder.com/100.png?text\u003dPhoto) | Alexander Wolters | [Github](https://github.com/AlWo223) | [Portfolio](docs/team/johndoe.md) |","lastModifiedDate":"2023-10-09"},{"lineNumber":6,"author":{"gitId":"yicheng-toh"},"content":"| ![](https://via.placeholder.com/100.png?text\u003dPhoto) | Nihal | [Github](https://github.com/nihalzp) | [Portfolio](docs/team/nihalzp.md) |","lastModifiedDate":"2023-10-09"},{"lineNumber":7,"author":{"gitId":"yicheng-toh"},"content":"| ![](https://github.com/DaDevChia) | Dylan Chia | [Github](https://github.com/DaDevChia) | [Portfolio](https://github.com/DaDevChia) |","lastModifiedDate":"2023-10-09"},{"lineNumber":8,"author":{"gitId":"yicheng-toh"},"content":"| ![](https://via.placeholder.com/100.png?text\u003dPhoto) | Yi Cheng | [Github](https://github.com/yicheng-toh) | [Portfolio](docs/team/yicheng.md) |","lastModifiedDate":"2023-10-09"},{"lineNumber":9,"author":{"gitId":"yicheng-toh"},"content":"| ![](https://avatars.githubusercontent.com/u/24489025?v\u003d4) | Yang Ming-Tian | [Github](https://github.com/skylee03) | [Portfolio](docs/team/skylee03.md) |","lastModifiedDate":"2023-10-09"},{"lineNumber":10,"author":{"gitId":"yicheng-toh"},"content":"","lastModifiedDate":"2023-10-05"}],"authorContributionMap":{"yicheng-toh":8,"-":2}},{"path":"docs/team/skylee03.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"skylee03"},"content":"# Yang Ming-Tian - Project Portfolio Page","lastModifiedDate":"2023-10-05"},{"lineNumber":2,"author":{"gitId":"skylee03"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":3,"author":{"gitId":"skylee03"},"content":"## Overview","lastModifiedDate":"2023-10-05"},{"lineNumber":4,"author":{"gitId":"skylee03"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":5,"author":{"gitId":"skylee03"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":6,"author":{"gitId":"skylee03"},"content":"### Summary of Contributions","lastModifiedDate":"2023-10-05"}],"authorContributionMap":{"skylee03":6}},{"path":"docs/team/yicheng.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"yicheng-toh"},"content":"# John Doe - Project Portfolio Page","lastModifiedDate":"2023-10-05"},{"lineNumber":2,"author":{"gitId":"yicheng-toh"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":3,"author":{"gitId":"yicheng-toh"},"content":"## Overview","lastModifiedDate":"2023-10-05"},{"lineNumber":4,"author":{"gitId":"yicheng-toh"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":5,"author":{"gitId":"yicheng-toh"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":6,"author":{"gitId":"yicheng-toh"},"content":"### Summary of Contributions","lastModifiedDate":"2023-10-05"}],"authorContributionMap":{"yicheng-toh":6}},{"path":"src/main/java/athleticli/AthletiCLI.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"skylee03"},"content":"package athleticli;","lastModifiedDate":"2023-10-08"},{"lineNumber":2,"author":{"gitId":"skylee03"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":3,"author":{"gitId":"skylee03"},"content":"import athleticli.commands.Command;","lastModifiedDate":"2023-10-08"},{"lineNumber":4,"author":{"gitId":"skylee03"},"content":"import athleticli.data.Data;","lastModifiedDate":"2023-10-08"},{"lineNumber":5,"author":{"gitId":"skylee03"},"content":"import athleticli.exceptions.AthletiException;","lastModifiedDate":"2023-10-08"},{"lineNumber":6,"author":{"gitId":"skylee03"},"content":"import athleticli.ui.Parser;","lastModifiedDate":"2023-10-08"},{"lineNumber":7,"author":{"gitId":"skylee03"},"content":"import athleticli.ui.Ui;","lastModifiedDate":"2023-10-08"},{"lineNumber":8,"author":{"gitId":"skylee03"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":9,"author":{"gitId":"skylee03"},"content":"/**","lastModifiedDate":"2023-10-08"},{"lineNumber":10,"author":{"gitId":"skylee03"},"content":" * Defines the basic structure and the behavior of AthletiCLI.","lastModifiedDate":"2023-10-08"},{"lineNumber":11,"author":{"gitId":"skylee03"},"content":" */","lastModifiedDate":"2023-10-08"},{"lineNumber":12,"author":{"gitId":"skylee03"},"content":"public class AthletiCLI {","lastModifiedDate":"2023-10-08"},{"lineNumber":13,"author":{"gitId":"skylee03"},"content":" private Ui ui;","lastModifiedDate":"2023-10-08"},{"lineNumber":14,"author":{"gitId":"skylee03"},"content":" private Data data;","lastModifiedDate":"2023-10-08"},{"lineNumber":15,"author":{"gitId":"skylee03"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":16,"author":{"gitId":"skylee03"},"content":" /**","lastModifiedDate":"2023-10-08"},{"lineNumber":17,"author":{"gitId":"skylee03"},"content":" * Constructs an \u003ccode\u003eAthletiCLI\u003c/code\u003e object.","lastModifiedDate":"2023-10-08"},{"lineNumber":18,"author":{"gitId":"skylee03"},"content":" */","lastModifiedDate":"2023-10-08"},{"lineNumber":19,"author":{"gitId":"skylee03"},"content":" public AthletiCLI() {","lastModifiedDate":"2023-10-08"},{"lineNumber":20,"author":{"gitId":"skylee03"},"content":" ui \u003d new Ui();","lastModifiedDate":"2023-10-08"},{"lineNumber":21,"author":{"gitId":"skylee03"},"content":" data \u003d new Data();","lastModifiedDate":"2023-10-08"},{"lineNumber":22,"author":{"gitId":"skylee03"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":23,"author":{"gitId":"skylee03"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":24,"author":{"gitId":"skylee03"},"content":" /**","lastModifiedDate":"2023-10-08"},{"lineNumber":25,"author":{"gitId":"skylee03"},"content":" * Creates an `AthletiCLI` object and runs it.","lastModifiedDate":"2023-10-08"},{"lineNumber":26,"author":{"gitId":"skylee03"},"content":" *","lastModifiedDate":"2023-10-08"},{"lineNumber":27,"author":{"gitId":"skylee03"},"content":" * @param args Arguments obtained from the command line.","lastModifiedDate":"2023-10-08"},{"lineNumber":28,"author":{"gitId":"skylee03"},"content":" */","lastModifiedDate":"2023-10-08"},{"lineNumber":29,"author":{"gitId":"skylee03"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-10-08"},{"lineNumber":30,"author":{"gitId":"skylee03"},"content":" new AthletiCLI().run();","lastModifiedDate":"2023-10-08"},{"lineNumber":31,"author":{"gitId":"skylee03"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":32,"author":{"gitId":"skylee03"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":33,"author":{"gitId":"skylee03"},"content":" /**","lastModifiedDate":"2023-10-08"},{"lineNumber":34,"author":{"gitId":"skylee03"},"content":" * Displays the welcome interface, continuously reads user input","lastModifiedDate":"2023-10-08"},{"lineNumber":35,"author":{"gitId":"skylee03"},"content":" * and executes corresponding instructions until exiting.","lastModifiedDate":"2023-10-08"},{"lineNumber":36,"author":{"gitId":"skylee03"},"content":" */","lastModifiedDate":"2023-10-08"},{"lineNumber":37,"author":{"gitId":"skylee03"},"content":" public void run() {","lastModifiedDate":"2023-10-08"},{"lineNumber":38,"author":{"gitId":"skylee03"},"content":" ui.showWelcome();","lastModifiedDate":"2023-10-08"},{"lineNumber":39,"author":{"gitId":"skylee03"},"content":" boolean isExit \u003d false;","lastModifiedDate":"2023-10-08"},{"lineNumber":40,"author":{"gitId":"skylee03"},"content":" while (!isExit) {","lastModifiedDate":"2023-10-08"},{"lineNumber":41,"author":{"gitId":"skylee03"},"content":" final String rawUserInput \u003d ui.getUserCommand();","lastModifiedDate":"2023-10-08"},{"lineNumber":42,"author":{"gitId":"skylee03"},"content":" try {","lastModifiedDate":"2023-10-08"},{"lineNumber":43,"author":{"gitId":"skylee03"},"content":" final Command command \u003d Parser.parseCommand(rawUserInput);","lastModifiedDate":"2023-10-08"},{"lineNumber":44,"author":{"gitId":"skylee03"},"content":" final String[] feedback \u003d command.execute(data);","lastModifiedDate":"2023-10-08"},{"lineNumber":45,"author":{"gitId":"skylee03"},"content":" ui.showMessages(feedback);","lastModifiedDate":"2023-10-08"},{"lineNumber":46,"author":{"gitId":"skylee03"},"content":" isExit \u003d command.isExit();","lastModifiedDate":"2023-10-08"},{"lineNumber":47,"author":{"gitId":"skylee03"},"content":" } catch (AthletiException e) {","lastModifiedDate":"2023-10-08"},{"lineNumber":48,"author":{"gitId":"skylee03"},"content":" ui.showException(e);","lastModifiedDate":"2023-10-08"},{"lineNumber":49,"author":{"gitId":"skylee03"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":50,"author":{"gitId":"skylee03"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":51,"author":{"gitId":"skylee03"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":52,"author":{"gitId":"skylee03"},"content":"}","lastModifiedDate":"2023-10-08"}],"authorContributionMap":{"skylee03":52}},{"path":"src/main/java/athleticli/commands/ByeCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"skylee03"},"content":"package athleticli.commands;","lastModifiedDate":"2023-10-08"},{"lineNumber":2,"author":{"gitId":"skylee03"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":3,"author":{"gitId":"skylee03"},"content":"import athleticli.data.Data;","lastModifiedDate":"2023-10-08"},{"lineNumber":4,"author":{"gitId":"skylee03"},"content":"import athleticli.ui.Message;","lastModifiedDate":"2023-10-08"},{"lineNumber":5,"author":{"gitId":"skylee03"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":6,"author":{"gitId":"skylee03"},"content":"public class ByeCommand extends Command {","lastModifiedDate":"2023-10-08"},{"lineNumber":7,"author":{"gitId":"skylee03"},"content":" /**","lastModifiedDate":"2023-10-08"},{"lineNumber":8,"author":{"gitId":"skylee03"},"content":" * Returns \u003ccode\u003etrue\u003c/code\u003e if this is a \u003ccode\u003eByeCommand\u003c/code\u003e object, otherwise returns \u003ccode\u003efalse\u003c/code\u003e.","lastModifiedDate":"2023-10-08"},{"lineNumber":9,"author":{"gitId":"skylee03"},"content":" *","lastModifiedDate":"2023-10-08"},{"lineNumber":10,"author":{"gitId":"skylee03"},"content":" * @return \u003ccode\u003etrue\u003c/code\u003e if this is a \u003ccode\u003eByeCommand\u003c/code\u003e object, otherwise returns \u003ccode\u003efalse\u003c/code\u003e.","lastModifiedDate":"2023-10-08"},{"lineNumber":11,"author":{"gitId":"skylee03"},"content":" */","lastModifiedDate":"2023-10-08"},{"lineNumber":12,"author":{"gitId":"skylee03"},"content":" @Override","lastModifiedDate":"2023-10-08"},{"lineNumber":13,"author":{"gitId":"skylee03"},"content":" public boolean isExit() {","lastModifiedDate":"2023-10-08"},{"lineNumber":14,"author":{"gitId":"skylee03"},"content":" return true;","lastModifiedDate":"2023-10-08"},{"lineNumber":15,"author":{"gitId":"skylee03"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":16,"author":{"gitId":"skylee03"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":17,"author":{"gitId":"skylee03"},"content":" /**","lastModifiedDate":"2023-10-08"},{"lineNumber":18,"author":{"gitId":"skylee03"},"content":" * Returns the bye message to be shown to the user.","lastModifiedDate":"2023-10-08"},{"lineNumber":19,"author":{"gitId":"skylee03"},"content":" *","lastModifiedDate":"2023-10-08"},{"lineNumber":20,"author":{"gitId":"skylee03"},"content":" * @return The messages to be shown to the user.","lastModifiedDate":"2023-10-08"},{"lineNumber":21,"author":{"gitId":"skylee03"},"content":" */","lastModifiedDate":"2023-10-08"},{"lineNumber":22,"author":{"gitId":"skylee03"},"content":" public String[] execute(Data data) {","lastModifiedDate":"2023-10-08"},{"lineNumber":23,"author":{"gitId":"skylee03"},"content":" return new String[] {Message.MESSAGE_BYE};","lastModifiedDate":"2023-10-08"},{"lineNumber":24,"author":{"gitId":"skylee03"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":25,"author":{"gitId":"skylee03"},"content":"}","lastModifiedDate":"2023-10-08"}],"authorContributionMap":{"skylee03":25}},{"path":"src/main/java/athleticli/commands/Command.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"skylee03"},"content":"package athleticli.commands;","lastModifiedDate":"2023-10-08"},{"lineNumber":2,"author":{"gitId":"skylee03"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":3,"author":{"gitId":"skylee03"},"content":"import athleticli.data.Data;","lastModifiedDate":"2023-10-08"},{"lineNumber":4,"author":{"gitId":"skylee03"},"content":"import athleticli.exceptions.AthletiException;","lastModifiedDate":"2023-10-08"},{"lineNumber":5,"author":{"gitId":"skylee03"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":6,"author":{"gitId":"skylee03"},"content":"/**","lastModifiedDate":"2023-10-08"},{"lineNumber":7,"author":{"gitId":"skylee03"},"content":" * Defines the basic methods of a command.","lastModifiedDate":"2023-10-08"},{"lineNumber":8,"author":{"gitId":"skylee03"},"content":" */","lastModifiedDate":"2023-10-08"},{"lineNumber":9,"author":{"gitId":"skylee03"},"content":"public abstract class Command {","lastModifiedDate":"2023-10-08"},{"lineNumber":10,"author":{"gitId":"skylee03"},"content":" /**","lastModifiedDate":"2023-10-08"},{"lineNumber":11,"author":{"gitId":"skylee03"},"content":" * Executes the command and returns the messages to be shown to the user.","lastModifiedDate":"2023-10-08"},{"lineNumber":12,"author":{"gitId":"skylee03"},"content":" *","lastModifiedDate":"2023-10-08"},{"lineNumber":13,"author":{"gitId":"skylee03"},"content":" * @param data The current data.","lastModifiedDate":"2023-10-08"},{"lineNumber":14,"author":{"gitId":"skylee03"},"content":" * @return The messages to be shown to the user.","lastModifiedDate":"2023-10-08"},{"lineNumber":15,"author":{"gitId":"skylee03"},"content":" * @throws AthletiException","lastModifiedDate":"2023-10-08"},{"lineNumber":16,"author":{"gitId":"skylee03"},"content":" */","lastModifiedDate":"2023-10-08"},{"lineNumber":17,"author":{"gitId":"skylee03"},"content":" public abstract String[] execute(Data data) throws AthletiException;","lastModifiedDate":"2023-10-08"},{"lineNumber":18,"author":{"gitId":"skylee03"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":19,"author":{"gitId":"skylee03"},"content":" /**","lastModifiedDate":"2023-10-08"},{"lineNumber":20,"author":{"gitId":"skylee03"},"content":" * Returns \u003ccode\u003etrue\u003c/code\u003e if this is a \u003ccode\u003eByeCommand\u003c/code\u003e object, otherwise returns \u003ccode\u003efalse\u003c/code\u003e.","lastModifiedDate":"2023-10-08"},{"lineNumber":21,"author":{"gitId":"skylee03"},"content":" *","lastModifiedDate":"2023-10-08"},{"lineNumber":22,"author":{"gitId":"skylee03"},"content":" * @return \u003ccode\u003etrue\u003c/code\u003e if this is a \u003ccode\u003eByeCommand\u003c/code\u003e object, otherwise returns \u003ccode\u003efalse\u003c/code\u003e.","lastModifiedDate":"2023-10-08"},{"lineNumber":23,"author":{"gitId":"skylee03"},"content":" */","lastModifiedDate":"2023-10-08"},{"lineNumber":24,"author":{"gitId":"skylee03"},"content":" public boolean isExit() {","lastModifiedDate":"2023-10-08"},{"lineNumber":25,"author":{"gitId":"skylee03"},"content":" return false;","lastModifiedDate":"2023-10-08"},{"lineNumber":26,"author":{"gitId":"skylee03"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":27,"author":{"gitId":"skylee03"},"content":"}","lastModifiedDate":"2023-10-08"}],"authorContributionMap":{"skylee03":27}},{"path":"src/main/java/athleticli/commands/activity/AddActivityCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"skylee03"},"content":"package athleticli.commands.activity;","lastModifiedDate":"2023-10-08"},{"lineNumber":2,"author":{"gitId":"skylee03"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":3,"author":{"gitId":"skylee03"},"content":"public class AddActivityCommand {","lastModifiedDate":"2023-10-08"},{"lineNumber":4,"author":{"gitId":"skylee03"},"content":"}","lastModifiedDate":"2023-10-08"}],"authorContributionMap":{"skylee03":4}},{"path":"src/main/java/athleticli/commands/activity/DeleteActivityCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"skylee03"},"content":"package athleticli.commands.activity;","lastModifiedDate":"2023-10-08"},{"lineNumber":2,"author":{"gitId":"skylee03"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":3,"author":{"gitId":"skylee03"},"content":"public class DeleteActivityCommand {","lastModifiedDate":"2023-10-08"},{"lineNumber":4,"author":{"gitId":"skylee03"},"content":"}","lastModifiedDate":"2023-10-08"}],"authorContributionMap":{"skylee03":4}},{"path":"src/main/java/athleticli/commands/activity/EditActivityCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"skylee03"},"content":"package athleticli.commands.activity;","lastModifiedDate":"2023-10-08"},{"lineNumber":2,"author":{"gitId":"skylee03"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":3,"author":{"gitId":"skylee03"},"content":"public class EditActivityCommand {","lastModifiedDate":"2023-10-08"},{"lineNumber":4,"author":{"gitId":"skylee03"},"content":"}","lastModifiedDate":"2023-10-08"}],"authorContributionMap":{"skylee03":4}},{"path":"src/main/java/athleticli/commands/activity/ListActivityCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"skylee03"},"content":"package athleticli.commands.activity;","lastModifiedDate":"2023-10-08"},{"lineNumber":2,"author":{"gitId":"skylee03"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":3,"author":{"gitId":"skylee03"},"content":"public class ListActivityCommand {","lastModifiedDate":"2023-10-08"},{"lineNumber":4,"author":{"gitId":"skylee03"},"content":"}","lastModifiedDate":"2023-10-08"}],"authorContributionMap":{"skylee03":4}},{"path":"src/main/java/athleticli/commands/diet/AddMealCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"skylee03"},"content":"package athleticli.commands.diet;","lastModifiedDate":"2023-10-08"},{"lineNumber":2,"author":{"gitId":"skylee03"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":3,"author":{"gitId":"skylee03"},"content":"public class AddMealCommand {","lastModifiedDate":"2023-10-08"},{"lineNumber":4,"author":{"gitId":"skylee03"},"content":"}","lastModifiedDate":"2023-10-08"}],"authorContributionMap":{"skylee03":4}},{"path":"src/main/java/athleticli/commands/diet/DeleteMealCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"skylee03"},"content":"package athleticli.commands.diet;","lastModifiedDate":"2023-10-08"},{"lineNumber":2,"author":{"gitId":"skylee03"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":3,"author":{"gitId":"skylee03"},"content":"public class DeleteMealCommand {","lastModifiedDate":"2023-10-08"},{"lineNumber":4,"author":{"gitId":"skylee03"},"content":"}","lastModifiedDate":"2023-10-08"}],"authorContributionMap":{"skylee03":4}},{"path":"src/main/java/athleticli/commands/diet/EditDietGoalCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"skylee03"},"content":"package athleticli.commands.diet;","lastModifiedDate":"2023-10-08"},{"lineNumber":2,"author":{"gitId":"skylee03"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":3,"author":{"gitId":"skylee03"},"content":"public class EditDietGoalCommand {","lastModifiedDate":"2023-10-08"},{"lineNumber":4,"author":{"gitId":"skylee03"},"content":"}","lastModifiedDate":"2023-10-08"}],"authorContributionMap":{"skylee03":4}},{"path":"src/main/java/athleticli/commands/diet/ListMealCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"skylee03"},"content":"package athleticli.commands.diet;","lastModifiedDate":"2023-10-08"},{"lineNumber":2,"author":{"gitId":"skylee03"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":3,"author":{"gitId":"skylee03"},"content":"public class ListMealCommand {","lastModifiedDate":"2023-10-08"},{"lineNumber":4,"author":{"gitId":"skylee03"},"content":"}","lastModifiedDate":"2023-10-08"}],"authorContributionMap":{"skylee03":4}},{"path":"src/main/java/athleticli/commands/diet/SetDietGoalCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"skylee03"},"content":"package athleticli.commands.diet;","lastModifiedDate":"2023-10-08"},{"lineNumber":2,"author":{"gitId":"skylee03"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":3,"author":{"gitId":"skylee03"},"content":"public class SetDietGoalCommand {","lastModifiedDate":"2023-10-08"},{"lineNumber":4,"author":{"gitId":"skylee03"},"content":"}","lastModifiedDate":"2023-10-08"}],"authorContributionMap":{"skylee03":4}},{"path":"src/main/java/athleticli/commands/sleep/AddSleepCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"skylee03"},"content":"package athleticli.commands.sleep;","lastModifiedDate":"2023-10-08"},{"lineNumber":2,"author":{"gitId":"skylee03"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":3,"author":{"gitId":"skylee03"},"content":"public class AddSleepCommand {","lastModifiedDate":"2023-10-08"},{"lineNumber":4,"author":{"gitId":"skylee03"},"content":"}","lastModifiedDate":"2023-10-08"}],"authorContributionMap":{"skylee03":4}},{"path":"src/main/java/athleticli/commands/sleep/DeleteSleepCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"skylee03"},"content":"package athleticli.commands.sleep;","lastModifiedDate":"2023-10-08"},{"lineNumber":2,"author":{"gitId":"skylee03"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":3,"author":{"gitId":"skylee03"},"content":"public class DeleteSleepCommand {","lastModifiedDate":"2023-10-08"},{"lineNumber":4,"author":{"gitId":"skylee03"},"content":"}","lastModifiedDate":"2023-10-08"}],"authorContributionMap":{"skylee03":4}},{"path":"src/main/java/athleticli/commands/sleep/EditSleepCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"skylee03"},"content":"package athleticli.commands.sleep;","lastModifiedDate":"2023-10-08"},{"lineNumber":2,"author":{"gitId":"skylee03"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":3,"author":{"gitId":"skylee03"},"content":"public class EditSleepCommand {","lastModifiedDate":"2023-10-08"},{"lineNumber":4,"author":{"gitId":"skylee03"},"content":"}","lastModifiedDate":"2023-10-08"}],"authorContributionMap":{"skylee03":4}},{"path":"src/main/java/athleticli/commands/sleep/ListSleepCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"skylee03"},"content":"package athleticli.commands.sleep;","lastModifiedDate":"2023-10-08"},{"lineNumber":2,"author":{"gitId":"skylee03"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":3,"author":{"gitId":"skylee03"},"content":"public class ListSleepCommand {","lastModifiedDate":"2023-10-08"},{"lineNumber":4,"author":{"gitId":"skylee03"},"content":"}","lastModifiedDate":"2023-10-08"}],"authorContributionMap":{"skylee03":4}},{"path":"src/main/java/athleticli/commands/sleep/ListSleepGoalCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"skylee03"},"content":"package athleticli.commands.sleep;","lastModifiedDate":"2023-10-08"},{"lineNumber":2,"author":{"gitId":"skylee03"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":3,"author":{"gitId":"skylee03"},"content":"public class ListSleepGoalCommand {","lastModifiedDate":"2023-10-08"},{"lineNumber":4,"author":{"gitId":"skylee03"},"content":"}","lastModifiedDate":"2023-10-08"}],"authorContributionMap":{"skylee03":4}},{"path":"src/main/java/athleticli/commands/sleep/SetSleepGoalCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"skylee03"},"content":"package athleticli.commands.sleep;","lastModifiedDate":"2023-10-08"},{"lineNumber":2,"author":{"gitId":"skylee03"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":3,"author":{"gitId":"skylee03"},"content":"public class SetSleepGoalCommand {","lastModifiedDate":"2023-10-08"},{"lineNumber":4,"author":{"gitId":"skylee03"},"content":"}","lastModifiedDate":"2023-10-08"}],"authorContributionMap":{"skylee03":4}},{"path":"src/main/java/athleticli/data/Data.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"skylee03"},"content":"package athleticli.data;","lastModifiedDate":"2023-10-08"},{"lineNumber":2,"author":{"gitId":"skylee03"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":3,"author":{"gitId":"skylee03"},"content":"import athleticli.data.activity.ActivityGoalList;","lastModifiedDate":"2023-10-08"},{"lineNumber":4,"author":{"gitId":"skylee03"},"content":"import athleticli.data.activity.ActivityList;","lastModifiedDate":"2023-10-08"},{"lineNumber":5,"author":{"gitId":"skylee03"},"content":"import athleticli.data.diet.DietGoalList;","lastModifiedDate":"2023-10-08"},{"lineNumber":6,"author":{"gitId":"skylee03"},"content":"import athleticli.data.diet.MealList;","lastModifiedDate":"2023-10-08"},{"lineNumber":7,"author":{"gitId":"skylee03"},"content":"import athleticli.data.sleep.SleepGoalList;","lastModifiedDate":"2023-10-08"},{"lineNumber":8,"author":{"gitId":"skylee03"},"content":"import athleticli.data.sleep.SleepList;","lastModifiedDate":"2023-10-08"},{"lineNumber":9,"author":{"gitId":"skylee03"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":10,"author":{"gitId":"skylee03"},"content":"/**","lastModifiedDate":"2023-10-08"},{"lineNumber":11,"author":{"gitId":"skylee03"},"content":" * Defines the basic fields and methods of data.","lastModifiedDate":"2023-10-08"},{"lineNumber":12,"author":{"gitId":"skylee03"},"content":" */","lastModifiedDate":"2023-10-08"},{"lineNumber":13,"author":{"gitId":"skylee03"},"content":"public class Data {","lastModifiedDate":"2023-10-08"},{"lineNumber":14,"author":{"gitId":"skylee03"},"content":" private ActivityList activities;","lastModifiedDate":"2023-10-08"},{"lineNumber":15,"author":{"gitId":"skylee03"},"content":" private ActivityGoalList activityGoals;","lastModifiedDate":"2023-10-08"},{"lineNumber":16,"author":{"gitId":"skylee03"},"content":" private MealList meals;","lastModifiedDate":"2023-10-08"},{"lineNumber":17,"author":{"gitId":"skylee03"},"content":" private DietGoalList dietGoals;","lastModifiedDate":"2023-10-08"},{"lineNumber":18,"author":{"gitId":"skylee03"},"content":" private SleepList sleeps;","lastModifiedDate":"2023-10-08"},{"lineNumber":19,"author":{"gitId":"skylee03"},"content":" private SleepGoalList sleepGoals;","lastModifiedDate":"2023-10-08"},{"lineNumber":20,"author":{"gitId":"skylee03"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":21,"author":{"gitId":"skylee03"},"content":" /**","lastModifiedDate":"2023-10-08"},{"lineNumber":22,"author":{"gitId":"skylee03"},"content":" * Constructs an empty \u003ccode\u003eData\u003c/code\u003e object.","lastModifiedDate":"2023-10-08"},{"lineNumber":23,"author":{"gitId":"skylee03"},"content":" */","lastModifiedDate":"2023-10-08"},{"lineNumber":24,"author":{"gitId":"skylee03"},"content":" public Data() {","lastModifiedDate":"2023-10-08"},{"lineNumber":25,"author":{"gitId":"skylee03"},"content":" this.activities \u003d new ActivityList();","lastModifiedDate":"2023-10-08"},{"lineNumber":26,"author":{"gitId":"skylee03"},"content":" this.activityGoals \u003d new ActivityGoalList();","lastModifiedDate":"2023-10-08"},{"lineNumber":27,"author":{"gitId":"skylee03"},"content":" this.meals \u003d new MealList();","lastModifiedDate":"2023-10-08"},{"lineNumber":28,"author":{"gitId":"skylee03"},"content":" this.dietGoals \u003d new DietGoalList();","lastModifiedDate":"2023-10-08"},{"lineNumber":29,"author":{"gitId":"skylee03"},"content":" this.sleeps \u003d new SleepList();","lastModifiedDate":"2023-10-08"},{"lineNumber":30,"author":{"gitId":"skylee03"},"content":" this.sleepGoals \u003d new SleepGoalList();","lastModifiedDate":"2023-10-08"},{"lineNumber":31,"author":{"gitId":"skylee03"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":32,"author":{"gitId":"skylee03"},"content":"}","lastModifiedDate":"2023-10-08"}],"authorContributionMap":{"skylee03":32}},{"path":"src/main/java/athleticli/data/activity/Activity.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"skylee03"},"content":"package athleticli.data.activity;","lastModifiedDate":"2023-10-08"},{"lineNumber":2,"author":{"gitId":"skylee03"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":3,"author":{"gitId":"skylee03"},"content":"public class Activity {","lastModifiedDate":"2023-10-08"},{"lineNumber":4,"author":{"gitId":"skylee03"},"content":"}","lastModifiedDate":"2023-10-08"}],"authorContributionMap":{"skylee03":4}},{"path":"src/main/java/athleticli/data/activity/ActivityGoal.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"skylee03"},"content":"package athleticli.data.activity;","lastModifiedDate":"2023-10-08"},{"lineNumber":2,"author":{"gitId":"skylee03"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":3,"author":{"gitId":"skylee03"},"content":"public class ActivityGoal {","lastModifiedDate":"2023-10-08"},{"lineNumber":4,"author":{"gitId":"skylee03"},"content":"}","lastModifiedDate":"2023-10-08"}],"authorContributionMap":{"skylee03":4}},{"path":"src/main/java/athleticli/data/activity/ActivityGoalList.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"skylee03"},"content":"package athleticli.data.activity;","lastModifiedDate":"2023-10-08"},{"lineNumber":2,"author":{"gitId":"skylee03"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":3,"author":{"gitId":"skylee03"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-10-08"},{"lineNumber":4,"author":{"gitId":"skylee03"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":5,"author":{"gitId":"skylee03"},"content":"public class ActivityGoalList extends ArrayList\u003cActivityGoal\u003e {","lastModifiedDate":"2023-10-08"},{"lineNumber":6,"author":{"gitId":"skylee03"},"content":"}","lastModifiedDate":"2023-10-08"}],"authorContributionMap":{"skylee03":6}},{"path":"src/main/java/athleticli/data/activity/ActivityList.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"skylee03"},"content":"package athleticli.data.activity;","lastModifiedDate":"2023-10-08"},{"lineNumber":2,"author":{"gitId":"skylee03"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":3,"author":{"gitId":"skylee03"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-10-08"},{"lineNumber":4,"author":{"gitId":"skylee03"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":5,"author":{"gitId":"skylee03"},"content":"public class ActivityList extends ArrayList\u003cActivity\u003e {","lastModifiedDate":"2023-10-08"},{"lineNumber":6,"author":{"gitId":"skylee03"},"content":"}","lastModifiedDate":"2023-10-08"}],"authorContributionMap":{"skylee03":6}},{"path":"src/main/java/athleticli/data/diet/DietGoal.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"skylee03"},"content":"package athleticli.data.diet;","lastModifiedDate":"2023-10-08"},{"lineNumber":2,"author":{"gitId":"skylee03"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":3,"author":{"gitId":"skylee03"},"content":"public class DietGoal {","lastModifiedDate":"2023-10-08"},{"lineNumber":4,"author":{"gitId":"skylee03"},"content":"}","lastModifiedDate":"2023-10-08"}],"authorContributionMap":{"skylee03":4}},{"path":"src/main/java/athleticli/data/diet/DietGoalList.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"skylee03"},"content":"package athleticli.data.diet;","lastModifiedDate":"2023-10-08"},{"lineNumber":2,"author":{"gitId":"skylee03"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":3,"author":{"gitId":"skylee03"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-10-08"},{"lineNumber":4,"author":{"gitId":"skylee03"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":5,"author":{"gitId":"skylee03"},"content":"public class DietGoalList extends ArrayList\u003cDietGoal\u003e {","lastModifiedDate":"2023-10-08"},{"lineNumber":6,"author":{"gitId":"skylee03"},"content":"}","lastModifiedDate":"2023-10-08"}],"authorContributionMap":{"skylee03":6}},{"path":"src/main/java/athleticli/data/diet/Meal.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"skylee03"},"content":"package athleticli.data.diet;","lastModifiedDate":"2023-10-08"},{"lineNumber":2,"author":{"gitId":"skylee03"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":3,"author":{"gitId":"skylee03"},"content":"public class Meal {","lastModifiedDate":"2023-10-08"},{"lineNumber":4,"author":{"gitId":"skylee03"},"content":"}","lastModifiedDate":"2023-10-08"}],"authorContributionMap":{"skylee03":4}},{"path":"src/main/java/athleticli/data/diet/MealList.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"skylee03"},"content":"package athleticli.data.diet;","lastModifiedDate":"2023-10-08"},{"lineNumber":2,"author":{"gitId":"skylee03"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":3,"author":{"gitId":"skylee03"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-10-08"},{"lineNumber":4,"author":{"gitId":"skylee03"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":5,"author":{"gitId":"skylee03"},"content":"public class MealList extends ArrayList\u003cMeal\u003e {","lastModifiedDate":"2023-10-08"},{"lineNumber":6,"author":{"gitId":"skylee03"},"content":"}","lastModifiedDate":"2023-10-08"}],"authorContributionMap":{"skylee03":6}},{"path":"src/main/java/athleticli/data/sleep/Sleep.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"skylee03"},"content":"package athleticli.data.sleep;","lastModifiedDate":"2023-10-08"},{"lineNumber":2,"author":{"gitId":"skylee03"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":3,"author":{"gitId":"skylee03"},"content":"public class Sleep {","lastModifiedDate":"2023-10-08"},{"lineNumber":4,"author":{"gitId":"skylee03"},"content":"}","lastModifiedDate":"2023-10-08"}],"authorContributionMap":{"skylee03":4}},{"path":"src/main/java/athleticli/data/sleep/SleepGoal.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"skylee03"},"content":"package athleticli.data.sleep;","lastModifiedDate":"2023-10-08"},{"lineNumber":2,"author":{"gitId":"skylee03"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":3,"author":{"gitId":"skylee03"},"content":"public class SleepGoal {","lastModifiedDate":"2023-10-08"},{"lineNumber":4,"author":{"gitId":"skylee03"},"content":"}","lastModifiedDate":"2023-10-08"}],"authorContributionMap":{"skylee03":4}},{"path":"src/main/java/athleticli/data/sleep/SleepGoalList.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"skylee03"},"content":"package athleticli.data.sleep;","lastModifiedDate":"2023-10-08"},{"lineNumber":2,"author":{"gitId":"skylee03"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":3,"author":{"gitId":"skylee03"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-10-08"},{"lineNumber":4,"author":{"gitId":"skylee03"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":5,"author":{"gitId":"skylee03"},"content":"public class SleepGoalList extends ArrayList\u003cSleepGoal\u003e {","lastModifiedDate":"2023-10-08"},{"lineNumber":6,"author":{"gitId":"skylee03"},"content":"}","lastModifiedDate":"2023-10-08"}],"authorContributionMap":{"skylee03":6}},{"path":"src/main/java/athleticli/data/sleep/SleepList.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"skylee03"},"content":"package athleticli.data.sleep;","lastModifiedDate":"2023-10-08"},{"lineNumber":2,"author":{"gitId":"skylee03"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":3,"author":{"gitId":"skylee03"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-10-08"},{"lineNumber":4,"author":{"gitId":"skylee03"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":5,"author":{"gitId":"skylee03"},"content":"public class SleepList extends ArrayList\u003cSleep\u003e {","lastModifiedDate":"2023-10-08"},{"lineNumber":6,"author":{"gitId":"skylee03"},"content":"}","lastModifiedDate":"2023-10-08"}],"authorContributionMap":{"skylee03":6}},{"path":"src/main/java/athleticli/dietgoal/DietGoal.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"yicheng-toh"},"content":"package athleticli.dietgoal;","lastModifiedDate":"2023-10-10"},{"lineNumber":2,"author":{"gitId":"yicheng-toh"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":3,"author":{"gitId":"yicheng-toh"},"content":"public class DietGoal {","lastModifiedDate":"2023-10-10"},{"lineNumber":4,"author":{"gitId":"yicheng-toh"},"content":" private String nutrients;","lastModifiedDate":"2023-10-10"},{"lineNumber":5,"author":{"gitId":"yicheng-toh"},"content":" private int targetValue;","lastModifiedDate":"2023-10-10"},{"lineNumber":6,"author":{"gitId":"yicheng-toh"},"content":" private int currentValue;","lastModifiedDate":"2023-10-10"},{"lineNumber":7,"author":{"gitId":"yicheng-toh"},"content":" private boolean isGoalAchieved;","lastModifiedDate":"2023-10-10"},{"lineNumber":8,"author":{"gitId":"yicheng-toh"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":9,"author":{"gitId":"yicheng-toh"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":10,"author":{"gitId":"yicheng-toh"},"content":" public DietGoal(String nutrients, int targetValue) {","lastModifiedDate":"2023-10-10"},{"lineNumber":11,"author":{"gitId":"yicheng-toh"},"content":" this.nutrients \u003d nutrients;","lastModifiedDate":"2023-10-10"},{"lineNumber":12,"author":{"gitId":"yicheng-toh"},"content":" this.targetValue \u003d targetValue;","lastModifiedDate":"2023-10-10"},{"lineNumber":13,"author":{"gitId":"yicheng-toh"},"content":" currentValue \u003d 0;","lastModifiedDate":"2023-10-10"},{"lineNumber":14,"author":{"gitId":"yicheng-toh"},"content":" isGoalAchieved \u003d false;","lastModifiedDate":"2023-10-10"},{"lineNumber":15,"author":{"gitId":"yicheng-toh"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":16,"author":{"gitId":"yicheng-toh"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":17,"author":{"gitId":"yicheng-toh"},"content":" public DietGoal(String nutrients, int targetValue, int currentValue) {","lastModifiedDate":"2023-10-10"},{"lineNumber":18,"author":{"gitId":"yicheng-toh"},"content":" this.nutrients \u003d nutrients;","lastModifiedDate":"2023-10-10"},{"lineNumber":19,"author":{"gitId":"yicheng-toh"},"content":" this.targetValue \u003d targetValue;","lastModifiedDate":"2023-10-10"},{"lineNumber":20,"author":{"gitId":"yicheng-toh"},"content":" this.currentValue \u003d currentValue;","lastModifiedDate":"2023-10-10"},{"lineNumber":21,"author":{"gitId":"yicheng-toh"},"content":" isGoalAchieved \u003d currentValue \u003e\u003d targetValue;","lastModifiedDate":"2023-10-10"},{"lineNumber":22,"author":{"gitId":"yicheng-toh"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":23,"author":{"gitId":"yicheng-toh"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":24,"author":{"gitId":"yicheng-toh"},"content":" public String getNutrients() {","lastModifiedDate":"2023-10-10"},{"lineNumber":25,"author":{"gitId":"yicheng-toh"},"content":" return nutrients;","lastModifiedDate":"2023-10-10"},{"lineNumber":26,"author":{"gitId":"yicheng-toh"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":27,"author":{"gitId":"yicheng-toh"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":28,"author":{"gitId":"yicheng-toh"},"content":" public int getTargetValue() {","lastModifiedDate":"2023-10-10"},{"lineNumber":29,"author":{"gitId":"yicheng-toh"},"content":" return targetValue;","lastModifiedDate":"2023-10-10"},{"lineNumber":30,"author":{"gitId":"yicheng-toh"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":31,"author":{"gitId":"yicheng-toh"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":32,"author":{"gitId":"yicheng-toh"},"content":" public int getCurrentValue() {","lastModifiedDate":"2023-10-10"},{"lineNumber":33,"author":{"gitId":"yicheng-toh"},"content":" return currentValue;","lastModifiedDate":"2023-10-10"},{"lineNumber":34,"author":{"gitId":"yicheng-toh"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":35,"author":{"gitId":"yicheng-toh"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":36,"author":{"gitId":"yicheng-toh"},"content":" public void setCurrentValue(int currentValue) {","lastModifiedDate":"2023-10-10"},{"lineNumber":37,"author":{"gitId":"yicheng-toh"},"content":" this.currentValue \u003d currentValue;","lastModifiedDate":"2023-10-10"},{"lineNumber":38,"author":{"gitId":"yicheng-toh"},"content":" if (!isGoalAchieved \u0026\u0026 currentValue \u003e\u003d targetValue) {","lastModifiedDate":"2023-10-10"},{"lineNumber":39,"author":{"gitId":"yicheng-toh"},"content":" setIsGoalAchieved(true);","lastModifiedDate":"2023-10-10"},{"lineNumber":40,"author":{"gitId":"yicheng-toh"},"content":" } else if (isGoalAchieved \u0026\u0026 currentValue \u003c targetValue) {","lastModifiedDate":"2023-10-10"},{"lineNumber":41,"author":{"gitId":"yicheng-toh"},"content":" setIsGoalAchieved(false);","lastModifiedDate":"2023-10-10"},{"lineNumber":42,"author":{"gitId":"yicheng-toh"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":43,"author":{"gitId":"yicheng-toh"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":44,"author":{"gitId":"yicheng-toh"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":45,"author":{"gitId":"yicheng-toh"},"content":" public boolean getIsGoalAchieved() {","lastModifiedDate":"2023-10-10"},{"lineNumber":46,"author":{"gitId":"yicheng-toh"},"content":" return isGoalAchieved;","lastModifiedDate":"2023-10-10"},{"lineNumber":47,"author":{"gitId":"yicheng-toh"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":48,"author":{"gitId":"yicheng-toh"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":49,"author":{"gitId":"yicheng-toh"},"content":" private void setIsGoalAchieved(boolean isGoalAchieved) {","lastModifiedDate":"2023-10-10"},{"lineNumber":50,"author":{"gitId":"yicheng-toh"},"content":" this.isGoalAchieved \u003d isGoalAchieved;","lastModifiedDate":"2023-10-10"},{"lineNumber":51,"author":{"gitId":"yicheng-toh"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":52,"author":{"gitId":"yicheng-toh"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":53,"author":{"gitId":"yicheng-toh"},"content":" @Override","lastModifiedDate":"2023-10-10"},{"lineNumber":54,"author":{"gitId":"yicheng-toh"},"content":" public String toString() {","lastModifiedDate":"2023-10-10"},{"lineNumber":55,"author":{"gitId":"yicheng-toh"},"content":" return nutrients + \" intake progress: (\" + currentValue","lastModifiedDate":"2023-10-10"},{"lineNumber":56,"author":{"gitId":"yicheng-toh"},"content":" + \"/\" + targetValue + \")\\n\";","lastModifiedDate":"2023-10-10"},{"lineNumber":57,"author":{"gitId":"yicheng-toh"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":58,"author":{"gitId":"yicheng-toh"},"content":"}","lastModifiedDate":"2023-10-10"},{"lineNumber":59,"author":{"gitId":"yicheng-toh"},"content":"","lastModifiedDate":"2023-10-11"}],"authorContributionMap":{"yicheng-toh":59}},{"path":"src/main/java/athleticli/dietgoal/DietGoalList.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"yicheng-toh"},"content":"package athleticli.dietgoal;","lastModifiedDate":"2023-10-10"},{"lineNumber":2,"author":{"gitId":"yicheng-toh"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":3,"author":{"gitId":"yicheng-toh"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-10-10"},{"lineNumber":4,"author":{"gitId":"yicheng-toh"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":5,"author":{"gitId":"yicheng-toh"},"content":"public class DietGoalList {","lastModifiedDate":"2023-10-10"},{"lineNumber":6,"author":{"gitId":"yicheng-toh"},"content":" ArrayList\u003cDietGoal\u003e dietGoals;","lastModifiedDate":"2023-10-10"},{"lineNumber":7,"author":{"gitId":"yicheng-toh"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":8,"author":{"gitId":"yicheng-toh"},"content":" public DietGoalList() {","lastModifiedDate":"2023-10-10"},{"lineNumber":9,"author":{"gitId":"yicheng-toh"},"content":" dietGoals \u003d new ArrayList\u003cDietGoal\u003e();","lastModifiedDate":"2023-10-10"},{"lineNumber":10,"author":{"gitId":"yicheng-toh"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":11,"author":{"gitId":"yicheng-toh"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":12,"author":{"gitId":"yicheng-toh"},"content":" public void addGoal(DietGoal dietGoal) {","lastModifiedDate":"2023-10-10"},{"lineNumber":13,"author":{"gitId":"yicheng-toh"},"content":" dietGoals.add(dietGoal);","lastModifiedDate":"2023-10-10"},{"lineNumber":14,"author":{"gitId":"yicheng-toh"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":15,"author":{"gitId":"yicheng-toh"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":16,"author":{"gitId":"yicheng-toh"},"content":" public int getSize() {","lastModifiedDate":"2023-10-10"},{"lineNumber":17,"author":{"gitId":"yicheng-toh"},"content":" return dietGoals.size();","lastModifiedDate":"2023-10-10"},{"lineNumber":18,"author":{"gitId":"yicheng-toh"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":19,"author":{"gitId":"yicheng-toh"},"content":"}","lastModifiedDate":"2023-10-10"},{"lineNumber":20,"author":{"gitId":"yicheng-toh"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":21,"author":{"gitId":"yicheng-toh"},"content":"","lastModifiedDate":"2023-10-11"}],"authorContributionMap":{"yicheng-toh":21}},{"path":"src/main/java/athleticli/exceptions/AthletiException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"skylee03"},"content":"package athleticli.exceptions;","lastModifiedDate":"2023-10-08"},{"lineNumber":2,"author":{"gitId":"skylee03"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":3,"author":{"gitId":"skylee03"},"content":"/**","lastModifiedDate":"2023-10-08"},{"lineNumber":4,"author":{"gitId":"skylee03"},"content":" * Represents the exceptions that need to be shown to the user.","lastModifiedDate":"2023-10-08"},{"lineNumber":5,"author":{"gitId":"skylee03"},"content":" */","lastModifiedDate":"2023-10-08"},{"lineNumber":6,"author":{"gitId":"skylee03"},"content":"public class AthletiException extends Exception {","lastModifiedDate":"2023-10-08"},{"lineNumber":7,"author":{"gitId":"skylee03"},"content":" public AthletiException(String message) {","lastModifiedDate":"2023-10-08"},{"lineNumber":8,"author":{"gitId":"skylee03"},"content":" super(message);","lastModifiedDate":"2023-10-08"},{"lineNumber":9,"author":{"gitId":"skylee03"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":10,"author":{"gitId":"skylee03"},"content":"}","lastModifiedDate":"2023-10-08"}],"authorContributionMap":{"skylee03":10}},{"path":"src/main/java/athleticli/exceptions/UnknownCommandException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"skylee03"},"content":"package athleticli.exceptions;","lastModifiedDate":"2023-10-08"},{"lineNumber":2,"author":{"gitId":"skylee03"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":3,"author":{"gitId":"skylee03"},"content":"public class UnknownCommandException extends AthletiException {","lastModifiedDate":"2023-10-08"},{"lineNumber":4,"author":{"gitId":"skylee03"},"content":" public UnknownCommandException() {","lastModifiedDate":"2023-10-08"},{"lineNumber":5,"author":{"gitId":"skylee03"},"content":" super(\"I\u0027m sorry, but I don\u0027t know what that means :-(\");","lastModifiedDate":"2023-10-08"},{"lineNumber":6,"author":{"gitId":"skylee03"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":7,"author":{"gitId":"skylee03"},"content":"}","lastModifiedDate":"2023-10-08"}],"authorContributionMap":{"skylee03":7}},{"path":"src/main/java/athleticli/ui/CommandName.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"skylee03"},"content":"package athleticli.ui;","lastModifiedDate":"2023-10-08"},{"lineNumber":2,"author":{"gitId":"skylee03"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":3,"author":{"gitId":"skylee03"},"content":"/**","lastModifiedDate":"2023-10-08"},{"lineNumber":4,"author":{"gitId":"skylee03"},"content":" * Defines string literals for command names.","lastModifiedDate":"2023-10-08"},{"lineNumber":5,"author":{"gitId":"skylee03"},"content":" */","lastModifiedDate":"2023-10-08"},{"lineNumber":6,"author":{"gitId":"skylee03"},"content":"public class CommandName {","lastModifiedDate":"2023-10-08"},{"lineNumber":7,"author":{"gitId":"skylee03"},"content":" public static final String COMMAND_BYE \u003d \"bye\";","lastModifiedDate":"2023-10-08"},{"lineNumber":8,"author":{"gitId":"skylee03"},"content":"}","lastModifiedDate":"2023-10-08"}],"authorContributionMap":{"skylee03":8}},{"path":"src/main/java/athleticli/ui/Message.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"skylee03"},"content":"package athleticli.ui;","lastModifiedDate":"2023-10-08"},{"lineNumber":2,"author":{"gitId":"skylee03"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":3,"author":{"gitId":"skylee03"},"content":"public class Message {","lastModifiedDate":"2023-10-08"},{"lineNumber":4,"author":{"gitId":"skylee03"},"content":" public static final String PROMPT \u003d \"\u003e \";","lastModifiedDate":"2023-10-08"},{"lineNumber":5,"author":{"gitId":"skylee03"},"content":" public static final String LINE \u003d \"____________________________________________________________\\n\";","lastModifiedDate":"2023-10-08"},{"lineNumber":6,"author":{"gitId":"skylee03"},"content":" public static final String PREFIX_MESSAGE \u003d \" \";","lastModifiedDate":"2023-10-08"},{"lineNumber":7,"author":{"gitId":"skylee03"},"content":" public static final String PREFIX_EXCEPTION \u003d \"OOPS!!! \";","lastModifiedDate":"2023-10-08"},{"lineNumber":8,"author":{"gitId":"skylee03"},"content":" public static final String MESSAGE_BYE \u003d \"Bye. Hope to see you again soon!\";","lastModifiedDate":"2023-10-08"},{"lineNumber":9,"author":{"gitId":"skylee03"},"content":" public static final String[] MESSAGE_HELLO \u003d {\"Hello! I\u0027m AthletiCLI!\", \"What can I do for you?\"};","lastModifiedDate":"2023-10-08"},{"lineNumber":10,"author":{"gitId":"skylee03"},"content":"}","lastModifiedDate":"2023-10-08"}],"authorContributionMap":{"skylee03":10}},{"path":"src/main/java/athleticli/ui/Parser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"skylee03"},"content":"package athleticli.ui;","lastModifiedDate":"2023-10-08"},{"lineNumber":2,"author":{"gitId":"skylee03"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":3,"author":{"gitId":"skylee03"},"content":"import athleticli.commands.ByeCommand;","lastModifiedDate":"2023-10-08"},{"lineNumber":4,"author":{"gitId":"skylee03"},"content":"import athleticli.commands.Command;","lastModifiedDate":"2023-10-08"},{"lineNumber":5,"author":{"gitId":"skylee03"},"content":"import athleticli.exceptions.AthletiException;","lastModifiedDate":"2023-10-08"},{"lineNumber":6,"author":{"gitId":"skylee03"},"content":"import athleticli.exceptions.UnknownCommandException;","lastModifiedDate":"2023-10-08"},{"lineNumber":7,"author":{"gitId":"skylee03"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":8,"author":{"gitId":"skylee03"},"content":"/**","lastModifiedDate":"2023-10-08"},{"lineNumber":9,"author":{"gitId":"skylee03"},"content":" * Defines the basic methods for command parser.","lastModifiedDate":"2023-10-08"},{"lineNumber":10,"author":{"gitId":"skylee03"},"content":" */","lastModifiedDate":"2023-10-08"},{"lineNumber":11,"author":{"gitId":"skylee03"},"content":"public class Parser {","lastModifiedDate":"2023-10-08"},{"lineNumber":12,"author":{"gitId":"skylee03"},"content":" /**","lastModifiedDate":"2023-10-08"},{"lineNumber":13,"author":{"gitId":"skylee03"},"content":" * Splits the raw user input into two parts, and then returns them.","lastModifiedDate":"2023-10-08"},{"lineNumber":14,"author":{"gitId":"skylee03"},"content":" * The first part is the command type, while the second part is the command arguments.","lastModifiedDate":"2023-10-08"},{"lineNumber":15,"author":{"gitId":"skylee03"},"content":" * The second part can be empty.","lastModifiedDate":"2023-10-08"},{"lineNumber":16,"author":{"gitId":"skylee03"},"content":" *","lastModifiedDate":"2023-10-08"},{"lineNumber":17,"author":{"gitId":"skylee03"},"content":" * @param rawUserInput The raw user input.","lastModifiedDate":"2023-10-08"},{"lineNumber":18,"author":{"gitId":"skylee03"},"content":" * @return A string array whose first element is the command type","lastModifiedDate":"2023-10-08"},{"lineNumber":19,"author":{"gitId":"skylee03"},"content":" * and the second element is the command arguments.","lastModifiedDate":"2023-10-08"},{"lineNumber":20,"author":{"gitId":"skylee03"},"content":" */","lastModifiedDate":"2023-10-08"},{"lineNumber":21,"author":{"gitId":"skylee03"},"content":" public static String[] splitCommandWordAndArgs(String rawUserInput) {","lastModifiedDate":"2023-10-08"},{"lineNumber":22,"author":{"gitId":"skylee03"},"content":" final String[] split \u003d rawUserInput.trim().split(\"\\\\s+\", 2);","lastModifiedDate":"2023-10-08"},{"lineNumber":23,"author":{"gitId":"skylee03"},"content":" return split.length \u003d\u003d 2 ? split : new String[] { split[0] , \"\" };","lastModifiedDate":"2023-10-08"},{"lineNumber":24,"author":{"gitId":"skylee03"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":25,"author":{"gitId":"skylee03"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":26,"author":{"gitId":"skylee03"},"content":" /**","lastModifiedDate":"2023-10-08"},{"lineNumber":27,"author":{"gitId":"skylee03"},"content":" * Parses the raw user input and returns the corresponding command object.","lastModifiedDate":"2023-10-08"},{"lineNumber":28,"author":{"gitId":"skylee03"},"content":" *","lastModifiedDate":"2023-10-08"},{"lineNumber":29,"author":{"gitId":"skylee03"},"content":" * @param rawUserInput The raw user input.","lastModifiedDate":"2023-10-08"},{"lineNumber":30,"author":{"gitId":"skylee03"},"content":" * @return An object representing the command.","lastModifiedDate":"2023-10-08"},{"lineNumber":31,"author":{"gitId":"skylee03"},"content":" * @throws AthletiException","lastModifiedDate":"2023-10-08"},{"lineNumber":32,"author":{"gitId":"skylee03"},"content":" */","lastModifiedDate":"2023-10-08"},{"lineNumber":33,"author":{"gitId":"skylee03"},"content":" public static Command parseCommand(String rawUserInput) throws AthletiException {","lastModifiedDate":"2023-10-08"},{"lineNumber":34,"author":{"gitId":"skylee03"},"content":" final String[] commandTypeAndParams \u003d splitCommandWordAndArgs(rawUserInput);","lastModifiedDate":"2023-10-08"},{"lineNumber":35,"author":{"gitId":"skylee03"},"content":" final String commandType \u003d commandTypeAndParams[0];","lastModifiedDate":"2023-10-08"},{"lineNumber":36,"author":{"gitId":"skylee03"},"content":" final String commandArgs \u003d commandTypeAndParams[1];","lastModifiedDate":"2023-10-08"},{"lineNumber":37,"author":{"gitId":"skylee03"},"content":" try {","lastModifiedDate":"2023-10-08"},{"lineNumber":38,"author":{"gitId":"skylee03"},"content":" switch (commandType) {","lastModifiedDate":"2023-10-08"},{"lineNumber":39,"author":{"gitId":"skylee03"},"content":" case CommandName.COMMAND_BYE:","lastModifiedDate":"2023-10-08"},{"lineNumber":40,"author":{"gitId":"skylee03"},"content":" return new ByeCommand();","lastModifiedDate":"2023-10-08"},{"lineNumber":41,"author":{"gitId":"skylee03"},"content":" default:","lastModifiedDate":"2023-10-08"},{"lineNumber":42,"author":{"gitId":"skylee03"},"content":" throw new UnknownCommandException();","lastModifiedDate":"2023-10-08"},{"lineNumber":43,"author":{"gitId":"skylee03"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":44,"author":{"gitId":"skylee03"},"content":" } catch (AthletiException e) {","lastModifiedDate":"2023-10-08"},{"lineNumber":45,"author":{"gitId":"skylee03"},"content":" throw e;","lastModifiedDate":"2023-10-08"},{"lineNumber":46,"author":{"gitId":"skylee03"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":47,"author":{"gitId":"skylee03"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":48,"author":{"gitId":"skylee03"},"content":"}","lastModifiedDate":"2023-10-08"}],"authorContributionMap":{"skylee03":48}},{"path":"src/main/java/athleticli/ui/Ui.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"skylee03"},"content":"package athleticli.ui;","lastModifiedDate":"2023-10-08"},{"lineNumber":2,"author":{"gitId":"skylee03"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":3,"author":{"gitId":"skylee03"},"content":"import java.io.InputStream;","lastModifiedDate":"2023-10-08"},{"lineNumber":4,"author":{"gitId":"skylee03"},"content":"import java.io.PrintStream;","lastModifiedDate":"2023-10-08"},{"lineNumber":5,"author":{"gitId":"skylee03"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-10-08"},{"lineNumber":6,"author":{"gitId":"skylee03"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":7,"author":{"gitId":"skylee03"},"content":"/**","lastModifiedDate":"2023-10-08"},{"lineNumber":8,"author":{"gitId":"skylee03"},"content":" * Defines the behavior of the CLI.","lastModifiedDate":"2023-10-08"},{"lineNumber":9,"author":{"gitId":"skylee03"},"content":" */","lastModifiedDate":"2023-10-08"},{"lineNumber":10,"author":{"gitId":"skylee03"},"content":"public class Ui {","lastModifiedDate":"2023-10-08"},{"lineNumber":11,"author":{"gitId":"skylee03"},"content":" private final Scanner in;","lastModifiedDate":"2023-10-08"},{"lineNumber":12,"author":{"gitId":"skylee03"},"content":" private final PrintStream out;","lastModifiedDate":"2023-10-08"},{"lineNumber":13,"author":{"gitId":"skylee03"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":14,"author":{"gitId":"skylee03"},"content":" /**","lastModifiedDate":"2023-10-08"},{"lineNumber":15,"author":{"gitId":"skylee03"},"content":" * Constructs a \u003ccode\u003eUi\u003c/code\u003e object, whose input \u003ccode\u003ein\u003c/code\u003e","lastModifiedDate":"2023-10-08"},{"lineNumber":16,"author":{"gitId":"skylee03"},"content":" * and output \u003ccode\u003eout\u003c/code\u003e is the standard input and the standard","lastModifiedDate":"2023-10-08"},{"lineNumber":17,"author":{"gitId":"skylee03"},"content":" * output, respectively.","lastModifiedDate":"2023-10-08"},{"lineNumber":18,"author":{"gitId":"skylee03"},"content":" */","lastModifiedDate":"2023-10-08"},{"lineNumber":19,"author":{"gitId":"skylee03"},"content":" public Ui() {","lastModifiedDate":"2023-10-08"},{"lineNumber":20,"author":{"gitId":"skylee03"},"content":" this(System.in, System.out);","lastModifiedDate":"2023-10-08"},{"lineNumber":21,"author":{"gitId":"skylee03"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":22,"author":{"gitId":"skylee03"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":23,"author":{"gitId":"skylee03"},"content":" /**","lastModifiedDate":"2023-10-08"},{"lineNumber":24,"author":{"gitId":"skylee03"},"content":" * Constructs a \u003ccode\u003eUi\u003c/code\u003e object, whose input is an \u003ccode\u003eInputStream\u003c/code\u003e","lastModifiedDate":"2023-10-08"},{"lineNumber":25,"author":{"gitId":"skylee03"},"content":" * object \u003ccode\u003ein\u003c/code\u003e and output is an \u003ccode\u003ePrintStream\u003c/code\u003e object \u003ccode\u003eout\u003c/code\u003e.","lastModifiedDate":"2023-10-08"},{"lineNumber":26,"author":{"gitId":"skylee03"},"content":" *","lastModifiedDate":"2023-10-08"},{"lineNumber":27,"author":{"gitId":"skylee03"},"content":" * @param in The \u003ccode\u003eInputStream\u003c/code\u003e accepting the user\u0027s input.","lastModifiedDate":"2023-10-08"},{"lineNumber":28,"author":{"gitId":"skylee03"},"content":" * @param out The \u003ccode\u003ePrintStream\u003c/code\u003e displaying the program\u0027s output.","lastModifiedDate":"2023-10-08"},{"lineNumber":29,"author":{"gitId":"skylee03"},"content":" */","lastModifiedDate":"2023-10-08"},{"lineNumber":30,"author":{"gitId":"skylee03"},"content":" public Ui(InputStream in, PrintStream out) {","lastModifiedDate":"2023-10-08"},{"lineNumber":31,"author":{"gitId":"skylee03"},"content":" this.in \u003d new Scanner(in);","lastModifiedDate":"2023-10-08"},{"lineNumber":32,"author":{"gitId":"skylee03"},"content":" this.out \u003d out;","lastModifiedDate":"2023-10-08"},{"lineNumber":33,"author":{"gitId":"skylee03"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":34,"author":{"gitId":"skylee03"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":35,"author":{"gitId":"skylee03"},"content":" /**","lastModifiedDate":"2023-10-08"},{"lineNumber":36,"author":{"gitId":"skylee03"},"content":" * Returns the user\u0027s input.","lastModifiedDate":"2023-10-08"},{"lineNumber":37,"author":{"gitId":"skylee03"},"content":" *","lastModifiedDate":"2023-10-08"},{"lineNumber":38,"author":{"gitId":"skylee03"},"content":" * @return The user\u0027s input.","lastModifiedDate":"2023-10-08"},{"lineNumber":39,"author":{"gitId":"skylee03"},"content":" */","lastModifiedDate":"2023-10-08"},{"lineNumber":40,"author":{"gitId":"skylee03"},"content":" public String getUserCommand() {","lastModifiedDate":"2023-10-08"},{"lineNumber":41,"author":{"gitId":"skylee03"},"content":" out.print(Message.PROMPT);","lastModifiedDate":"2023-10-08"},{"lineNumber":42,"author":{"gitId":"skylee03"},"content":" return in.nextLine();","lastModifiedDate":"2023-10-08"},{"lineNumber":43,"author":{"gitId":"skylee03"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":44,"author":{"gitId":"skylee03"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":45,"author":{"gitId":"skylee03"},"content":" /**","lastModifiedDate":"2023-10-08"},{"lineNumber":46,"author":{"gitId":"skylee03"},"content":" * Shows the \u003ccode\u003emessages\u003c/code\u003e in a beautiful format.","lastModifiedDate":"2023-10-08"},{"lineNumber":47,"author":{"gitId":"skylee03"},"content":" *","lastModifiedDate":"2023-10-08"},{"lineNumber":48,"author":{"gitId":"skylee03"},"content":" * @param messages The messages to be shown.","lastModifiedDate":"2023-10-08"},{"lineNumber":49,"author":{"gitId":"skylee03"},"content":" */","lastModifiedDate":"2023-10-08"},{"lineNumber":50,"author":{"gitId":"skylee03"},"content":" public void showMessages(String... messages) {","lastModifiedDate":"2023-10-08"},{"lineNumber":51,"author":{"gitId":"skylee03"},"content":" out.print(Message.LINE);","lastModifiedDate":"2023-10-08"},{"lineNumber":52,"author":{"gitId":"skylee03"},"content":" for (String message : messages) {","lastModifiedDate":"2023-10-08"},{"lineNumber":53,"author":{"gitId":"skylee03"},"content":" out.println(Message.PREFIX_MESSAGE + message);","lastModifiedDate":"2023-10-08"},{"lineNumber":54,"author":{"gitId":"skylee03"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":55,"author":{"gitId":"skylee03"},"content":" out.println(Message.LINE);","lastModifiedDate":"2023-10-08"},{"lineNumber":56,"author":{"gitId":"skylee03"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":57,"author":{"gitId":"skylee03"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":58,"author":{"gitId":"skylee03"},"content":" /**","lastModifiedDate":"2023-10-08"},{"lineNumber":59,"author":{"gitId":"skylee03"},"content":" * Shows message for exception \u003ccode\u003ee\u003c/code\u003e.","lastModifiedDate":"2023-10-08"},{"lineNumber":60,"author":{"gitId":"skylee03"},"content":" *","lastModifiedDate":"2023-10-08"},{"lineNumber":61,"author":{"gitId":"skylee03"},"content":" * @param e The exception whose message will be shown.","lastModifiedDate":"2023-10-08"},{"lineNumber":62,"author":{"gitId":"skylee03"},"content":" */","lastModifiedDate":"2023-10-08"},{"lineNumber":63,"author":{"gitId":"skylee03"},"content":" public void showException(Exception e) {","lastModifiedDate":"2023-10-08"},{"lineNumber":64,"author":{"gitId":"skylee03"},"content":" showMessages(Message.PREFIX_EXCEPTION + e.getMessage());","lastModifiedDate":"2023-10-08"},{"lineNumber":65,"author":{"gitId":"skylee03"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":66,"author":{"gitId":"skylee03"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":67,"author":{"gitId":"skylee03"},"content":" /**","lastModifiedDate":"2023-10-08"},{"lineNumber":68,"author":{"gitId":"skylee03"},"content":" * Shows the welcome message.","lastModifiedDate":"2023-10-08"},{"lineNumber":69,"author":{"gitId":"skylee03"},"content":" */","lastModifiedDate":"2023-10-08"},{"lineNumber":70,"author":{"gitId":"skylee03"},"content":" public void showWelcome() {","lastModifiedDate":"2023-10-08"},{"lineNumber":71,"author":{"gitId":"skylee03"},"content":" showMessages(Message.MESSAGE_HELLO);","lastModifiedDate":"2023-10-08"},{"lineNumber":72,"author":{"gitId":"skylee03"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":73,"author":{"gitId":"skylee03"},"content":"}","lastModifiedDate":"2023-10-08"}],"authorContributionMap":{"skylee03":73}},{"path":"src/test/java/athleticli/ui/ParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"skylee03"},"content":"package athleticli.ui;","lastModifiedDate":"2023-10-08"},{"lineNumber":2,"author":{"gitId":"skylee03"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":3,"author":{"gitId":"skylee03"},"content":"import static athleticli.ui.Parser.parseCommand;","lastModifiedDate":"2023-10-08"},{"lineNumber":4,"author":{"gitId":"skylee03"},"content":"import static athleticli.ui.Parser.splitCommandWordAndArgs;","lastModifiedDate":"2023-10-08"},{"lineNumber":5,"author":{"gitId":"skylee03"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-08"},{"lineNumber":6,"author":{"gitId":"skylee03"},"content":"import static org.junit.jupiter.api.Assertions.assertInstanceOf;","lastModifiedDate":"2023-10-08"},{"lineNumber":7,"author":{"gitId":"skylee03"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2023-10-08"},{"lineNumber":8,"author":{"gitId":"skylee03"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":9,"author":{"gitId":"skylee03"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-08"},{"lineNumber":10,"author":{"gitId":"skylee03"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":11,"author":{"gitId":"skylee03"},"content":"import athleticli.commands.ByeCommand;","lastModifiedDate":"2023-10-08"},{"lineNumber":12,"author":{"gitId":"skylee03"},"content":"import athleticli.exceptions.AthletiException;","lastModifiedDate":"2023-10-08"},{"lineNumber":13,"author":{"gitId":"skylee03"},"content":"import athleticli.exceptions.UnknownCommandException;","lastModifiedDate":"2023-10-08"},{"lineNumber":14,"author":{"gitId":"skylee03"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":15,"author":{"gitId":"skylee03"},"content":"class ParserTest {","lastModifiedDate":"2023-10-08"},{"lineNumber":16,"author":{"gitId":"skylee03"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":17,"author":{"gitId":"skylee03"},"content":" @Test","lastModifiedDate":"2023-10-08"},{"lineNumber":18,"author":{"gitId":"skylee03"},"content":" void splitCommandWordAndArgs_noArgs_expectTwoParts() {","lastModifiedDate":"2023-10-08"},{"lineNumber":19,"author":{"gitId":"skylee03"},"content":" final String commandWithNoArgs \u003d \"bye\";","lastModifiedDate":"2023-10-08"},{"lineNumber":20,"author":{"gitId":"skylee03"},"content":" assertEquals(splitCommandWordAndArgs(commandWithNoArgs).length, 2);","lastModifiedDate":"2023-10-08"},{"lineNumber":21,"author":{"gitId":"skylee03"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":22,"author":{"gitId":"skylee03"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":23,"author":{"gitId":"skylee03"},"content":" @Test","lastModifiedDate":"2023-10-08"},{"lineNumber":24,"author":{"gitId":"skylee03"},"content":" void splitCommandWordAndArgs_multipleArgs_expectTwoParts() {","lastModifiedDate":"2023-10-08"},{"lineNumber":25,"author":{"gitId":"skylee03"},"content":" final String commandWithMultipleArgs \u003d \"set-diet-goal calories/1 carb/3\";","lastModifiedDate":"2023-10-08"},{"lineNumber":26,"author":{"gitId":"skylee03"},"content":" assertEquals(splitCommandWordAndArgs(commandWithMultipleArgs).length, 2);","lastModifiedDate":"2023-10-08"},{"lineNumber":27,"author":{"gitId":"skylee03"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":28,"author":{"gitId":"skylee03"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":29,"author":{"gitId":"skylee03"},"content":" @Test","lastModifiedDate":"2023-10-08"},{"lineNumber":30,"author":{"gitId":"skylee03"},"content":" void parseCommand_unknownCommand_expectUnknownCommandException() {","lastModifiedDate":"2023-10-08"},{"lineNumber":31,"author":{"gitId":"skylee03"},"content":" final String unknownCommand \u003d \"hello\";","lastModifiedDate":"2023-10-08"},{"lineNumber":32,"author":{"gitId":"skylee03"},"content":" assertThrows(UnknownCommandException.class, () -\u003e parseCommand(unknownCommand));","lastModifiedDate":"2023-10-08"},{"lineNumber":33,"author":{"gitId":"skylee03"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":34,"author":{"gitId":"skylee03"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":35,"author":{"gitId":"skylee03"},"content":" @Test","lastModifiedDate":"2023-10-08"},{"lineNumber":36,"author":{"gitId":"skylee03"},"content":" void parseCommand_byeCommand_expectByeCommand() throws AthletiException {","lastModifiedDate":"2023-10-08"},{"lineNumber":37,"author":{"gitId":"skylee03"},"content":" final String byeCommand \u003d \"bye\";","lastModifiedDate":"2023-10-08"},{"lineNumber":38,"author":{"gitId":"skylee03"},"content":" assertInstanceOf(ByeCommand.class, parseCommand(byeCommand));","lastModifiedDate":"2023-10-08"},{"lineNumber":39,"author":{"gitId":"skylee03"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":40,"author":{"gitId":"skylee03"},"content":"}","lastModifiedDate":"2023-10-08"}],"authorContributionMap":{"skylee03":40}},{"path":"src/test/java/athleticli/ui/dietgoal/DietGoalListTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"yicheng-toh"},"content":"package athleticli.ui.dietgoal;","lastModifiedDate":"2023-10-10"},{"lineNumber":2,"author":{"gitId":"yicheng-toh"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":3,"author":{"gitId":"yicheng-toh"},"content":"import athleticli.dietgoal.DietGoal;","lastModifiedDate":"2023-10-10"},{"lineNumber":4,"author":{"gitId":"yicheng-toh"},"content":"import athleticli.dietgoal.DietGoalList;","lastModifiedDate":"2023-10-10"},{"lineNumber":5,"author":{"gitId":"yicheng-toh"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-10"},{"lineNumber":6,"author":{"gitId":"yicheng-toh"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":7,"author":{"gitId":"yicheng-toh"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-10"},{"lineNumber":8,"author":{"gitId":"yicheng-toh"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":9,"author":{"gitId":"yicheng-toh"},"content":"class DietGoalListTest {","lastModifiedDate":"2023-10-10"},{"lineNumber":10,"author":{"gitId":"yicheng-toh"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":11,"author":{"gitId":"yicheng-toh"},"content":" @Test","lastModifiedDate":"2023-10-10"},{"lineNumber":12,"author":{"gitId":"yicheng-toh"},"content":" void addGoal_addOneGoal_expectSizeOne() {","lastModifiedDate":"2023-10-10"},{"lineNumber":13,"author":{"gitId":"yicheng-toh"},"content":" DietGoalList dietGoals \u003d new DietGoalList();","lastModifiedDate":"2023-10-10"},{"lineNumber":14,"author":{"gitId":"yicheng-toh"},"content":" DietGoal proteinGoal \u003d new DietGoal(\"protein\", 10000);","lastModifiedDate":"2023-10-10"},{"lineNumber":15,"author":{"gitId":"yicheng-toh"},"content":" dietGoals.addGoal(proteinGoal);","lastModifiedDate":"2023-10-10"},{"lineNumber":16,"author":{"gitId":"yicheng-toh"},"content":" assertEquals(1, dietGoals.getSize());","lastModifiedDate":"2023-10-10"},{"lineNumber":17,"author":{"gitId":"yicheng-toh"},"content":"","lastModifiedDate":"2023-10-11"},{"lineNumber":18,"author":{"gitId":"yicheng-toh"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":19,"author":{"gitId":"yicheng-toh"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":20,"author":{"gitId":"yicheng-toh"},"content":" @Test","lastModifiedDate":"2023-10-10"},{"lineNumber":21,"author":{"gitId":"yicheng-toh"},"content":" void getSize_initialiseArgs_expectZero() {","lastModifiedDate":"2023-10-10"},{"lineNumber":22,"author":{"gitId":"yicheng-toh"},"content":" DietGoalList dietGoals \u003d new DietGoalList();","lastModifiedDate":"2023-10-10"},{"lineNumber":23,"author":{"gitId":"yicheng-toh"},"content":" assertEquals(0, dietGoals.getSize());","lastModifiedDate":"2023-10-10"},{"lineNumber":24,"author":{"gitId":"yicheng-toh"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":25,"author":{"gitId":"yicheng-toh"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":26,"author":{"gitId":"yicheng-toh"},"content":" @Test","lastModifiedDate":"2023-10-10"},{"lineNumber":27,"author":{"gitId":"yicheng-toh"},"content":" void getSize_addTenGoals_expectTen() {","lastModifiedDate":"2023-10-10"},{"lineNumber":28,"author":{"gitId":"yicheng-toh"},"content":" DietGoalList dietGoals \u003d new DietGoalList();","lastModifiedDate":"2023-10-10"},{"lineNumber":29,"author":{"gitId":"yicheng-toh"},"content":" DietGoal proteinGoal \u003d new DietGoal(\"protein\", 10000);","lastModifiedDate":"2023-10-10"},{"lineNumber":30,"author":{"gitId":"yicheng-toh"},"content":" for (int i \u003d 0; i \u003c 10; i++) {","lastModifiedDate":"2023-10-10"},{"lineNumber":31,"author":{"gitId":"yicheng-toh"},"content":" dietGoals.addGoal(proteinGoal);","lastModifiedDate":"2023-10-10"},{"lineNumber":32,"author":{"gitId":"yicheng-toh"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":33,"author":{"gitId":"yicheng-toh"},"content":" assertEquals(10, dietGoals.getSize());","lastModifiedDate":"2023-10-10"},{"lineNumber":34,"author":{"gitId":"yicheng-toh"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":35,"author":{"gitId":"yicheng-toh"},"content":"}","lastModifiedDate":"2023-10-10"}],"authorContributionMap":{"yicheng-toh":35}},{"path":"src/test/java/athleticli/ui/dietgoal/DietGoalTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"yicheng-toh"},"content":"package athleticli.ui.dietgoal;","lastModifiedDate":"2023-10-10"},{"lineNumber":2,"author":{"gitId":"yicheng-toh"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":3,"author":{"gitId":"yicheng-toh"},"content":"import athleticli.dietgoal.DietGoal;","lastModifiedDate":"2023-10-10"},{"lineNumber":4,"author":{"gitId":"yicheng-toh"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-10-10"},{"lineNumber":5,"author":{"gitId":"yicheng-toh"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":6,"author":{"gitId":"yicheng-toh"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-10-10"},{"lineNumber":7,"author":{"gitId":"yicheng-toh"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-10-10"},{"lineNumber":8,"author":{"gitId":"yicheng-toh"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-10-10"},{"lineNumber":9,"author":{"gitId":"yicheng-toh"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":10,"author":{"gitId":"yicheng-toh"},"content":"class DietGoalTest {","lastModifiedDate":"2023-10-10"},{"lineNumber":11,"author":{"gitId":"yicheng-toh"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":12,"author":{"gitId":"yicheng-toh"},"content":" @Test","lastModifiedDate":"2023-10-10"},{"lineNumber":13,"author":{"gitId":"yicheng-toh"},"content":" void getNutrients_initialiseCommonArgs_expectArgs() {","lastModifiedDate":"2023-10-10"},{"lineNumber":14,"author":{"gitId":"yicheng-toh"},"content":" DietGoal proteinGoal \u003d new DietGoal(\"protein\", 10000);","lastModifiedDate":"2023-10-10"},{"lineNumber":15,"author":{"gitId":"yicheng-toh"},"content":" assertEquals(\"protein\", proteinGoal.getNutrients());","lastModifiedDate":"2023-10-10"},{"lineNumber":16,"author":{"gitId":"yicheng-toh"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":17,"author":{"gitId":"yicheng-toh"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":18,"author":{"gitId":"yicheng-toh"},"content":" @Test","lastModifiedDate":"2023-10-10"},{"lineNumber":19,"author":{"gitId":"yicheng-toh"},"content":" void getTargetValue_initialiseCommonArgs_expectArgs() {","lastModifiedDate":"2023-10-10"},{"lineNumber":20,"author":{"gitId":"yicheng-toh"},"content":" DietGoal proteinGoal \u003d new DietGoal(\"protein\", 10000);","lastModifiedDate":"2023-10-10"},{"lineNumber":21,"author":{"gitId":"yicheng-toh"},"content":" assertEquals(10000, proteinGoal.getTargetValue());","lastModifiedDate":"2023-10-10"},{"lineNumber":22,"author":{"gitId":"yicheng-toh"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":23,"author":{"gitId":"yicheng-toh"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":24,"author":{"gitId":"yicheng-toh"},"content":" @Test","lastModifiedDate":"2023-10-10"},{"lineNumber":25,"author":{"gitId":"yicheng-toh"},"content":" void getCurrentValue_initialiseCommonArgs_expectZero() {","lastModifiedDate":"2023-10-10"},{"lineNumber":26,"author":{"gitId":"yicheng-toh"},"content":" DietGoal proteinGoal \u003d new DietGoal(\"protein\", 10000);","lastModifiedDate":"2023-10-10"},{"lineNumber":27,"author":{"gitId":"yicheng-toh"},"content":" assertEquals(0, proteinGoal.getCurrentValue());","lastModifiedDate":"2023-10-10"},{"lineNumber":28,"author":{"gitId":"yicheng-toh"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":29,"author":{"gitId":"yicheng-toh"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":30,"author":{"gitId":"yicheng-toh"},"content":" @Test","lastModifiedDate":"2023-10-10"},{"lineNumber":31,"author":{"gitId":"yicheng-toh"},"content":" void setCurrentValue() {","lastModifiedDate":"2023-10-10"},{"lineNumber":32,"author":{"gitId":"yicheng-toh"},"content":" DietGoal proteinGoal \u003d new DietGoal(\"protein\", 10000);","lastModifiedDate":"2023-10-10"},{"lineNumber":33,"author":{"gitId":"yicheng-toh"},"content":" proteinGoal.setCurrentValue(20);","lastModifiedDate":"2023-10-10"},{"lineNumber":34,"author":{"gitId":"yicheng-toh"},"content":" assertEquals(20, proteinGoal.getCurrentValue());","lastModifiedDate":"2023-10-10"},{"lineNumber":35,"author":{"gitId":"yicheng-toh"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":36,"author":{"gitId":"yicheng-toh"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":37,"author":{"gitId":"yicheng-toh"},"content":" @Test","lastModifiedDate":"2023-10-10"},{"lineNumber":38,"author":{"gitId":"yicheng-toh"},"content":" void getIsGoalAchieved_currentValueGreaterThanTargetValue_expectTrue() {","lastModifiedDate":"2023-10-10"},{"lineNumber":39,"author":{"gitId":"yicheng-toh"},"content":" DietGoal proteinGoal \u003d new DietGoal(\"protein\", 10000);","lastModifiedDate":"2023-10-10"},{"lineNumber":40,"author":{"gitId":"yicheng-toh"},"content":" proteinGoal.setCurrentValue(20000);","lastModifiedDate":"2023-10-10"},{"lineNumber":41,"author":{"gitId":"yicheng-toh"},"content":" assertTrue(proteinGoal.getIsGoalAchieved());","lastModifiedDate":"2023-10-10"},{"lineNumber":42,"author":{"gitId":"yicheng-toh"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":43,"author":{"gitId":"yicheng-toh"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":44,"author":{"gitId":"yicheng-toh"},"content":" @Test","lastModifiedDate":"2023-10-10"},{"lineNumber":45,"author":{"gitId":"yicheng-toh"},"content":" void getIsGoalAchieved_currentValueEqualToTargetValue_expectTrue() {","lastModifiedDate":"2023-10-10"},{"lineNumber":46,"author":{"gitId":"yicheng-toh"},"content":" DietGoal proteinGoal \u003d new DietGoal(\"protein\", 10000);","lastModifiedDate":"2023-10-10"},{"lineNumber":47,"author":{"gitId":"yicheng-toh"},"content":" proteinGoal.setCurrentValue(10000);","lastModifiedDate":"2023-10-10"},{"lineNumber":48,"author":{"gitId":"yicheng-toh"},"content":" assertTrue(proteinGoal.getIsGoalAchieved());","lastModifiedDate":"2023-10-10"},{"lineNumber":49,"author":{"gitId":"yicheng-toh"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":50,"author":{"gitId":"yicheng-toh"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":51,"author":{"gitId":"yicheng-toh"},"content":" @Test","lastModifiedDate":"2023-10-10"},{"lineNumber":52,"author":{"gitId":"yicheng-toh"},"content":" void getIsGoalAchieved_currentValueLesserThanTargetValue_expectFalse() {","lastModifiedDate":"2023-10-10"},{"lineNumber":53,"author":{"gitId":"yicheng-toh"},"content":" DietGoal proteinGoal \u003d new DietGoal(\"protein\", 10000);","lastModifiedDate":"2023-10-10"},{"lineNumber":54,"author":{"gitId":"yicheng-toh"},"content":" proteinGoal.setCurrentValue(100);","lastModifiedDate":"2023-10-10"},{"lineNumber":55,"author":{"gitId":"yicheng-toh"},"content":" assertFalse(proteinGoal.getIsGoalAchieved());","lastModifiedDate":"2023-10-10"},{"lineNumber":56,"author":{"gitId":"yicheng-toh"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":57,"author":{"gitId":"yicheng-toh"},"content":"","lastModifiedDate":"2023-10-10"},{"lineNumber":58,"author":{"gitId":"yicheng-toh"},"content":" @Test","lastModifiedDate":"2023-10-10"},{"lineNumber":59,"author":{"gitId":"yicheng-toh"},"content":" void testToString_initialiseCommonArgs_expectCorrectFormat() {","lastModifiedDate":"2023-10-10"},{"lineNumber":60,"author":{"gitId":"yicheng-toh"},"content":" DietGoal proteinGoal \u003d new DietGoal(\"protein\", 10000);","lastModifiedDate":"2023-10-10"},{"lineNumber":61,"author":{"gitId":"yicheng-toh"},"content":" assertEquals(\"protein intake progress: (0/10000)\\n\", proteinGoal.toString());","lastModifiedDate":"2023-10-10"},{"lineNumber":62,"author":{"gitId":"yicheng-toh"},"content":" }","lastModifiedDate":"2023-10-10"},{"lineNumber":63,"author":{"gitId":"yicheng-toh"},"content":"}","lastModifiedDate":"2023-10-10"}],"authorContributionMap":{"yicheng-toh":63}}] diff --git a/AY2324S1-CS2113-T17-1_tp_master/commits.json b/AY2324S1-CS2113-T17-1_tp_master/commits.json index 3588f30..e8a8334 100644 --- a/AY2324S1-CS2113-T17-1_tp_master/commits.json +++ b/AY2324S1-CS2113-T17-1_tp_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"skylee03":[{"date":"2023-10-05","commitResults":[{"hash":"0b24d95bb5dcdbe7f53c0dd57ecd3e991bca0fba","isMergeCommit":false,"messageTitle":"Update skylee03 in AboutUs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":13,"deletions":7}}},{"hash":"8ad36b4ca9d2ccd786c5e20b5c8240bc2ca15211","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027upstream/master\u0027 into skylee03-AboutUs","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"23829d9a0b09e12b0f8f162d5d87add4f6ab4a63","isMergeCommit":true,"messageTitle":"Merge pull request #4 from skylee03/skylee03-AboutUs","messageBody":"Update skylee03 in AboutUs","fileTypesAndContributionMap":{}}]},{"date":"2023-10-08","commitResults":[{"hash":"c3134ce83d36393de4d6cb68d6340f07ebd6b9b0","isMergeCommit":false,"messageTitle":"Add CLI interaction","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":253,"deletions":21},"other":{"insertions":2,"deletions":2}}},{"hash":"135bb1b04338c2e0253592c8342d81b54c82595a","isMergeCommit":false,"messageTitle":"Update build.gradle","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":2,"deletions":2}}},{"hash":"0481e59c5747ab3d43fa6b51a3e7c7d864054ca5","isMergeCommit":false,"messageTitle":"Create packages/classes for commands and data","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":164,"deletions":5}}},{"hash":"8cb6c0a847e3eb76064ffce3ace232ec69d49699","isMergeCommit":false,"messageTitle":"Add ParserTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":40,"deletions":12}}}]}],"DaDevChia":[{"date":"2023-10-05","commitResults":[{"hash":"0b6a61ab5f9e012eab2a34c0a65593eb3ee747db","isMergeCommit":false,"messageTitle":"Added profile information","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"0694bcffcee38aa324b0dedbaaf61fa8b89ad035","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into dylanChia-AboutUs","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"9bed8b4b05c9f4ac170143e58c4c73d268e03d1b","isMergeCommit":true,"messageTitle":"Merge pull request #5 from DaDevChia/dylanChia-AboutUs","messageBody":"Added profile information","fileTypesAndContributionMap":{}}]},{"date":"2023-10-10","commitResults":[{"hash":"e31e4398411fe06ef751b8432a69c3d71b25c757","isMergeCommit":true,"messageTitle":"Merge pull request #8 from skylee03/cli-interaction","messageBody":"Add CLI interaction","fileTypesAndContributionMap":{}}]}],"AlWo223":[{"date":"2023-10-05","commitResults":[{"hash":"d1830be8fa3c9af05ee0c009b1e7e57fefed93d8","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"cae7a967c15901f3c6c233cc6d5d43d26b914577","isMergeCommit":false,"messageTitle":"test forking","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":7,"deletions":7}}},{"hash":"446cc7162d1d868e5a3050a324ec45953fc26a3a","isMergeCommit":true,"messageTitle":"Merge pull request #1 from AlWo223/devalex","messageBody":"test forking","fileTypesAndContributionMap":{}}]}],"yicheng-toh":[{"date":"2023-10-05","commitResults":[{"hash":"6ef5fd0adac3dbc719b13dbf2b2ab713ac1be1ba","isMergeCommit":false,"messageTitle":"Add profile for yi cheng","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":11,"deletions":5}}},{"hash":"9bd5f18d45380e4064736e7e2d522e4bb53d9eb2","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/AY2324S1-CS2113-T17-1/tp","messageBody":"# Conflicts:\n#\tdocs/AboutUs.md\n","fileTypesAndContributionMap":{}},{"hash":"57a806539f9f12400c7873eb0848e0a808657e68","isMergeCommit":true,"messageTitle":"Merge pull request #2 from yicheng-toh/master","messageBody":"Add profile for yi cheng","fileTypesAndContributionMap":{}}]},{"date":"2023-10-09","commitResults":[{"hash":"00aa40a7cd4f49250b89e8da6e405912972f4f99","isMergeCommit":false,"messageTitle":"Adjust the format of the table to resolve warning from intellij","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":7,"deletions":7}}},{"hash":"9db4478dbe4192b8579a7f29fb22b9c8e3ee12af","isMergeCommit":true,"messageTitle":"Merge pull request #13 from yicheng-toh/documents","messageBody":"Edit table format for AboutUs.md","fileTypesAndContributionMap":{}}]}],"nihalzp":[{"date":"2023-10-05","commitResults":[{"hash":"5333d4cf1c8a9b0ea1a9ec084892c14dea7d53b2","isMergeCommit":false,"messageTitle":"Add individual info","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":7,"deletions":7}}},{"hash":"a705a999b30431c68e39f5b0167f9b66b89debaf","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into nihalzp-AboutUs","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"ca99d34683f1a8b4ffdca5fa6dbfdf33eb4e6afb","isMergeCommit":true,"messageTitle":"Merge pull request #3 from nihalzp/nihalzp-AboutUs","messageBody":"Add Individual Info - nihalzp","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"skylee03":{"docs":6,"functional-code":412,"test-code":40,"other":2},"DaDevChia":{"docs":0,"functional-code":0,"test-code":0},"AlWo223":{"docs":1,"functional-code":0,"test-code":0},"yicheng-toh":{"docs":14,"functional-code":0,"test-code":0},"nihalzp":{"docs":0,"functional-code":0,"test-code":0}},"authorContributionVariance":{"skylee03":12579.619,"DaDevChia":0.19944598,"AlWo223":12.764543,"yicheng-toh":21.2964,"nihalzp":9.772854},"authorDisplayNameMap":{"skylee03":"CS2113-T17-1 YANG..TIAN","DaDevChia":"CS2113-T17-1 DYLA..TIAN","AlWo223":"CS2113-T17-1 WOLT..LIUS","yicheng-toh":"CS2113-T17-1 TOH ..HENG","nihalzp":"CS2113-T17-1 NIHA..IAJI"}} +{"authorDailyContributionsMap":{"skylee03":[{"date":"2023-10-05","commitResults":[{"hash":"0b24d95bb5dcdbe7f53c0dd57ecd3e991bca0fba","isMergeCommit":false,"messageTitle":"Update skylee03 in AboutUs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":13,"deletions":7}}},{"hash":"8ad36b4ca9d2ccd786c5e20b5c8240bc2ca15211","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027upstream/master\u0027 into skylee03-AboutUs","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"23829d9a0b09e12b0f8f162d5d87add4f6ab4a63","isMergeCommit":true,"messageTitle":"Merge pull request #4 from skylee03/skylee03-AboutUs","messageBody":"Update skylee03 in AboutUs","fileTypesAndContributionMap":{}}]},{"date":"2023-10-08","commitResults":[{"hash":"c3134ce83d36393de4d6cb68d6340f07ebd6b9b0","isMergeCommit":false,"messageTitle":"Add CLI interaction","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":253,"deletions":21},"other":{"insertions":2,"deletions":2}}},{"hash":"135bb1b04338c2e0253592c8342d81b54c82595a","isMergeCommit":false,"messageTitle":"Update build.gradle","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":2,"deletions":2}}},{"hash":"0481e59c5747ab3d43fa6b51a3e7c7d864054ca5","isMergeCommit":false,"messageTitle":"Create packages/classes for commands and data","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":164,"deletions":5}}},{"hash":"8cb6c0a847e3eb76064ffce3ace232ec69d49699","isMergeCommit":false,"messageTitle":"Add ParserTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":40,"deletions":12}}}]}],"DaDevChia":[{"date":"2023-10-05","commitResults":[{"hash":"0b6a61ab5f9e012eab2a34c0a65593eb3ee747db","isMergeCommit":false,"messageTitle":"Added profile information","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"0694bcffcee38aa324b0dedbaaf61fa8b89ad035","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into dylanChia-AboutUs","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"9bed8b4b05c9f4ac170143e58c4c73d268e03d1b","isMergeCommit":true,"messageTitle":"Merge pull request #5 from DaDevChia/dylanChia-AboutUs","messageBody":"Added profile information","fileTypesAndContributionMap":{}}]},{"date":"2023-10-10","commitResults":[{"hash":"e31e4398411fe06ef751b8432a69c3d71b25c757","isMergeCommit":true,"messageTitle":"Merge pull request #8 from skylee03/cli-interaction","messageBody":"Add CLI interaction","fileTypesAndContributionMap":{}}]}],"AlWo223":[{"date":"2023-10-05","commitResults":[{"hash":"d1830be8fa3c9af05ee0c009b1e7e57fefed93d8","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"cae7a967c15901f3c6c233cc6d5d43d26b914577","isMergeCommit":false,"messageTitle":"test forking","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":7,"deletions":7}}},{"hash":"446cc7162d1d868e5a3050a324ec45953fc26a3a","isMergeCommit":true,"messageTitle":"Merge pull request #1 from AlWo223/devalex","messageBody":"test forking","fileTypesAndContributionMap":{}}]}],"yicheng-toh":[{"date":"2023-10-05","commitResults":[{"hash":"6ef5fd0adac3dbc719b13dbf2b2ab713ac1be1ba","isMergeCommit":false,"messageTitle":"Add profile for yi cheng","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":11,"deletions":5}}},{"hash":"9bd5f18d45380e4064736e7e2d522e4bb53d9eb2","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/AY2324S1-CS2113-T17-1/tp","messageBody":"# Conflicts:\n#\tdocs/AboutUs.md\n","fileTypesAndContributionMap":{}},{"hash":"57a806539f9f12400c7873eb0848e0a808657e68","isMergeCommit":true,"messageTitle":"Merge pull request #2 from yicheng-toh/master","messageBody":"Add profile for yi cheng","fileTypesAndContributionMap":{}}]},{"date":"2023-10-09","commitResults":[{"hash":"00aa40a7cd4f49250b89e8da6e405912972f4f99","isMergeCommit":false,"messageTitle":"Adjust the format of the table to resolve warning from intellij","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":7,"deletions":7}}},{"hash":"9db4478dbe4192b8579a7f29fb22b9c8e3ee12af","isMergeCommit":true,"messageTitle":"Merge pull request #13 from yicheng-toh/documents","messageBody":"Edit table format for AboutUs.md","fileTypesAndContributionMap":{}}]},{"date":"2023-10-10","commitResults":[{"hash":"834e1ea90ff1c97a9b1cbaa7e4e8fb4d7abcc14b","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/AY2324S1-CS2113-T17-1/tp","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"a4d91b2113c0354343357ff8e7e7726363da2a1d","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into goals","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"5b01105df5ebb31111aad46bddda02776f17e218","isMergeCommit":false,"messageTitle":"Add Diet Goal Class and Diet Goal List Class","messageBody":"Fixes #10\n","fileTypesAndContributionMap":{"functional-code":{"insertions":82,"deletions":0},"test-code":{"insertions":102,"deletions":0}}},{"hash":"a6dc7e822f05482d9be899688800bc6c86e65a25","isMergeCommit":false,"messageTitle":"Add delete functionality to DietGoalList","messageBody":"Fixes #11\n","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":0},"test-code":{"insertions":17,"deletions":2}}},{"hash":"75db1b825ac2cf0540f12079d025060c6bbfe19b","isMergeCommit":false,"messageTitle":"Revert \"Add delete functionality to DietGoalList\"","messageBody":"This reverts commit a6dc7e822f05482d9be899688800bc6c86e65a25.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":4},"test-code":{"insertions":2,"deletions":17}}},{"hash":"833207c30435d8f92a6ee8b459efc0337403084e","isMergeCommit":false,"messageTitle":"Improve code quality to pass build test","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":16,"deletions":14}}}]},{"date":"2023-10-11","commitResults":[{"hash":"e485d117db0d7ff75bd58853df24311d78160ddc","isMergeCommit":false,"messageTitle":"Remove redundant newlines","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":7},"test-code":{"insertions":0,"deletions":5}}},{"hash":"cf8a65f00e5865381818da68829aee12cb12788f","isMergeCommit":false,"messageTitle":"Revert \"Remove redundant newlines\"","messageBody":"This reverts commit e485d117db0d7ff75bd58853df24311d78160ddc.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":7,"deletions":0},"test-code":{"insertions":5,"deletions":0}}},{"hash":"5fe5f02580038a546be18b69df69a042fd547467","isMergeCommit":false,"messageTitle":"Apply suggestions from code review","messageBody":"Remove redundant newlines as suggested by skylee03\n\nCo-authored-by: Yang Ming-Tian \u003c1178715749@qq.com\u003e","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":4},"test-code":{"insertions":0,"deletions":4}}},{"hash":"35b51d3c961f239a69d6a7e2622813eb9fd764b1","isMergeCommit":true,"messageTitle":"Merge pull request #17 from yicheng-toh/goals","messageBody":"Add DietGoal Class and DietGoalList Class","fileTypesAndContributionMap":{}}]}],"nihalzp":[{"date":"2023-10-05","commitResults":[{"hash":"5333d4cf1c8a9b0ea1a9ec084892c14dea7d53b2","isMergeCommit":false,"messageTitle":"Add individual info","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":7,"deletions":7}}},{"hash":"a705a999b30431c68e39f5b0167f9b66b89debaf","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into nihalzp-AboutUs","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"ca99d34683f1a8b4ffdca5fa6dbfdf33eb4e6afb","isMergeCommit":true,"messageTitle":"Merge pull request #3 from nihalzp/nihalzp-AboutUs","messageBody":"Add Individual Info - nihalzp","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"skylee03":{"docs":6,"functional-code":412,"test-code":40,"other":2},"DaDevChia":{"docs":0,"functional-code":0,"test-code":0},"AlWo223":{"docs":1,"functional-code":0,"test-code":0},"yicheng-toh":{"docs":14,"functional-code":80,"test-code":98},"nihalzp":{"docs":0,"functional-code":0,"test-code":0}},"authorContributionVariance":{"skylee03":11986.629,"DaDevChia":0.19,"AlWo223":12.16,"yicheng-toh":3194.5898,"nihalzp":9.310002},"authorDisplayNameMap":{"skylee03":"CS2113-T17-1 YANG..TIAN","DaDevChia":"CS2113-T17-1 DYLA..TIAN","AlWo223":"CS2113-T17-1 WOLT..LIUS","yicheng-toh":"CS2113-T17-1 TOH ..HENG","nihalzp":"CS2113-T17-1 NIHA..IAJI"}} diff --git a/AY2324S1-CS2113-T18-2_tp_master/authorship.json b/AY2324S1-CS2113-T18-2_tp_master/authorship.json index 4383de9..1723598 100644 --- a/AY2324S1-CS2113-T18-2_tp_master/authorship.json +++ b/AY2324S1-CS2113-T18-2_tp_master/authorship.json @@ -1 +1 @@ -[{"path":"build.gradle","fileType":"other","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"plugins {","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":" id \u0027java\u0027","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":" id \u0027application\u0027","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":" id \u0027checkstyle\u0027","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":" id \u0027com.github.johnrengelman.shadow\u0027 version \u00277.1.2\u0027","lastModifiedDate":"2022-06-17"},{"lineNumber":6,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"repositories {","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":" mavenCentral()","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":"dependencies {","lastModifiedDate":"2020-05-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":" testImplementation group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-api\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":" testRuntimeOnly group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-engine\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":15,"author":{"gitId":"wwweert123"},"content":" implementation group: \u0027com.googlecode.json-simple\u0027, name: \u0027json-simple\u0027, version: \u00271.1.1\u0027","lastModifiedDate":"2023-10-08"},{"lineNumber":16,"author":{"gitId":"wwweert123"},"content":" implementation group: \u0027org.apache.commons\u0027, name: \u0027commons-lang3\u0027, version: \u00273.0\u0027","lastModifiedDate":"2023-10-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"ryan1604"},"content":" mainClass.set(\"seedu.financialplanner.FinancialPlanner\")","lastModifiedDate":"2023-10-07"},{"lineNumber":35,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":" archiveBaseName.set(\"duke\")","lastModifiedDate":"2023-09-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" archiveClassifier.set(\"\")","lastModifiedDate":"2023-09-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":"checkstyle {","lastModifiedDate":"2020-05-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":" toolVersion \u003d \u002710.2\u0027","lastModifiedDate":"2022-04-29"},{"lineNumber":44,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":46,"author":{"gitId":"-"},"content":"run{","lastModifiedDate":"2020-05-25"},{"lineNumber":47,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":48,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"wwweert123":2,"-":45,"ryan1604":1}},{"path":"docs/AboutUs.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"# About us","lastModifiedDate":"2020-05-24"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"Display | Name | Github Profile | Portfolio ","lastModifiedDate":"2020-05-24"},{"lineNumber":4,"author":{"gitId":"NeoMinWei"},"content":"--------|:-----------:|:--------------:|:---------:","lastModifiedDate":"2023-10-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"![](https://via.placeholder.com/100.png?text\u003dPhoto) | John Doe | [Github](https://github.com/) | [Portfolio](docs/team/johndoe.md)","lastModifiedDate":"2020-05-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":"![](https://via.placeholder.com/100.png?text\u003dPhoto) | Don Joe | [Github](https://github.com/) | [Portfolio](docs/team/johndoe.md)","lastModifiedDate":"2020-05-24"},{"lineNumber":7,"author":{"gitId":"ryan1604"},"content":"![](https://via.placeholder.com/100.png?text\u003dPhoto) | Ryan Chua | [Github](https://github.com/ryan1604) | [Portfolio](docs/team/ryanchua.md)","lastModifiedDate":"2023-10-05"},{"lineNumber":8,"author":{"gitId":"NeoMinWei"},"content":"![](https://via.placeholder.com/100.png?text\u003dPhoto) | Neo Min Wei | [Github](https://github.com/NeoMinWei) | [Portfolio](docs/team/NeoMinWei.md)","lastModifiedDate":"2023-10-05"},{"lineNumber":9,"author":{"gitId":"wwweert123"},"content":"![](https://via.placeholder.com/100.png?text\u003dPhoto) | Frederick | [Github](https://github.com/) | [Portfolio](docs/team/frederick.md)","lastModifiedDate":"2023-10-05"},{"lineNumber":10,"author":{"gitId":"NeoMinWei"},"content":"","lastModifiedDate":"2023-10-05"}],"authorContributionMap":{"wwweert123":1,"NeoMinWei":3,"-":5,"ryan1604":1}},{"path":"docs/team/NeoMinWei.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"NeoMinWei"},"content":"# Neo Min Wei - Project Portfolio Page","lastModifiedDate":"2023-10-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"## Overview","lastModifiedDate":"2020-05-24"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-24"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":"### Summary of Contributions","lastModifiedDate":"2020-05-24"}],"authorContributionMap":{"NeoMinWei":1,"-":5}},{"path":"docs/team/frederick.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"wwweert123"},"content":"I am Frederick ","lastModifiedDate":"2023-10-05"},{"lineNumber":2,"author":{"gitId":"wwweert123"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":3,"author":{"gitId":"wwweert123"},"content":"Hello ","lastModifiedDate":"2023-10-05"},{"lineNumber":4,"author":{"gitId":"wwweert123"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":5,"author":{"gitId":"wwweert123"},"content":"I am from this team!","lastModifiedDate":"2023-10-05"}],"authorContributionMap":{"wwweert123":5}},{"path":"src/main/java/seedu/financialplanner/FinancialPlanner.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ryan1604"},"content":"package seedu.financialplanner;","lastModifiedDate":"2023-10-07"},{"lineNumber":2,"author":{"gitId":"ryan1604"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":3,"author":{"gitId":"ryan1604"},"content":"import seedu.financialplanner.commands.Command;","lastModifiedDate":"2023-10-07"},{"lineNumber":4,"author":{"gitId":"ryan1604"},"content":"import seedu.financialplanner.commands.Exit;","lastModifiedDate":"2023-10-07"},{"lineNumber":5,"author":{"gitId":"wwweert123"},"content":"import seedu.financialplanner.investments.WatchList;","lastModifiedDate":"2023-10-09"},{"lineNumber":6,"author":{"gitId":"NeoMinWei"},"content":"import seedu.financialplanner.list.FinancialList;","lastModifiedDate":"2023-10-08"},{"lineNumber":7,"author":{"gitId":"ryan1604"},"content":"import seedu.financialplanner.utils.Parser;","lastModifiedDate":"2023-10-07"},{"lineNumber":8,"author":{"gitId":"ryan1604"},"content":"import seedu.financialplanner.utils.Ui;","lastModifiedDate":"2023-10-07"},{"lineNumber":9,"author":{"gitId":"ryan1604"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":10,"author":{"gitId":"ryan1604"},"content":"public class FinancialPlanner {","lastModifiedDate":"2023-10-07"},{"lineNumber":11,"author":{"gitId":"ryan1604"},"content":" private Ui ui;","lastModifiedDate":"2023-10-07"},{"lineNumber":12,"author":{"gitId":"wwweert123"},"content":" private WatchList watchList;","lastModifiedDate":"2023-10-09"},{"lineNumber":13,"author":{"gitId":"NeoMinWei"},"content":" private FinancialList financialList;","lastModifiedDate":"2023-10-08"},{"lineNumber":14,"author":{"gitId":"ryan1604"},"content":" public FinancialPlanner() {","lastModifiedDate":"2023-10-07"},{"lineNumber":15,"author":{"gitId":"ryan1604"},"content":" ui \u003d new Ui();","lastModifiedDate":"2023-10-07"},{"lineNumber":16,"author":{"gitId":"NeoMinWei"},"content":" financialList \u003d new FinancialList();","lastModifiedDate":"2023-10-08"},{"lineNumber":17,"author":{"gitId":"wwweert123"},"content":" watchList \u003d new WatchList();","lastModifiedDate":"2023-10-09"},{"lineNumber":18,"author":{"gitId":"ryan1604"},"content":" }","lastModifiedDate":"2023-10-07"},{"lineNumber":19,"author":{"gitId":"ryan1604"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":20,"author":{"gitId":"ryan1604"},"content":" public void run() {","lastModifiedDate":"2023-10-07"},{"lineNumber":21,"author":{"gitId":"ryan1604"},"content":" ui.welcomeMessage();","lastModifiedDate":"2023-10-07"},{"lineNumber":22,"author":{"gitId":"ryan1604"},"content":" String input;","lastModifiedDate":"2023-10-07"},{"lineNumber":23,"author":{"gitId":"ryan1604"},"content":" Command command \u003d null;","lastModifiedDate":"2023-10-07"},{"lineNumber":24,"author":{"gitId":"ryan1604"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":25,"author":{"gitId":"ryan1604"},"content":" while (!(command instanceof Exit)) {","lastModifiedDate":"2023-10-07"},{"lineNumber":26,"author":{"gitId":"ryan1604"},"content":" input \u003d ui.input();","lastModifiedDate":"2023-10-07"},{"lineNumber":27,"author":{"gitId":"ryan1604"},"content":" command \u003d Parser.parse(input);","lastModifiedDate":"2023-10-07"},{"lineNumber":28,"author":{"gitId":"wwweert123"},"content":" command.execute(ui, financialList, watchList);","lastModifiedDate":"2023-10-09"},{"lineNumber":29,"author":{"gitId":"ryan1604"},"content":" }","lastModifiedDate":"2023-10-07"},{"lineNumber":30,"author":{"gitId":"ryan1604"},"content":" ui.exitMessage();","lastModifiedDate":"2023-10-07"},{"lineNumber":31,"author":{"gitId":"ryan1604"},"content":" }","lastModifiedDate":"2023-10-07"},{"lineNumber":32,"author":{"gitId":"ryan1604"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":33,"author":{"gitId":"ryan1604"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-10-07"},{"lineNumber":34,"author":{"gitId":"ryan1604"},"content":" new FinancialPlanner().run();","lastModifiedDate":"2023-10-07"},{"lineNumber":35,"author":{"gitId":"ryan1604"},"content":" }","lastModifiedDate":"2023-10-07"},{"lineNumber":36,"author":{"gitId":"ryan1604"},"content":"}","lastModifiedDate":"2023-10-07"}],"authorContributionMap":{"wwweert123":4,"NeoMinWei":3,"ryan1604":29}},{"path":"src/main/java/seedu/financialplanner/commands/Command.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ryan1604"},"content":"package seedu.financialplanner.commands;","lastModifiedDate":"2023-10-07"},{"lineNumber":2,"author":{"gitId":"ryan1604"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":3,"author":{"gitId":"wwweert123"},"content":"import seedu.financialplanner.investments.WatchList;","lastModifiedDate":"2023-10-09"},{"lineNumber":4,"author":{"gitId":"ryan1604"},"content":"import seedu.financialplanner.utils.Ui;","lastModifiedDate":"2023-10-07"},{"lineNumber":5,"author":{"gitId":"wwweert123"},"content":"import seedu.financialplanner.list.FinancialList;","lastModifiedDate":"2023-10-09"},{"lineNumber":6,"author":{"gitId":"ryan1604"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":7,"author":{"gitId":"ryan1604"},"content":"public class Command {","lastModifiedDate":"2023-10-07"},{"lineNumber":8,"author":{"gitId":"wwweert123"},"content":" public void execute(Ui ui, FinancialList financialList, WatchList watchList) {","lastModifiedDate":"2023-10-09"},{"lineNumber":9,"author":{"gitId":"ryan1604"},"content":" }","lastModifiedDate":"2023-10-07"},{"lineNumber":10,"author":{"gitId":"ryan1604"},"content":"}","lastModifiedDate":"2023-10-07"}],"authorContributionMap":{"wwweert123":3,"ryan1604":7}},{"path":"src/main/java/seedu/financialplanner/commands/Entry.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"NeoMinWei"},"content":"package seedu.financialplanner.commands;","lastModifiedDate":"2023-10-08"},{"lineNumber":2,"author":{"gitId":"NeoMinWei"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":3,"author":{"gitId":"wwweert123"},"content":"import seedu.financialplanner.investments.WatchList;","lastModifiedDate":"2023-10-09"},{"lineNumber":4,"author":{"gitId":"NeoMinWei"},"content":"import seedu.financialplanner.list.FinancialList;","lastModifiedDate":"2023-10-08"},{"lineNumber":5,"author":{"gitId":"ryan1604"},"content":"import seedu.financialplanner.utils.Ui;","lastModifiedDate":"2023-10-09"},{"lineNumber":6,"author":{"gitId":"NeoMinWei"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":7,"author":{"gitId":"NeoMinWei"},"content":"public class Entry extends Command{","lastModifiedDate":"2023-10-08"},{"lineNumber":8,"author":{"gitId":"NeoMinWei"},"content":" private static final String INCOME \u003d \"income\";","lastModifiedDate":"2023-10-08"},{"lineNumber":9,"author":{"gitId":"NeoMinWei"},"content":" private static final String EXPENSE \u003d \"expense\";","lastModifiedDate":"2023-10-08"},{"lineNumber":10,"author":{"gitId":"ryan1604"},"content":" protected String input;","lastModifiedDate":"2023-10-09"},{"lineNumber":11,"author":{"gitId":"NeoMinWei"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":12,"author":{"gitId":"ryan1604"},"content":" public Entry(String input) {","lastModifiedDate":"2023-10-09"},{"lineNumber":13,"author":{"gitId":"ryan1604"},"content":" this.input \u003d input;","lastModifiedDate":"2023-10-09"},{"lineNumber":14,"author":{"gitId":"NeoMinWei"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":15,"author":{"gitId":"NeoMinWei"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":16,"author":{"gitId":"ryan1604"},"content":" private int determineRecur(String parameters) {","lastModifiedDate":"2023-10-09"},{"lineNumber":17,"author":{"gitId":"NeoMinWei"},"content":" if (parameters.contains(\"r/\")) {","lastModifiedDate":"2023-10-08"},{"lineNumber":18,"author":{"gitId":"NeoMinWei"},"content":" int indexOfRecur \u003d parameters.indexOf(\"r/\");","lastModifiedDate":"2023-10-08"},{"lineNumber":19,"author":{"gitId":"NeoMinWei"},"content":" String recur \u003d parameters.substring(indexOfRecur + 2).trim();","lastModifiedDate":"2023-10-08"},{"lineNumber":20,"author":{"gitId":"NeoMinWei"},"content":" return Integer.parseInt(recur);","lastModifiedDate":"2023-10-08"},{"lineNumber":21,"author":{"gitId":"NeoMinWei"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":22,"author":{"gitId":"NeoMinWei"},"content":" return 0;","lastModifiedDate":"2023-10-08"},{"lineNumber":23,"author":{"gitId":"NeoMinWei"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":24,"author":{"gitId":"NeoMinWei"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":25,"author":{"gitId":"ryan1604"},"content":" @Override","lastModifiedDate":"2023-10-09"},{"lineNumber":26,"author":{"gitId":"wwweert123"},"content":" public void execute(Ui ui, FinancialList list, WatchList watchList) {","lastModifiedDate":"2023-10-09"},{"lineNumber":27,"author":{"gitId":"ryan1604"},"content":" String[] split \u003d input.split(\" \", 2);","lastModifiedDate":"2023-10-09"},{"lineNumber":28,"author":{"gitId":"ryan1604"},"content":" String entryType \u003d split[0];","lastModifiedDate":"2023-10-09"},{"lineNumber":29,"author":{"gitId":"ryan1604"},"content":" String parameters \u003d split[1];","lastModifiedDate":"2023-10-09"},{"lineNumber":30,"author":{"gitId":"ryan1604"},"content":" int recur \u003d determineRecur(parameters);","lastModifiedDate":"2023-10-09"},{"lineNumber":31,"author":{"gitId":"NeoMinWei"},"content":" int indexOfAmount \u003d parameters.indexOf(\"a/\");","lastModifiedDate":"2023-10-08"},{"lineNumber":32,"author":{"gitId":"NeoMinWei"},"content":" int indexOfType \u003d parameters.indexOf(\"t/\");","lastModifiedDate":"2023-10-08"},{"lineNumber":33,"author":{"gitId":"NeoMinWei"},"content":" double value \u003d Double.parseDouble(parameters.substring(indexOfAmount + 2, indexOfType).trim());","lastModifiedDate":"2023-10-08"},{"lineNumber":34,"author":{"gitId":"NeoMinWei"},"content":" String type;","lastModifiedDate":"2023-10-08"},{"lineNumber":35,"author":{"gitId":"NeoMinWei"},"content":" if (recur \u003d\u003d 0) {","lastModifiedDate":"2023-10-08"},{"lineNumber":36,"author":{"gitId":"NeoMinWei"},"content":" type \u003d parameters.substring(indexOfType + 2).trim();","lastModifiedDate":"2023-10-08"},{"lineNumber":37,"author":{"gitId":"NeoMinWei"},"content":" } else {","lastModifiedDate":"2023-10-08"},{"lineNumber":38,"author":{"gitId":"NeoMinWei"},"content":" int indexOfRecur \u003d parameters.indexOf(\"r/\");","lastModifiedDate":"2023-10-08"},{"lineNumber":39,"author":{"gitId":"NeoMinWei"},"content":" type \u003d parameters.substring(indexOfType + 2, indexOfRecur).trim();","lastModifiedDate":"2023-10-08"},{"lineNumber":40,"author":{"gitId":"NeoMinWei"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":41,"author":{"gitId":"NeoMinWei"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":42,"author":{"gitId":"NeoMinWei"},"content":" switch (entryType) {","lastModifiedDate":"2023-10-08"},{"lineNumber":43,"author":{"gitId":"NeoMinWei"},"content":" case INCOME:","lastModifiedDate":"2023-10-08"},{"lineNumber":44,"author":{"gitId":"NeoMinWei"},"content":" list.addIncome(value, type, recur);","lastModifiedDate":"2023-10-08"},{"lineNumber":45,"author":{"gitId":"NeoMinWei"},"content":" break;","lastModifiedDate":"2023-10-08"},{"lineNumber":46,"author":{"gitId":"NeoMinWei"},"content":" case EXPENSE:","lastModifiedDate":"2023-10-08"},{"lineNumber":47,"author":{"gitId":"NeoMinWei"},"content":" list.addExpense(value, type, recur);","lastModifiedDate":"2023-10-08"},{"lineNumber":48,"author":{"gitId":"NeoMinWei"},"content":" break;","lastModifiedDate":"2023-10-08"},{"lineNumber":49,"author":{"gitId":"NeoMinWei"},"content":" default:","lastModifiedDate":"2023-10-08"},{"lineNumber":50,"author":{"gitId":"ryan1604"},"content":" ui.showMessage(\"Unidentified entry.\");","lastModifiedDate":"2023-10-09"},{"lineNumber":51,"author":{"gitId":"NeoMinWei"},"content":" break;","lastModifiedDate":"2023-10-08"},{"lineNumber":52,"author":{"gitId":"NeoMinWei"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":53,"author":{"gitId":"NeoMinWei"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":54,"author":{"gitId":"NeoMinWei"},"content":"}","lastModifiedDate":"2023-10-08"}],"authorContributionMap":{"wwweert123":2,"NeoMinWei":41,"ryan1604":11}},{"path":"src/main/java/seedu/financialplanner/commands/Exit.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ryan1604"},"content":"package seedu.financialplanner.commands;","lastModifiedDate":"2023-10-07"},{"lineNumber":2,"author":{"gitId":"ryan1604"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":3,"author":{"gitId":"wwweert123"},"content":"import seedu.financialplanner.investments.WatchList;","lastModifiedDate":"2023-10-09"},{"lineNumber":4,"author":{"gitId":"ryan1604"},"content":"import seedu.financialplanner.list.FinancialList;","lastModifiedDate":"2023-10-09"},{"lineNumber":5,"author":{"gitId":"ryan1604"},"content":"import seedu.financialplanner.utils.Ui;","lastModifiedDate":"2023-10-07"},{"lineNumber":6,"author":{"gitId":"ryan1604"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":7,"author":{"gitId":"ryan1604"},"content":"public class Exit extends Command {","lastModifiedDate":"2023-10-07"},{"lineNumber":8,"author":{"gitId":"ryan1604"},"content":" public Exit() {","lastModifiedDate":"2023-10-07"},{"lineNumber":9,"author":{"gitId":"ryan1604"},"content":" }","lastModifiedDate":"2023-10-07"},{"lineNumber":10,"author":{"gitId":"ryan1604"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":11,"author":{"gitId":"ryan1604"},"content":" @Override","lastModifiedDate":"2023-10-07"},{"lineNumber":12,"author":{"gitId":"wwweert123"},"content":" public void execute(Ui ui, FinancialList financialList, WatchList watchList) {","lastModifiedDate":"2023-10-09"},{"lineNumber":13,"author":{"gitId":"ryan1604"},"content":" }","lastModifiedDate":"2023-10-07"},{"lineNumber":14,"author":{"gitId":"ryan1604"},"content":"}","lastModifiedDate":"2023-10-07"}],"authorContributionMap":{"wwweert123":2,"ryan1604":12}},{"path":"src/main/java/seedu/financialplanner/commands/Invalid.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ryan1604"},"content":"package seedu.financialplanner.commands;","lastModifiedDate":"2023-10-07"},{"lineNumber":2,"author":{"gitId":"ryan1604"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":3,"author":{"gitId":"wwweert123"},"content":"import seedu.financialplanner.investments.WatchList;","lastModifiedDate":"2023-10-09"},{"lineNumber":4,"author":{"gitId":"ryan1604"},"content":"import seedu.financialplanner.list.FinancialList;","lastModifiedDate":"2023-10-09"},{"lineNumber":5,"author":{"gitId":"ryan1604"},"content":"import seedu.financialplanner.utils.Ui;","lastModifiedDate":"2023-10-07"},{"lineNumber":6,"author":{"gitId":"ryan1604"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":7,"author":{"gitId":"ryan1604"},"content":"public class Invalid extends Command {","lastModifiedDate":"2023-10-07"},{"lineNumber":8,"author":{"gitId":"ryan1604"},"content":" public Invalid() {","lastModifiedDate":"2023-10-07"},{"lineNumber":9,"author":{"gitId":"ryan1604"},"content":" }","lastModifiedDate":"2023-10-07"},{"lineNumber":10,"author":{"gitId":"ryan1604"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":11,"author":{"gitId":"ryan1604"},"content":" @Override","lastModifiedDate":"2023-10-07"},{"lineNumber":12,"author":{"gitId":"wwweert123"},"content":" public void execute(Ui ui, FinancialList financialList, WatchList watchList) {","lastModifiedDate":"2023-10-09"},{"lineNumber":13,"author":{"gitId":"ryan1604"},"content":" ui.showMessage(\"Unknown command. Please try again.\");","lastModifiedDate":"2023-10-09"},{"lineNumber":14,"author":{"gitId":"ryan1604"},"content":" }","lastModifiedDate":"2023-10-07"},{"lineNumber":15,"author":{"gitId":"ryan1604"},"content":"}","lastModifiedDate":"2023-10-07"}],"authorContributionMap":{"wwweert123":2,"ryan1604":13}},{"path":"src/main/java/seedu/financialplanner/commands/WatchListCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"wwweert123"},"content":"package seedu.financialplanner.commands;","lastModifiedDate":"2023-10-09"},{"lineNumber":2,"author":{"gitId":"wwweert123"},"content":"","lastModifiedDate":"2023-10-09"},{"lineNumber":3,"author":{"gitId":"wwweert123"},"content":"import org.json.simple.JSONArray;","lastModifiedDate":"2023-10-09"},{"lineNumber":4,"author":{"gitId":"wwweert123"},"content":"import org.json.simple.JSONObject;","lastModifiedDate":"2023-10-09"},{"lineNumber":5,"author":{"gitId":"wwweert123"},"content":"import seedu.financialplanner.investments.WatchList;","lastModifiedDate":"2023-10-09"},{"lineNumber":6,"author":{"gitId":"wwweert123"},"content":"import seedu.financialplanner.list.FinancialList;","lastModifiedDate":"2023-10-09"},{"lineNumber":7,"author":{"gitId":"wwweert123"},"content":"import seedu.financialplanner.utils.Ui;","lastModifiedDate":"2023-10-09"},{"lineNumber":8,"author":{"gitId":"wwweert123"},"content":"","lastModifiedDate":"2023-10-09"},{"lineNumber":9,"author":{"gitId":"wwweert123"},"content":"public class WatchListCommand extends Command {","lastModifiedDate":"2023-10-09"},{"lineNumber":10,"author":{"gitId":"wwweert123"},"content":" @Override","lastModifiedDate":"2023-10-09"},{"lineNumber":11,"author":{"gitId":"wwweert123"},"content":" public void execute(Ui ui, FinancialList financialList, WatchList watchList) {","lastModifiedDate":"2023-10-09"},{"lineNumber":12,"author":{"gitId":"wwweert123"},"content":" JSONArray stocks \u003d watchList.fetchFMPStockPrices();","lastModifiedDate":"2023-10-09"},{"lineNumber":13,"author":{"gitId":"wwweert123"},"content":" ui.printWatchListHeader();","lastModifiedDate":"2023-10-09"},{"lineNumber":14,"author":{"gitId":"wwweert123"},"content":" for (Object o : stocks) {","lastModifiedDate":"2023-10-09"},{"lineNumber":15,"author":{"gitId":"wwweert123"},"content":" JSONObject stock \u003d (JSONObject) o;","lastModifiedDate":"2023-10-09"},{"lineNumber":16,"author":{"gitId":"wwweert123"},"content":" ui.printStockInfo(stock);","lastModifiedDate":"2023-10-09"},{"lineNumber":17,"author":{"gitId":"wwweert123"},"content":" }","lastModifiedDate":"2023-10-09"},{"lineNumber":18,"author":{"gitId":"wwweert123"},"content":" }","lastModifiedDate":"2023-10-09"},{"lineNumber":19,"author":{"gitId":"wwweert123"},"content":"}","lastModifiedDate":"2023-10-09"}],"authorContributionMap":{"wwweert123":19}},{"path":"src/main/java/seedu/financialplanner/exceptions/FinancialPlannerException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ryan1604"},"content":"package seedu.financialplanner.exceptions;","lastModifiedDate":"2023-10-07"},{"lineNumber":2,"author":{"gitId":"ryan1604"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":3,"author":{"gitId":"ryan1604"},"content":"public class FinancialPlannerException extends Exception {","lastModifiedDate":"2023-10-07"},{"lineNumber":4,"author":{"gitId":"ryan1604"},"content":" public FinancialPlannerException(String message) {","lastModifiedDate":"2023-10-07"},{"lineNumber":5,"author":{"gitId":"ryan1604"},"content":" super(message);","lastModifiedDate":"2023-10-07"},{"lineNumber":6,"author":{"gitId":"ryan1604"},"content":" }","lastModifiedDate":"2023-10-07"},{"lineNumber":7,"author":{"gitId":"ryan1604"},"content":"}","lastModifiedDate":"2023-10-07"}],"authorContributionMap":{"ryan1604":7}},{"path":"src/main/java/seedu/financialplanner/investments/Stock.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"wwweert123"},"content":"package seedu.financialplanner.investments;","lastModifiedDate":"2023-10-08"},{"lineNumber":2,"author":{"gitId":"wwweert123"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":3,"author":{"gitId":"wwweert123"},"content":"import org.json.simple.JSONArray;","lastModifiedDate":"2023-10-08"},{"lineNumber":4,"author":{"gitId":"wwweert123"},"content":"import org.json.simple.JSONObject;","lastModifiedDate":"2023-10-08"},{"lineNumber":5,"author":{"gitId":"wwweert123"},"content":"import org.json.simple.parser.JSONParser;","lastModifiedDate":"2023-10-08"},{"lineNumber":6,"author":{"gitId":"wwweert123"},"content":"import org.json.simple.parser.ParseException;","lastModifiedDate":"2023-10-08"},{"lineNumber":7,"author":{"gitId":"wwweert123"},"content":"import seedu.financialplanner.exceptions.FinancialPlannerException;","lastModifiedDate":"2023-10-08"},{"lineNumber":8,"author":{"gitId":"wwweert123"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":9,"author":{"gitId":"wwweert123"},"content":"import java.io.IOException;","lastModifiedDate":"2023-10-08"},{"lineNumber":10,"author":{"gitId":"wwweert123"},"content":"import java.net.URI;","lastModifiedDate":"2023-10-08"},{"lineNumber":11,"author":{"gitId":"wwweert123"},"content":"import java.net.http.HttpClient;","lastModifiedDate":"2023-10-08"},{"lineNumber":12,"author":{"gitId":"wwweert123"},"content":"import java.net.http.HttpRequest;","lastModifiedDate":"2023-10-08"},{"lineNumber":13,"author":{"gitId":"wwweert123"},"content":"import java.net.http.HttpResponse;","lastModifiedDate":"2023-10-08"},{"lineNumber":14,"author":{"gitId":"wwweert123"},"content":"import java.time.Duration;","lastModifiedDate":"2023-10-08"},{"lineNumber":15,"author":{"gitId":"wwweert123"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":16,"author":{"gitId":"wwweert123"},"content":"public class Stock {","lastModifiedDate":"2023-10-08"},{"lineNumber":17,"author":{"gitId":"wwweert123"},"content":" private String symbol;","lastModifiedDate":"2023-10-08"},{"lineNumber":18,"author":{"gitId":"wwweert123"},"content":" private String market;","lastModifiedDate":"2023-10-08"},{"lineNumber":19,"author":{"gitId":"wwweert123"},"content":" private String stockName;","lastModifiedDate":"2023-10-08"},{"lineNumber":20,"author":{"gitId":"wwweert123"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":21,"author":{"gitId":"wwweert123"},"content":" public Stock(String symbol, String market) {","lastModifiedDate":"2023-10-08"},{"lineNumber":22,"author":{"gitId":"wwweert123"},"content":" this.symbol \u003d symbol;","lastModifiedDate":"2023-10-08"},{"lineNumber":23,"author":{"gitId":"wwweert123"},"content":" this.market \u003d market;","lastModifiedDate":"2023-10-08"},{"lineNumber":24,"author":{"gitId":"wwweert123"},"content":" this.stockName \u003d getStockName(symbol,market);","lastModifiedDate":"2023-10-08"},{"lineNumber":25,"author":{"gitId":"wwweert123"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":26,"author":{"gitId":"wwweert123"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":27,"author":{"gitId":"wwweert123"},"content":" public String getStockName(String symbol, String market) {","lastModifiedDate":"2023-10-08"},{"lineNumber":28,"author":{"gitId":"wwweert123"},"content":" final String API_ENDPOINT \u003d \"https://financialmodelingprep.com/api/v3/search-ticker?query\u003d\";","lastModifiedDate":"2023-10-08"},{"lineNumber":29,"author":{"gitId":"wwweert123"},"content":" final String API_KEY \u003d \"rNCNMmSLUR3BAyeKFHwN69QGzE8fmig1\";","lastModifiedDate":"2023-10-08"},{"lineNumber":30,"author":{"gitId":"wwweert123"},"content":" String requestURI \u003d String.format(\"%s%s\u0026exchange\u003d%s\u0026apikey\u003d%s\", API_ENDPOINT,symbol,market,API_KEY);","lastModifiedDate":"2023-10-08"},{"lineNumber":31,"author":{"gitId":"wwweert123"},"content":" HttpClient client \u003d HttpClient.newHttpClient();","lastModifiedDate":"2023-10-08"},{"lineNumber":32,"author":{"gitId":"wwweert123"},"content":" HttpRequest request \u003d HttpRequest.newBuilder(URI.create(requestURI))","lastModifiedDate":"2023-10-08"},{"lineNumber":33,"author":{"gitId":"wwweert123"},"content":" .header(\"accept\", \"application/json\")","lastModifiedDate":"2023-10-08"},{"lineNumber":34,"author":{"gitId":"wwweert123"},"content":" .GET()","lastModifiedDate":"2023-10-08"},{"lineNumber":35,"author":{"gitId":"wwweert123"},"content":" .timeout(Duration.ofSeconds(10))","lastModifiedDate":"2023-10-08"},{"lineNumber":36,"author":{"gitId":"wwweert123"},"content":" .build();","lastModifiedDate":"2023-10-08"},{"lineNumber":37,"author":{"gitId":"wwweert123"},"content":" try {","lastModifiedDate":"2023-10-08"},{"lineNumber":38,"author":{"gitId":"wwweert123"},"content":" HttpResponse\u003cString\u003e response \u003d client.send(request, HttpResponse.BodyHandlers.ofString());","lastModifiedDate":"2023-10-08"},{"lineNumber":39,"author":{"gitId":"wwweert123"},"content":" Object obj \u003d new JSONParser().parse(response.body());","lastModifiedDate":"2023-10-08"},{"lineNumber":40,"author":{"gitId":"wwweert123"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":41,"author":{"gitId":"wwweert123"},"content":" JSONArray ja \u003d (JSONArray) obj;","lastModifiedDate":"2023-10-08"},{"lineNumber":42,"author":{"gitId":"wwweert123"},"content":" if (ja.size() !\u003d 1) {","lastModifiedDate":"2023-10-08"},{"lineNumber":43,"author":{"gitId":"wwweert123"},"content":" throw new FinancialPlannerException(\"stock not found\");","lastModifiedDate":"2023-10-08"},{"lineNumber":44,"author":{"gitId":"wwweert123"},"content":" } else {","lastModifiedDate":"2023-10-08"},{"lineNumber":45,"author":{"gitId":"wwweert123"},"content":" JSONObject stock \u003d (JSONObject) ja.get(0);","lastModifiedDate":"2023-10-08"},{"lineNumber":46,"author":{"gitId":"wwweert123"},"content":" return (String) stock.get(\"name\");","lastModifiedDate":"2023-10-08"},{"lineNumber":47,"author":{"gitId":"wwweert123"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":48,"author":{"gitId":"wwweert123"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-10-08"},{"lineNumber":49,"author":{"gitId":"wwweert123"},"content":" throw new RuntimeException(e);","lastModifiedDate":"2023-10-08"},{"lineNumber":50,"author":{"gitId":"wwweert123"},"content":" } catch (InterruptedException e) {","lastModifiedDate":"2023-10-08"},{"lineNumber":51,"author":{"gitId":"wwweert123"},"content":" throw new RuntimeException(e);","lastModifiedDate":"2023-10-08"},{"lineNumber":52,"author":{"gitId":"wwweert123"},"content":" } catch (ParseException e) {","lastModifiedDate":"2023-10-08"},{"lineNumber":53,"author":{"gitId":"wwweert123"},"content":" throw new RuntimeException(e);","lastModifiedDate":"2023-10-08"},{"lineNumber":54,"author":{"gitId":"wwweert123"},"content":" } catch (FinancialPlannerException e) {","lastModifiedDate":"2023-10-08"},{"lineNumber":55,"author":{"gitId":"wwweert123"},"content":" throw new RuntimeException(e);","lastModifiedDate":"2023-10-08"},{"lineNumber":56,"author":{"gitId":"wwweert123"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":57,"author":{"gitId":"wwweert123"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":58,"author":{"gitId":"wwweert123"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":59,"author":{"gitId":"wwweert123"},"content":" public String getSymbol() {","lastModifiedDate":"2023-10-08"},{"lineNumber":60,"author":{"gitId":"wwweert123"},"content":" return symbol;","lastModifiedDate":"2023-10-08"},{"lineNumber":61,"author":{"gitId":"wwweert123"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":62,"author":{"gitId":"wwweert123"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":63,"author":{"gitId":"wwweert123"},"content":" public void setSymbol(String symbol) {","lastModifiedDate":"2023-10-08"},{"lineNumber":64,"author":{"gitId":"wwweert123"},"content":" this.symbol \u003d symbol;","lastModifiedDate":"2023-10-08"},{"lineNumber":65,"author":{"gitId":"wwweert123"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":66,"author":{"gitId":"wwweert123"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":67,"author":{"gitId":"wwweert123"},"content":" @Override","lastModifiedDate":"2023-10-08"},{"lineNumber":68,"author":{"gitId":"wwweert123"},"content":" public String toString() {","lastModifiedDate":"2023-10-08"},{"lineNumber":69,"author":{"gitId":"wwweert123"},"content":" return symbol + \",\";","lastModifiedDate":"2023-10-08"},{"lineNumber":70,"author":{"gitId":"wwweert123"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":71,"author":{"gitId":"wwweert123"},"content":"}","lastModifiedDate":"2023-10-08"}],"authorContributionMap":{"wwweert123":71}},{"path":"src/main/java/seedu/financialplanner/investments/WatchList.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"wwweert123"},"content":"package seedu.financialplanner.investments;","lastModifiedDate":"2023-10-09"},{"lineNumber":2,"author":{"gitId":"wwweert123"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":3,"author":{"gitId":"wwweert123"},"content":"import org.json.simple.JSONArray;","lastModifiedDate":"2023-10-08"},{"lineNumber":4,"author":{"gitId":"wwweert123"},"content":"import org.json.simple.parser.JSONParser;","lastModifiedDate":"2023-10-08"},{"lineNumber":5,"author":{"gitId":"wwweert123"},"content":"import org.json.simple.parser.ParseException;","lastModifiedDate":"2023-10-08"},{"lineNumber":6,"author":{"gitId":"wwweert123"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":7,"author":{"gitId":"wwweert123"},"content":"import java.io.IOException;","lastModifiedDate":"2023-10-08"},{"lineNumber":8,"author":{"gitId":"wwweert123"},"content":"import java.net.URI;","lastModifiedDate":"2023-10-08"},{"lineNumber":9,"author":{"gitId":"wwweert123"},"content":"import java.net.http.HttpClient;","lastModifiedDate":"2023-10-08"},{"lineNumber":10,"author":{"gitId":"wwweert123"},"content":"import java.net.http.HttpRequest;","lastModifiedDate":"2023-10-08"},{"lineNumber":11,"author":{"gitId":"wwweert123"},"content":"import java.net.http.HttpResponse;","lastModifiedDate":"2023-10-08"},{"lineNumber":12,"author":{"gitId":"wwweert123"},"content":"import java.time.Duration;","lastModifiedDate":"2023-10-08"},{"lineNumber":13,"author":{"gitId":"wwweert123"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-10-08"},{"lineNumber":14,"author":{"gitId":"wwweert123"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":15,"author":{"gitId":"wwweert123"},"content":"public class WatchList {","lastModifiedDate":"2023-10-09"},{"lineNumber":16,"author":{"gitId":"wwweert123"},"content":" private ArrayList\u003cStock\u003e stocks;","lastModifiedDate":"2023-10-09"},{"lineNumber":17,"author":{"gitId":"wwweert123"},"content":" private final String API_ENDPOINT \u003d \"https://financialmodelingprep.com/api/v3/quote/\";","lastModifiedDate":"2023-10-08"},{"lineNumber":18,"author":{"gitId":"wwweert123"},"content":" private final String API_KEY \u003d \"rNCNMmSLUR3BAyeKFHwN69QGzE8fmig1\";","lastModifiedDate":"2023-10-08"},{"lineNumber":19,"author":{"gitId":"wwweert123"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":20,"author":{"gitId":"wwweert123"},"content":" public WatchList() {","lastModifiedDate":"2023-10-09"},{"lineNumber":21,"author":{"gitId":"wwweert123"},"content":" stocks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-10-09"},{"lineNumber":22,"author":{"gitId":"wwweert123"},"content":" stocks.add(new Stock(\"AAPL\", \"NASDAQ\"));","lastModifiedDate":"2023-10-08"},{"lineNumber":23,"author":{"gitId":"wwweert123"},"content":" stocks.add(new Stock(\"META\", \"NASDAQ\"));","lastModifiedDate":"2023-10-08"},{"lineNumber":24,"author":{"gitId":"wwweert123"},"content":" stocks.add(new Stock(\"GOOGL\", \"NASDAQ\"));","lastModifiedDate":"2023-10-08"},{"lineNumber":25,"author":{"gitId":"wwweert123"},"content":" }","lastModifiedDate":"2023-10-09"},{"lineNumber":26,"author":{"gitId":"wwweert123"},"content":"","lastModifiedDate":"2023-10-09"},{"lineNumber":27,"author":{"gitId":"wwweert123"},"content":" public JSONArray fetchFMPStockPrices() {","lastModifiedDate":"2023-10-09"},{"lineNumber":28,"author":{"gitId":"wwweert123"},"content":" HttpClient client \u003d HttpClient.newHttpClient();","lastModifiedDate":"2023-10-09"},{"lineNumber":29,"author":{"gitId":"wwweert123"},"content":" StringBuilder queryStocks \u003d new StringBuilder();","lastModifiedDate":"2023-10-08"},{"lineNumber":30,"author":{"gitId":"wwweert123"},"content":" for (Stock stock : stocks) {","lastModifiedDate":"2023-10-08"},{"lineNumber":31,"author":{"gitId":"wwweert123"},"content":" queryStocks.append(stock.toString());","lastModifiedDate":"2023-10-08"},{"lineNumber":32,"author":{"gitId":"wwweert123"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":33,"author":{"gitId":"wwweert123"},"content":" String requestURI \u003d String.format(\"%s%s?apikey\u003d%s\", API_ENDPOINT, queryStocks,API_KEY);","lastModifiedDate":"2023-10-08"},{"lineNumber":34,"author":{"gitId":"wwweert123"},"content":" HttpRequest request \u003d HttpRequest.newBuilder(URI.create(requestURI))","lastModifiedDate":"2023-10-08"},{"lineNumber":35,"author":{"gitId":"wwweert123"},"content":" .header(\"accept\", \"application/json\")","lastModifiedDate":"2023-10-08"},{"lineNumber":36,"author":{"gitId":"wwweert123"},"content":" .GET()","lastModifiedDate":"2023-10-08"},{"lineNumber":37,"author":{"gitId":"wwweert123"},"content":" .timeout(Duration.ofSeconds(10))","lastModifiedDate":"2023-10-08"},{"lineNumber":38,"author":{"gitId":"wwweert123"},"content":" .build();","lastModifiedDate":"2023-10-08"},{"lineNumber":39,"author":{"gitId":"wwweert123"},"content":" Object obj;","lastModifiedDate":"2023-10-09"},{"lineNumber":40,"author":{"gitId":"wwweert123"},"content":" try {","lastModifiedDate":"2023-10-08"},{"lineNumber":41,"author":{"gitId":"wwweert123"},"content":" HttpResponse\u003cString\u003e response \u003d client.send(request, HttpResponse.BodyHandlers.ofString());","lastModifiedDate":"2023-10-08"},{"lineNumber":42,"author":{"gitId":"wwweert123"},"content":" // System.out.println(response.body());","lastModifiedDate":"2023-10-08"},{"lineNumber":43,"author":{"gitId":"wwweert123"},"content":" obj \u003d new JSONParser().parse(response.body());","lastModifiedDate":"2023-10-09"},{"lineNumber":44,"author":{"gitId":"wwweert123"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-10-08"},{"lineNumber":45,"author":{"gitId":"wwweert123"},"content":" throw new RuntimeException(e);","lastModifiedDate":"2023-10-08"},{"lineNumber":46,"author":{"gitId":"wwweert123"},"content":" } catch (InterruptedException e) {","lastModifiedDate":"2023-10-08"},{"lineNumber":47,"author":{"gitId":"wwweert123"},"content":" throw new RuntimeException(e);","lastModifiedDate":"2023-10-08"},{"lineNumber":48,"author":{"gitId":"wwweert123"},"content":" } catch (ParseException e) {","lastModifiedDate":"2023-10-08"},{"lineNumber":49,"author":{"gitId":"wwweert123"},"content":" throw new RuntimeException(e);","lastModifiedDate":"2023-10-08"},{"lineNumber":50,"author":{"gitId":"wwweert123"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":51,"author":{"gitId":"wwweert123"},"content":" return (JSONArray) obj;","lastModifiedDate":"2023-10-09"},{"lineNumber":52,"author":{"gitId":"wwweert123"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":53,"author":{"gitId":"wwweert123"},"content":"}","lastModifiedDate":"2023-10-08"}],"authorContributionMap":{"wwweert123":53}},{"path":"src/main/java/seedu/financialplanner/list/Cashflow.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"NeoMinWei"},"content":"package seedu.financialplanner.list;","lastModifiedDate":"2023-10-08"},{"lineNumber":2,"author":{"gitId":"NeoMinWei"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":3,"author":{"gitId":"NeoMinWei"},"content":"public class Cashflow {","lastModifiedDate":"2023-10-08"},{"lineNumber":4,"author":{"gitId":"NeoMinWei"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":5,"author":{"gitId":"NeoMinWei"},"content":" protected static double balance \u003d 0;","lastModifiedDate":"2023-10-08"},{"lineNumber":6,"author":{"gitId":"NeoMinWei"},"content":" protected double value;","lastModifiedDate":"2023-10-08"},{"lineNumber":7,"author":{"gitId":"NeoMinWei"},"content":" protected String type;","lastModifiedDate":"2023-10-08"},{"lineNumber":8,"author":{"gitId":"NeoMinWei"},"content":" protected int recur;","lastModifiedDate":"2023-10-08"},{"lineNumber":9,"author":{"gitId":"NeoMinWei"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":10,"author":{"gitId":"NeoMinWei"},"content":" public Cashflow(double value, String type, int recur) {","lastModifiedDate":"2023-10-08"},{"lineNumber":11,"author":{"gitId":"NeoMinWei"},"content":" this.value \u003d value;","lastModifiedDate":"2023-10-08"},{"lineNumber":12,"author":{"gitId":"NeoMinWei"},"content":" this.type \u003d type;","lastModifiedDate":"2023-10-08"},{"lineNumber":13,"author":{"gitId":"NeoMinWei"},"content":" this.recur \u003d recur;","lastModifiedDate":"2023-10-08"},{"lineNumber":14,"author":{"gitId":"NeoMinWei"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":15,"author":{"gitId":"NeoMinWei"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":16,"author":{"gitId":"NeoMinWei"},"content":" public Cashflow() {","lastModifiedDate":"2023-10-08"},{"lineNumber":17,"author":{"gitId":"NeoMinWei"},"content":" this.value \u003d 0;","lastModifiedDate":"2023-10-08"},{"lineNumber":18,"author":{"gitId":"NeoMinWei"},"content":" this.type \u003d null;","lastModifiedDate":"2023-10-08"},{"lineNumber":19,"author":{"gitId":"NeoMinWei"},"content":" this.recur \u003d 0;","lastModifiedDate":"2023-10-08"},{"lineNumber":20,"author":{"gitId":"NeoMinWei"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":21,"author":{"gitId":"NeoMinWei"},"content":"}","lastModifiedDate":"2023-10-08"}],"authorContributionMap":{"NeoMinWei":21}},{"path":"src/main/java/seedu/financialplanner/list/Expense.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"NeoMinWei"},"content":"package seedu.financialplanner.list;","lastModifiedDate":"2023-10-08"},{"lineNumber":2,"author":{"gitId":"NeoMinWei"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":3,"author":{"gitId":"NeoMinWei"},"content":"public class Expense extends Cashflow {","lastModifiedDate":"2023-10-08"},{"lineNumber":4,"author":{"gitId":"NeoMinWei"},"content":" public Expense(double value, String type, int recur) {","lastModifiedDate":"2023-10-08"},{"lineNumber":5,"author":{"gitId":"NeoMinWei"},"content":" super(value, type, recur);","lastModifiedDate":"2023-10-08"},{"lineNumber":6,"author":{"gitId":"NeoMinWei"},"content":" addIncomeValue(value);","lastModifiedDate":"2023-10-08"},{"lineNumber":7,"author":{"gitId":"NeoMinWei"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":8,"author":{"gitId":"NeoMinWei"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":9,"author":{"gitId":"NeoMinWei"},"content":" private void addIncomeValue(double value) {","lastModifiedDate":"2023-10-08"},{"lineNumber":10,"author":{"gitId":"NeoMinWei"},"content":" balance -\u003d value;","lastModifiedDate":"2023-10-08"},{"lineNumber":11,"author":{"gitId":"NeoMinWei"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":12,"author":{"gitId":"NeoMinWei"},"content":"}","lastModifiedDate":"2023-10-08"}],"authorContributionMap":{"NeoMinWei":12}},{"path":"src/main/java/seedu/financialplanner/list/FinancialList.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"NeoMinWei"},"content":"package seedu.financialplanner.list;","lastModifiedDate":"2023-10-08"},{"lineNumber":2,"author":{"gitId":"NeoMinWei"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":3,"author":{"gitId":"NeoMinWei"},"content":"import java.text.DecimalFormat;","lastModifiedDate":"2023-10-08"},{"lineNumber":4,"author":{"gitId":"NeoMinWei"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-10-08"},{"lineNumber":5,"author":{"gitId":"NeoMinWei"},"content":"import java.math.BigDecimal;","lastModifiedDate":"2023-10-08"},{"lineNumber":6,"author":{"gitId":"NeoMinWei"},"content":"import java.math.RoundingMode;","lastModifiedDate":"2023-10-08"},{"lineNumber":7,"author":{"gitId":"NeoMinWei"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":8,"author":{"gitId":"NeoMinWei"},"content":"public class FinancialList {","lastModifiedDate":"2023-10-08"},{"lineNumber":9,"author":{"gitId":"NeoMinWei"},"content":" protected ArrayList\u003cCashflow\u003e list \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-10-08"},{"lineNumber":10,"author":{"gitId":"NeoMinWei"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":11,"author":{"gitId":"NeoMinWei"},"content":" private void printAddedCashflow(String line) {","lastModifiedDate":"2023-10-08"},{"lineNumber":12,"author":{"gitId":"NeoMinWei"},"content":" DecimalFormat decimalFormat \u003d new DecimalFormat(\"####0.00\");","lastModifiedDate":"2023-10-08"},{"lineNumber":13,"author":{"gitId":"NeoMinWei"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":14,"author":{"gitId":"NeoMinWei"},"content":" Cashflow cashflow \u003d list.get(list.size() - 1);","lastModifiedDate":"2023-10-08"},{"lineNumber":15,"author":{"gitId":"NeoMinWei"},"content":" System.out.print(\"Added \" + line + \" of value: \");","lastModifiedDate":"2023-10-08"},{"lineNumber":16,"author":{"gitId":"NeoMinWei"},"content":" System.out.println(decimalFormat.format(round(cashflow.value, 2)) + \" to the list.\");","lastModifiedDate":"2023-10-08"},{"lineNumber":17,"author":{"gitId":"NeoMinWei"},"content":" System.out.println(\"type: \" + cashflow.type);","lastModifiedDate":"2023-10-08"},{"lineNumber":18,"author":{"gitId":"NeoMinWei"},"content":" if (cashflow.recur !\u003d 0) {","lastModifiedDate":"2023-10-08"},{"lineNumber":19,"author":{"gitId":"NeoMinWei"},"content":" System.out.println(\"recurring every: \" + cashflow.recur + \" days\");","lastModifiedDate":"2023-10-08"},{"lineNumber":20,"author":{"gitId":"NeoMinWei"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":21,"author":{"gitId":"NeoMinWei"},"content":" System.out.println(\"balance: \" + decimalFormat.format(round(Cashflow.balance, 2)));","lastModifiedDate":"2023-10-08"},{"lineNumber":22,"author":{"gitId":"NeoMinWei"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":23,"author":{"gitId":"NeoMinWei"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":24,"author":{"gitId":"NeoMinWei"},"content":" //@author mhadidg-reused","lastModifiedDate":"2023-10-08"},{"lineNumber":25,"author":{"gitId":"NeoMinWei"},"content":" //Reused from https://stackoverflow.com/questions/2808535/round-a-double-to-2-decimal-places","lastModifiedDate":"2023-10-08"},{"lineNumber":26,"author":{"gitId":"NeoMinWei"},"content":" public static double round(double value, int places) {","lastModifiedDate":"2023-10-08"},{"lineNumber":27,"author":{"gitId":"NeoMinWei"},"content":" if (places \u003c 0) {","lastModifiedDate":"2023-10-08"},{"lineNumber":28,"author":{"gitId":"NeoMinWei"},"content":" throw new IllegalArgumentException();","lastModifiedDate":"2023-10-08"},{"lineNumber":29,"author":{"gitId":"NeoMinWei"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":30,"author":{"gitId":"NeoMinWei"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":31,"author":{"gitId":"NeoMinWei"},"content":" BigDecimal bd \u003d BigDecimal.valueOf(value);","lastModifiedDate":"2023-10-08"},{"lineNumber":32,"author":{"gitId":"NeoMinWei"},"content":" bd \u003d bd.setScale(places, RoundingMode.HALF_UP);","lastModifiedDate":"2023-10-08"},{"lineNumber":33,"author":{"gitId":"NeoMinWei"},"content":" return bd.doubleValue();","lastModifiedDate":"2023-10-08"},{"lineNumber":34,"author":{"gitId":"NeoMinWei"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":35,"author":{"gitId":"NeoMinWei"},"content":" //@author mhadidg","lastModifiedDate":"2023-10-08"},{"lineNumber":36,"author":{"gitId":"NeoMinWei"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":37,"author":{"gitId":"NeoMinWei"},"content":" public void addIncome(double value, String type, int recur) {","lastModifiedDate":"2023-10-08"},{"lineNumber":38,"author":{"gitId":"NeoMinWei"},"content":" Income toAdd \u003d new Income(value, type, recur);","lastModifiedDate":"2023-10-08"},{"lineNumber":39,"author":{"gitId":"NeoMinWei"},"content":" list.add(toAdd);","lastModifiedDate":"2023-10-08"},{"lineNumber":40,"author":{"gitId":"NeoMinWei"},"content":" printAddedCashflow(\"income\");","lastModifiedDate":"2023-10-08"},{"lineNumber":41,"author":{"gitId":"NeoMinWei"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":42,"author":{"gitId":"NeoMinWei"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":43,"author":{"gitId":"NeoMinWei"},"content":" public void addExpense(double value, String type, int recur) {","lastModifiedDate":"2023-10-08"},{"lineNumber":44,"author":{"gitId":"NeoMinWei"},"content":" Expense toAdd \u003d new Expense(value, type, recur);","lastModifiedDate":"2023-10-08"},{"lineNumber":45,"author":{"gitId":"NeoMinWei"},"content":" list.add(toAdd);","lastModifiedDate":"2023-10-08"},{"lineNumber":46,"author":{"gitId":"NeoMinWei"},"content":" printAddedCashflow(\"expense\");","lastModifiedDate":"2023-10-08"},{"lineNumber":47,"author":{"gitId":"NeoMinWei"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":48,"author":{"gitId":"NeoMinWei"},"content":"}","lastModifiedDate":"2023-10-08"}],"authorContributionMap":{"NeoMinWei":48}},{"path":"src/main/java/seedu/financialplanner/list/Income.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"NeoMinWei"},"content":"package seedu.financialplanner.list;","lastModifiedDate":"2023-10-08"},{"lineNumber":2,"author":{"gitId":"NeoMinWei"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":3,"author":{"gitId":"NeoMinWei"},"content":"public class Income extends Cashflow{","lastModifiedDate":"2023-10-08"},{"lineNumber":4,"author":{"gitId":"NeoMinWei"},"content":" public Income(double value, String type, int recur) {","lastModifiedDate":"2023-10-08"},{"lineNumber":5,"author":{"gitId":"NeoMinWei"},"content":" super(value, type, recur);","lastModifiedDate":"2023-10-08"},{"lineNumber":6,"author":{"gitId":"NeoMinWei"},"content":" addIncomeValue(value);","lastModifiedDate":"2023-10-08"},{"lineNumber":7,"author":{"gitId":"NeoMinWei"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":8,"author":{"gitId":"NeoMinWei"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":9,"author":{"gitId":"NeoMinWei"},"content":" private void addIncomeValue(double value) {","lastModifiedDate":"2023-10-08"},{"lineNumber":10,"author":{"gitId":"NeoMinWei"},"content":" balance +\u003d value;","lastModifiedDate":"2023-10-08"},{"lineNumber":11,"author":{"gitId":"NeoMinWei"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":12,"author":{"gitId":"NeoMinWei"},"content":"}","lastModifiedDate":"2023-10-08"}],"authorContributionMap":{"NeoMinWei":12}},{"path":"src/main/java/seedu/financialplanner/utils/Parser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ryan1604"},"content":"package seedu.financialplanner.utils;","lastModifiedDate":"2023-10-07"},{"lineNumber":2,"author":{"gitId":"ryan1604"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":3,"author":{"gitId":"NeoMinWei"},"content":"import seedu.financialplanner.commands.Entry;","lastModifiedDate":"2023-10-08"},{"lineNumber":4,"author":{"gitId":"ryan1604"},"content":"import seedu.financialplanner.commands.Command;","lastModifiedDate":"2023-10-07"},{"lineNumber":5,"author":{"gitId":"ryan1604"},"content":"import seedu.financialplanner.commands.Exit;","lastModifiedDate":"2023-10-07"},{"lineNumber":6,"author":{"gitId":"ryan1604"},"content":"import seedu.financialplanner.commands.Invalid;","lastModifiedDate":"2023-10-07"},{"lineNumber":7,"author":{"gitId":"wwweert123"},"content":"import seedu.financialplanner.commands.WatchListCommand;","lastModifiedDate":"2023-10-09"},{"lineNumber":8,"author":{"gitId":"ryan1604"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":9,"author":{"gitId":"ryan1604"},"content":"public class Parser {","lastModifiedDate":"2023-10-07"},{"lineNumber":10,"author":{"gitId":"ryan1604"},"content":" private static final String EXIT_COMMAND \u003d \"exit\";","lastModifiedDate":"2023-10-07"},{"lineNumber":11,"author":{"gitId":"NeoMinWei"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":12,"author":{"gitId":"wwweert123"},"content":" private static final String WATCHLIST_COMMAND \u003d \"watchlist\";","lastModifiedDate":"2023-10-08"},{"lineNumber":13,"author":{"gitId":"ryan1604"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":14,"author":{"gitId":"wwweert123"},"content":" private static final String ADD_ENTRY_COMMAND \u003d \"add\";","lastModifiedDate":"2023-10-09"},{"lineNumber":15,"author":{"gitId":"ryan1604"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":16,"author":{"gitId":"ryan1604"},"content":" public static Command parse(String input) {","lastModifiedDate":"2023-10-07"},{"lineNumber":17,"author":{"gitId":"ryan1604"},"content":" String[] split \u003d input.split(\" \", 2);","lastModifiedDate":"2023-10-07"},{"lineNumber":18,"author":{"gitId":"ryan1604"},"content":" String command \u003d split[0].toLowerCase();","lastModifiedDate":"2023-10-07"},{"lineNumber":19,"author":{"gitId":"ryan1604"},"content":" String restOfInput \u003d split.length \u003e 1 ? split[1] : \"\"; // checks if rest of input is empty","lastModifiedDate":"2023-10-07"},{"lineNumber":20,"author":{"gitId":"ryan1604"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":21,"author":{"gitId":"ryan1604"},"content":" switch (command) {","lastModifiedDate":"2023-10-07"},{"lineNumber":22,"author":{"gitId":"ryan1604"},"content":" case EXIT_COMMAND:","lastModifiedDate":"2023-10-07"},{"lineNumber":23,"author":{"gitId":"ryan1604"},"content":" return new Exit();","lastModifiedDate":"2023-10-07"},{"lineNumber":24,"author":{"gitId":"wwweert123"},"content":" case WATCHLIST_COMMAND:","lastModifiedDate":"2023-10-08"},{"lineNumber":25,"author":{"gitId":"wwweert123"},"content":" return new WatchListCommand();","lastModifiedDate":"2023-10-09"},{"lineNumber":26,"author":{"gitId":"ryan1604"},"content":" case ADD_ENTRY_COMMAND:","lastModifiedDate":"2023-10-09"},{"lineNumber":27,"author":{"gitId":"ryan1604"},"content":" return new Entry(restOfInput);","lastModifiedDate":"2023-10-09"},{"lineNumber":28,"author":{"gitId":"ryan1604"},"content":" default:","lastModifiedDate":"2023-10-07"},{"lineNumber":29,"author":{"gitId":"ryan1604"},"content":" return new Invalid();","lastModifiedDate":"2023-10-07"},{"lineNumber":30,"author":{"gitId":"ryan1604"},"content":" }","lastModifiedDate":"2023-10-07"},{"lineNumber":31,"author":{"gitId":"ryan1604"},"content":" }","lastModifiedDate":"2023-10-07"},{"lineNumber":32,"author":{"gitId":"ryan1604"},"content":"}","lastModifiedDate":"2023-10-07"}],"authorContributionMap":{"wwweert123":5,"NeoMinWei":2,"ryan1604":25}},{"path":"src/main/java/seedu/financialplanner/utils/Ui.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ryan1604"},"content":"package seedu.financialplanner.utils;","lastModifiedDate":"2023-10-07"},{"lineNumber":2,"author":{"gitId":"ryan1604"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":3,"author":{"gitId":"wwweert123"},"content":"import org.apache.commons.lang3.StringUtils;","lastModifiedDate":"2023-10-09"},{"lineNumber":4,"author":{"gitId":"wwweert123"},"content":"import org.json.simple.JSONObject;","lastModifiedDate":"2023-10-09"},{"lineNumber":5,"author":{"gitId":"wwweert123"},"content":"","lastModifiedDate":"2023-10-09"},{"lineNumber":6,"author":{"gitId":"ryan1604"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-10-07"},{"lineNumber":7,"author":{"gitId":"ryan1604"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":8,"author":{"gitId":"ryan1604"},"content":"public class Ui {","lastModifiedDate":"2023-10-07"},{"lineNumber":9,"author":{"gitId":"ryan1604"},"content":" private Scanner in \u003d new Scanner(System.in);","lastModifiedDate":"2023-10-09"},{"lineNumber":10,"author":{"gitId":"ryan1604"},"content":" public Ui() {","lastModifiedDate":"2023-10-07"},{"lineNumber":11,"author":{"gitId":"ryan1604"},"content":" }","lastModifiedDate":"2023-10-07"},{"lineNumber":12,"author":{"gitId":"ryan1604"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":13,"author":{"gitId":"ryan1604"},"content":" public void showMessage(String message) {","lastModifiedDate":"2023-10-07"},{"lineNumber":14,"author":{"gitId":"ryan1604"},"content":" System.out.println(message);","lastModifiedDate":"2023-10-07"},{"lineNumber":15,"author":{"gitId":"ryan1604"},"content":" }","lastModifiedDate":"2023-10-07"},{"lineNumber":16,"author":{"gitId":"ryan1604"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":17,"author":{"gitId":"ryan1604"},"content":" public void welcomeMessage() {","lastModifiedDate":"2023-10-07"},{"lineNumber":18,"author":{"gitId":"ryan1604"},"content":" showMessage(\"Welcome to your Financial Planner. Type something to get started.\");","lastModifiedDate":"2023-10-09"},{"lineNumber":19,"author":{"gitId":"ryan1604"},"content":" }","lastModifiedDate":"2023-10-07"},{"lineNumber":20,"author":{"gitId":"ryan1604"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":21,"author":{"gitId":"ryan1604"},"content":" public void exitMessage() {","lastModifiedDate":"2023-10-07"},{"lineNumber":22,"author":{"gitId":"ryan1604"},"content":" showMessage(\"Exiting Financial Planner. Goodbye.\");","lastModifiedDate":"2023-10-09"},{"lineNumber":23,"author":{"gitId":"ryan1604"},"content":" }","lastModifiedDate":"2023-10-07"},{"lineNumber":24,"author":{"gitId":"ryan1604"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":25,"author":{"gitId":"ryan1604"},"content":" public String input() {","lastModifiedDate":"2023-10-07"},{"lineNumber":26,"author":{"gitId":"ryan1604"},"content":" return in.nextLine().trim();","lastModifiedDate":"2023-10-07"},{"lineNumber":27,"author":{"gitId":"ryan1604"},"content":" }","lastModifiedDate":"2023-10-07"},{"lineNumber":28,"author":{"gitId":"wwweert123"},"content":"","lastModifiedDate":"2023-10-09"},{"lineNumber":29,"author":{"gitId":"wwweert123"},"content":" public void printWatchListHeader() {","lastModifiedDate":"2023-10-09"},{"lineNumber":30,"author":{"gitId":"wwweert123"},"content":" System.out.print(\"Symbol\");","lastModifiedDate":"2023-10-09"},{"lineNumber":31,"author":{"gitId":"wwweert123"},"content":" System.out.print(\" \");","lastModifiedDate":"2023-10-09"},{"lineNumber":32,"author":{"gitId":"wwweert123"},"content":" System.out.print(\"Price\");","lastModifiedDate":"2023-10-09"},{"lineNumber":33,"author":{"gitId":"wwweert123"},"content":" System.out.print(\" \");","lastModifiedDate":"2023-10-09"},{"lineNumber":34,"author":{"gitId":"wwweert123"},"content":" System.out.print(\"Company Name\");","lastModifiedDate":"2023-10-09"},{"lineNumber":35,"author":{"gitId":"wwweert123"},"content":" System.out.println();","lastModifiedDate":"2023-10-09"},{"lineNumber":36,"author":{"gitId":"wwweert123"},"content":" }","lastModifiedDate":"2023-10-09"},{"lineNumber":37,"author":{"gitId":"wwweert123"},"content":"","lastModifiedDate":"2023-10-09"},{"lineNumber":38,"author":{"gitId":"wwweert123"},"content":" public void printStockInfo(JSONObject stock) {","lastModifiedDate":"2023-10-09"},{"lineNumber":39,"author":{"gitId":"wwweert123"},"content":" String symbol \u003d StringUtils.rightPad((String) stock.get(\"symbol\"), 10);","lastModifiedDate":"2023-10-09"},{"lineNumber":40,"author":{"gitId":"wwweert123"},"content":" String price \u003d StringUtils.rightPad(stock.get(\"price\").toString(), 10);","lastModifiedDate":"2023-10-09"},{"lineNumber":41,"author":{"gitId":"wwweert123"},"content":" String name \u003d StringUtils.rightPad((String) stock.get(\"name\"), 10);","lastModifiedDate":"2023-10-09"},{"lineNumber":42,"author":{"gitId":"wwweert123"},"content":" System.out.println(symbol + price + name);","lastModifiedDate":"2023-10-09"},{"lineNumber":43,"author":{"gitId":"wwweert123"},"content":" }","lastModifiedDate":"2023-10-09"},{"lineNumber":44,"author":{"gitId":"ryan1604"},"content":"}","lastModifiedDate":"2023-10-07"}],"authorContributionMap":{"wwweert123":19,"ryan1604":25}},{"path":"src/test/java/seedu/financialplanner/FinancialPlannerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"ryan1604"},"content":"package seedu.financialplanner;","lastModifiedDate":"2023-10-07"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2020-05-24"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-24"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2020-05-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-24"},{"lineNumber":7,"author":{"gitId":"ryan1604"},"content":"class FinancialPlannerTest {","lastModifiedDate":"2023-10-07"},{"lineNumber":8,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2020-05-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":" public void sampleTest() {","lastModifiedDate":"2020-05-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":" assertTrue(true);","lastModifiedDate":"2020-05-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-24"}],"authorContributionMap":{"-":10,"ryan1604":2}}] +[{"path":"build.gradle","fileType":"other","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"plugins {","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":" id \u0027java\u0027","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":" id \u0027application\u0027","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":" id \u0027checkstyle\u0027","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":" id \u0027com.github.johnrengelman.shadow\u0027 version \u00277.1.2\u0027","lastModifiedDate":"2022-06-17"},{"lineNumber":6,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"repositories {","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":" mavenCentral()","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":"dependencies {","lastModifiedDate":"2020-05-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":" testImplementation group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-api\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":" testRuntimeOnly group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-engine\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":15,"author":{"gitId":"wwweert123"},"content":" implementation group: \u0027com.googlecode.json-simple\u0027, name: \u0027json-simple\u0027, version: \u00271.1.1\u0027","lastModifiedDate":"2023-10-08"},{"lineNumber":16,"author":{"gitId":"wwweert123"},"content":" implementation group: \u0027org.apache.commons\u0027, name: \u0027commons-lang3\u0027, version: \u00273.0\u0027","lastModifiedDate":"2023-10-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"ryan1604"},"content":" mainClass.set(\"seedu.financialplanner.FinancialPlanner\")","lastModifiedDate":"2023-10-07"},{"lineNumber":35,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":" archiveBaseName.set(\"duke\")","lastModifiedDate":"2023-09-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" archiveClassifier.set(\"\")","lastModifiedDate":"2023-09-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":"checkstyle {","lastModifiedDate":"2020-05-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":" toolVersion \u003d \u002710.2\u0027","lastModifiedDate":"2022-04-29"},{"lineNumber":44,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":46,"author":{"gitId":"-"},"content":"run{","lastModifiedDate":"2020-05-25"},{"lineNumber":47,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":48,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"wwweert123":2,"-":45,"ryan1604":1}},{"path":"docs/AboutUs.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"# About us","lastModifiedDate":"2020-05-24"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"Display | Name | Github Profile | Portfolio ","lastModifiedDate":"2020-05-24"},{"lineNumber":4,"author":{"gitId":"NeoMinWei"},"content":"--------|:-----------:|:--------------:|:---------:","lastModifiedDate":"2023-10-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"![](https://via.placeholder.com/100.png?text\u003dPhoto) | John Doe | [Github](https://github.com/) | [Portfolio](docs/team/johndoe.md)","lastModifiedDate":"2020-05-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":"![](https://via.placeholder.com/100.png?text\u003dPhoto) | Don Joe | [Github](https://github.com/) | [Portfolio](docs/team/johndoe.md)","lastModifiedDate":"2020-05-24"},{"lineNumber":7,"author":{"gitId":"ryan1604"},"content":"![](https://via.placeholder.com/100.png?text\u003dPhoto) | Ryan Chua | [Github](https://github.com/ryan1604) | [Portfolio](docs/team/ryanchua.md)","lastModifiedDate":"2023-10-05"},{"lineNumber":8,"author":{"gitId":"NeoMinWei"},"content":"![](https://via.placeholder.com/100.png?text\u003dPhoto) | Neo Min Wei | [Github](https://github.com/NeoMinWei) | [Portfolio](docs/team/NeoMinWei.md)","lastModifiedDate":"2023-10-05"},{"lineNumber":9,"author":{"gitId":"wwweert123"},"content":"![](https://via.placeholder.com/100.png?text\u003dPhoto) | Frederick | [Github](https://github.com/) | [Portfolio](docs/team/frederick.md)","lastModifiedDate":"2023-10-05"},{"lineNumber":10,"author":{"gitId":"NeoMinWei"},"content":"","lastModifiedDate":"2023-10-05"}],"authorContributionMap":{"wwweert123":1,"NeoMinWei":3,"-":5,"ryan1604":1}},{"path":"docs/team/NeoMinWei.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"NeoMinWei"},"content":"# Neo Min Wei - Project Portfolio Page","lastModifiedDate":"2023-10-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"## Overview","lastModifiedDate":"2020-05-24"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-24"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":"### Summary of Contributions","lastModifiedDate":"2020-05-24"}],"authorContributionMap":{"NeoMinWei":1,"-":5}},{"path":"docs/team/frederick.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"wwweert123"},"content":"I am Frederick ","lastModifiedDate":"2023-10-05"},{"lineNumber":2,"author":{"gitId":"wwweert123"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":3,"author":{"gitId":"wwweert123"},"content":"Hello ","lastModifiedDate":"2023-10-05"},{"lineNumber":4,"author":{"gitId":"wwweert123"},"content":"","lastModifiedDate":"2023-10-05"},{"lineNumber":5,"author":{"gitId":"wwweert123"},"content":"I am from this team!","lastModifiedDate":"2023-10-05"}],"authorContributionMap":{"wwweert123":5}},{"path":"src/main/java/seedu/financialplanner/FinancialPlanner.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ryan1604"},"content":"package seedu.financialplanner;","lastModifiedDate":"2023-10-07"},{"lineNumber":2,"author":{"gitId":"ryan1604"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":3,"author":{"gitId":"ryan1604"},"content":"import seedu.financialplanner.commands.Command;","lastModifiedDate":"2023-10-07"},{"lineNumber":4,"author":{"gitId":"ryan1604"},"content":"import seedu.financialplanner.commands.Exit;","lastModifiedDate":"2023-10-07"},{"lineNumber":5,"author":{"gitId":"wwweert123"},"content":"import seedu.financialplanner.investments.WatchList;","lastModifiedDate":"2023-10-09"},{"lineNumber":6,"author":{"gitId":"NeoMinWei"},"content":"import seedu.financialplanner.list.FinancialList;","lastModifiedDate":"2023-10-08"},{"lineNumber":7,"author":{"gitId":"ryan1604"},"content":"import seedu.financialplanner.utils.Parser;","lastModifiedDate":"2023-10-07"},{"lineNumber":8,"author":{"gitId":"ryan1604"},"content":"import seedu.financialplanner.utils.Ui;","lastModifiedDate":"2023-10-07"},{"lineNumber":9,"author":{"gitId":"ryan1604"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":10,"author":{"gitId":"ryan1604"},"content":"public class FinancialPlanner {","lastModifiedDate":"2023-10-07"},{"lineNumber":11,"author":{"gitId":"ryan1604"},"content":" private Ui ui;","lastModifiedDate":"2023-10-07"},{"lineNumber":12,"author":{"gitId":"wwweert123"},"content":" private WatchList watchList;","lastModifiedDate":"2023-10-09"},{"lineNumber":13,"author":{"gitId":"NeoMinWei"},"content":" private FinancialList financialList;","lastModifiedDate":"2023-10-08"},{"lineNumber":14,"author":{"gitId":"ryan1604"},"content":" public FinancialPlanner() {","lastModifiedDate":"2023-10-07"},{"lineNumber":15,"author":{"gitId":"ryan1604"},"content":" ui \u003d new Ui();","lastModifiedDate":"2023-10-07"},{"lineNumber":16,"author":{"gitId":"NeoMinWei"},"content":" financialList \u003d new FinancialList();","lastModifiedDate":"2023-10-08"},{"lineNumber":17,"author":{"gitId":"wwweert123"},"content":" watchList \u003d new WatchList();","lastModifiedDate":"2023-10-09"},{"lineNumber":18,"author":{"gitId":"ryan1604"},"content":" }","lastModifiedDate":"2023-10-07"},{"lineNumber":19,"author":{"gitId":"ryan1604"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":20,"author":{"gitId":"ryan1604"},"content":" public void run() {","lastModifiedDate":"2023-10-07"},{"lineNumber":21,"author":{"gitId":"ryan1604"},"content":" ui.welcomeMessage();","lastModifiedDate":"2023-10-07"},{"lineNumber":22,"author":{"gitId":"ryan1604"},"content":" String input;","lastModifiedDate":"2023-10-07"},{"lineNumber":23,"author":{"gitId":"ryan1604"},"content":" Command command \u003d null;","lastModifiedDate":"2023-10-07"},{"lineNumber":24,"author":{"gitId":"ryan1604"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":25,"author":{"gitId":"ryan1604"},"content":" while (!(command instanceof Exit)) {","lastModifiedDate":"2023-10-07"},{"lineNumber":26,"author":{"gitId":"ryan1604"},"content":" input \u003d ui.input();","lastModifiedDate":"2023-10-07"},{"lineNumber":27,"author":{"gitId":"ryan1604"},"content":" command \u003d Parser.parse(input);","lastModifiedDate":"2023-10-07"},{"lineNumber":28,"author":{"gitId":"wwweert123"},"content":" command.execute(ui, financialList, watchList);","lastModifiedDate":"2023-10-09"},{"lineNumber":29,"author":{"gitId":"ryan1604"},"content":" }","lastModifiedDate":"2023-10-07"},{"lineNumber":30,"author":{"gitId":"ryan1604"},"content":" ui.exitMessage();","lastModifiedDate":"2023-10-07"},{"lineNumber":31,"author":{"gitId":"ryan1604"},"content":" }","lastModifiedDate":"2023-10-07"},{"lineNumber":32,"author":{"gitId":"ryan1604"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":33,"author":{"gitId":"ryan1604"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-10-07"},{"lineNumber":34,"author":{"gitId":"ryan1604"},"content":" new FinancialPlanner().run();","lastModifiedDate":"2023-10-07"},{"lineNumber":35,"author":{"gitId":"ryan1604"},"content":" }","lastModifiedDate":"2023-10-07"},{"lineNumber":36,"author":{"gitId":"ryan1604"},"content":"}","lastModifiedDate":"2023-10-07"}],"authorContributionMap":{"wwweert123":4,"NeoMinWei":3,"ryan1604":29}},{"path":"src/main/java/seedu/financialplanner/commands/AddStockCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"wwweert123"},"content":"package seedu.financialplanner.commands;","lastModifiedDate":"2023-10-09"},{"lineNumber":2,"author":{"gitId":"wwweert123"},"content":"","lastModifiedDate":"2023-10-09"},{"lineNumber":3,"author":{"gitId":"wwweert123"},"content":"import seedu.financialplanner.exceptions.FinancialPlannerException;","lastModifiedDate":"2023-10-09"},{"lineNumber":4,"author":{"gitId":"wwweert123"},"content":"import seedu.financialplanner.investments.WatchList;","lastModifiedDate":"2023-10-09"},{"lineNumber":5,"author":{"gitId":"wwweert123"},"content":"import seedu.financialplanner.list.FinancialList;","lastModifiedDate":"2023-10-09"},{"lineNumber":6,"author":{"gitId":"wwweert123"},"content":"import seedu.financialplanner.utils.Ui;","lastModifiedDate":"2023-10-09"},{"lineNumber":7,"author":{"gitId":"wwweert123"},"content":"","lastModifiedDate":"2023-10-09"},{"lineNumber":8,"author":{"gitId":"wwweert123"},"content":"public class AddStockCommand extends Command {","lastModifiedDate":"2023-10-09"},{"lineNumber":9,"author":{"gitId":"wwweert123"},"content":" private final String market;","lastModifiedDate":"2023-10-09"},{"lineNumber":10,"author":{"gitId":"wwweert123"},"content":" private final String stockCode;","lastModifiedDate":"2023-10-09"},{"lineNumber":11,"author":{"gitId":"wwweert123"},"content":"","lastModifiedDate":"2023-10-09"},{"lineNumber":12,"author":{"gitId":"wwweert123"},"content":" public AddStockCommand(String market, String stockCode) {","lastModifiedDate":"2023-10-09"},{"lineNumber":13,"author":{"gitId":"wwweert123"},"content":" this.market \u003d market;","lastModifiedDate":"2023-10-09"},{"lineNumber":14,"author":{"gitId":"wwweert123"},"content":" this.stockCode \u003d stockCode;","lastModifiedDate":"2023-10-09"},{"lineNumber":15,"author":{"gitId":"wwweert123"},"content":" }","lastModifiedDate":"2023-10-09"},{"lineNumber":16,"author":{"gitId":"wwweert123"},"content":"","lastModifiedDate":"2023-10-09"},{"lineNumber":17,"author":{"gitId":"wwweert123"},"content":" @Override","lastModifiedDate":"2023-10-09"},{"lineNumber":18,"author":{"gitId":"wwweert123"},"content":" public void execute(Ui ui, FinancialList financialList, WatchList watchList) {","lastModifiedDate":"2023-10-09"},{"lineNumber":19,"author":{"gitId":"wwweert123"},"content":" String stockName \u003d null;","lastModifiedDate":"2023-10-09"},{"lineNumber":20,"author":{"gitId":"wwweert123"},"content":" try {","lastModifiedDate":"2023-10-09"},{"lineNumber":21,"author":{"gitId":"wwweert123"},"content":" stockName \u003d watchList.addStock(market, stockCode);","lastModifiedDate":"2023-10-09"},{"lineNumber":22,"author":{"gitId":"wwweert123"},"content":" ui.printAddStock(stockName);","lastModifiedDate":"2023-10-09"},{"lineNumber":23,"author":{"gitId":"wwweert123"},"content":" } catch (FinancialPlannerException e) {","lastModifiedDate":"2023-10-09"},{"lineNumber":24,"author":{"gitId":"wwweert123"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-10-09"},{"lineNumber":25,"author":{"gitId":"wwweert123"},"content":" }","lastModifiedDate":"2023-10-09"},{"lineNumber":26,"author":{"gitId":"wwweert123"},"content":" }","lastModifiedDate":"2023-10-09"},{"lineNumber":27,"author":{"gitId":"wwweert123"},"content":"}","lastModifiedDate":"2023-10-09"}],"authorContributionMap":{"wwweert123":27}},{"path":"src/main/java/seedu/financialplanner/commands/Command.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ryan1604"},"content":"package seedu.financialplanner.commands;","lastModifiedDate":"2023-10-07"},{"lineNumber":2,"author":{"gitId":"ryan1604"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":3,"author":{"gitId":"wwweert123"},"content":"import seedu.financialplanner.investments.WatchList;","lastModifiedDate":"2023-10-09"},{"lineNumber":4,"author":{"gitId":"ryan1604"},"content":"import seedu.financialplanner.utils.Ui;","lastModifiedDate":"2023-10-07"},{"lineNumber":5,"author":{"gitId":"wwweert123"},"content":"import seedu.financialplanner.list.FinancialList;","lastModifiedDate":"2023-10-09"},{"lineNumber":6,"author":{"gitId":"ryan1604"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":7,"author":{"gitId":"ryan1604"},"content":"public class Command {","lastModifiedDate":"2023-10-07"},{"lineNumber":8,"author":{"gitId":"wwweert123"},"content":" public void execute(Ui ui, FinancialList financialList, WatchList watchList) {","lastModifiedDate":"2023-10-09"},{"lineNumber":9,"author":{"gitId":"ryan1604"},"content":" }","lastModifiedDate":"2023-10-07"},{"lineNumber":10,"author":{"gitId":"ryan1604"},"content":"}","lastModifiedDate":"2023-10-07"}],"authorContributionMap":{"wwweert123":3,"ryan1604":7}},{"path":"src/main/java/seedu/financialplanner/commands/Entry.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"NeoMinWei"},"content":"package seedu.financialplanner.commands;","lastModifiedDate":"2023-10-08"},{"lineNumber":2,"author":{"gitId":"NeoMinWei"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":3,"author":{"gitId":"wwweert123"},"content":"import seedu.financialplanner.investments.WatchList;","lastModifiedDate":"2023-10-09"},{"lineNumber":4,"author":{"gitId":"NeoMinWei"},"content":"import seedu.financialplanner.list.FinancialList;","lastModifiedDate":"2023-10-08"},{"lineNumber":5,"author":{"gitId":"ryan1604"},"content":"import seedu.financialplanner.utils.Ui;","lastModifiedDate":"2023-10-09"},{"lineNumber":6,"author":{"gitId":"NeoMinWei"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":7,"author":{"gitId":"NeoMinWei"},"content":"public class Entry extends Command{","lastModifiedDate":"2023-10-08"},{"lineNumber":8,"author":{"gitId":"NeoMinWei"},"content":" private static final String INCOME \u003d \"income\";","lastModifiedDate":"2023-10-08"},{"lineNumber":9,"author":{"gitId":"NeoMinWei"},"content":" private static final String EXPENSE \u003d \"expense\";","lastModifiedDate":"2023-10-08"},{"lineNumber":10,"author":{"gitId":"ryan1604"},"content":" protected String input;","lastModifiedDate":"2023-10-09"},{"lineNumber":11,"author":{"gitId":"NeoMinWei"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":12,"author":{"gitId":"ryan1604"},"content":" public Entry(String input) {","lastModifiedDate":"2023-10-09"},{"lineNumber":13,"author":{"gitId":"ryan1604"},"content":" this.input \u003d input;","lastModifiedDate":"2023-10-09"},{"lineNumber":14,"author":{"gitId":"NeoMinWei"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":15,"author":{"gitId":"NeoMinWei"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":16,"author":{"gitId":"ryan1604"},"content":" private int determineRecur(String parameters) {","lastModifiedDate":"2023-10-09"},{"lineNumber":17,"author":{"gitId":"NeoMinWei"},"content":" if (parameters.contains(\"r/\")) {","lastModifiedDate":"2023-10-08"},{"lineNumber":18,"author":{"gitId":"NeoMinWei"},"content":" int indexOfRecur \u003d parameters.indexOf(\"r/\");","lastModifiedDate":"2023-10-08"},{"lineNumber":19,"author":{"gitId":"NeoMinWei"},"content":" String recur \u003d parameters.substring(indexOfRecur + 2).trim();","lastModifiedDate":"2023-10-08"},{"lineNumber":20,"author":{"gitId":"NeoMinWei"},"content":" return Integer.parseInt(recur);","lastModifiedDate":"2023-10-08"},{"lineNumber":21,"author":{"gitId":"NeoMinWei"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":22,"author":{"gitId":"NeoMinWei"},"content":" return 0;","lastModifiedDate":"2023-10-08"},{"lineNumber":23,"author":{"gitId":"NeoMinWei"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":24,"author":{"gitId":"NeoMinWei"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":25,"author":{"gitId":"ryan1604"},"content":" @Override","lastModifiedDate":"2023-10-09"},{"lineNumber":26,"author":{"gitId":"wwweert123"},"content":" public void execute(Ui ui, FinancialList list, WatchList watchList) {","lastModifiedDate":"2023-10-09"},{"lineNumber":27,"author":{"gitId":"ryan1604"},"content":" String[] split \u003d input.split(\" \", 2);","lastModifiedDate":"2023-10-09"},{"lineNumber":28,"author":{"gitId":"ryan1604"},"content":" String entryType \u003d split[0];","lastModifiedDate":"2023-10-09"},{"lineNumber":29,"author":{"gitId":"ryan1604"},"content":" String parameters \u003d split[1];","lastModifiedDate":"2023-10-09"},{"lineNumber":30,"author":{"gitId":"ryan1604"},"content":" int recur \u003d determineRecur(parameters);","lastModifiedDate":"2023-10-09"},{"lineNumber":31,"author":{"gitId":"NeoMinWei"},"content":" int indexOfAmount \u003d parameters.indexOf(\"a/\");","lastModifiedDate":"2023-10-08"},{"lineNumber":32,"author":{"gitId":"NeoMinWei"},"content":" int indexOfType \u003d parameters.indexOf(\"t/\");","lastModifiedDate":"2023-10-08"},{"lineNumber":33,"author":{"gitId":"NeoMinWei"},"content":" double value \u003d Double.parseDouble(parameters.substring(indexOfAmount + 2, indexOfType).trim());","lastModifiedDate":"2023-10-08"},{"lineNumber":34,"author":{"gitId":"NeoMinWei"},"content":" String type;","lastModifiedDate":"2023-10-08"},{"lineNumber":35,"author":{"gitId":"NeoMinWei"},"content":" if (recur \u003d\u003d 0) {","lastModifiedDate":"2023-10-08"},{"lineNumber":36,"author":{"gitId":"NeoMinWei"},"content":" type \u003d parameters.substring(indexOfType + 2).trim();","lastModifiedDate":"2023-10-08"},{"lineNumber":37,"author":{"gitId":"NeoMinWei"},"content":" } else {","lastModifiedDate":"2023-10-08"},{"lineNumber":38,"author":{"gitId":"NeoMinWei"},"content":" int indexOfRecur \u003d parameters.indexOf(\"r/\");","lastModifiedDate":"2023-10-08"},{"lineNumber":39,"author":{"gitId":"NeoMinWei"},"content":" type \u003d parameters.substring(indexOfType + 2, indexOfRecur).trim();","lastModifiedDate":"2023-10-08"},{"lineNumber":40,"author":{"gitId":"NeoMinWei"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":41,"author":{"gitId":"NeoMinWei"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":42,"author":{"gitId":"NeoMinWei"},"content":" switch (entryType) {","lastModifiedDate":"2023-10-08"},{"lineNumber":43,"author":{"gitId":"NeoMinWei"},"content":" case INCOME:","lastModifiedDate":"2023-10-08"},{"lineNumber":44,"author":{"gitId":"NeoMinWei"},"content":" list.addIncome(value, type, recur);","lastModifiedDate":"2023-10-08"},{"lineNumber":45,"author":{"gitId":"NeoMinWei"},"content":" break;","lastModifiedDate":"2023-10-08"},{"lineNumber":46,"author":{"gitId":"NeoMinWei"},"content":" case EXPENSE:","lastModifiedDate":"2023-10-08"},{"lineNumber":47,"author":{"gitId":"NeoMinWei"},"content":" list.addExpense(value, type, recur);","lastModifiedDate":"2023-10-08"},{"lineNumber":48,"author":{"gitId":"NeoMinWei"},"content":" break;","lastModifiedDate":"2023-10-08"},{"lineNumber":49,"author":{"gitId":"NeoMinWei"},"content":" default:","lastModifiedDate":"2023-10-08"},{"lineNumber":50,"author":{"gitId":"ryan1604"},"content":" ui.showMessage(\"Unidentified entry.\");","lastModifiedDate":"2023-10-09"},{"lineNumber":51,"author":{"gitId":"NeoMinWei"},"content":" break;","lastModifiedDate":"2023-10-08"},{"lineNumber":52,"author":{"gitId":"NeoMinWei"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":53,"author":{"gitId":"NeoMinWei"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":54,"author":{"gitId":"NeoMinWei"},"content":"}","lastModifiedDate":"2023-10-08"}],"authorContributionMap":{"wwweert123":2,"NeoMinWei":41,"ryan1604":11}},{"path":"src/main/java/seedu/financialplanner/commands/Exit.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ryan1604"},"content":"package seedu.financialplanner.commands;","lastModifiedDate":"2023-10-07"},{"lineNumber":2,"author":{"gitId":"ryan1604"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":3,"author":{"gitId":"wwweert123"},"content":"import seedu.financialplanner.investments.WatchList;","lastModifiedDate":"2023-10-09"},{"lineNumber":4,"author":{"gitId":"ryan1604"},"content":"import seedu.financialplanner.list.FinancialList;","lastModifiedDate":"2023-10-09"},{"lineNumber":5,"author":{"gitId":"ryan1604"},"content":"import seedu.financialplanner.utils.Ui;","lastModifiedDate":"2023-10-07"},{"lineNumber":6,"author":{"gitId":"ryan1604"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":7,"author":{"gitId":"ryan1604"},"content":"public class Exit extends Command {","lastModifiedDate":"2023-10-07"},{"lineNumber":8,"author":{"gitId":"ryan1604"},"content":" public Exit() {","lastModifiedDate":"2023-10-07"},{"lineNumber":9,"author":{"gitId":"ryan1604"},"content":" }","lastModifiedDate":"2023-10-07"},{"lineNumber":10,"author":{"gitId":"ryan1604"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":11,"author":{"gitId":"ryan1604"},"content":" @Override","lastModifiedDate":"2023-10-07"},{"lineNumber":12,"author":{"gitId":"wwweert123"},"content":" public void execute(Ui ui, FinancialList financialList, WatchList watchList) {","lastModifiedDate":"2023-10-09"},{"lineNumber":13,"author":{"gitId":"ryan1604"},"content":" }","lastModifiedDate":"2023-10-07"},{"lineNumber":14,"author":{"gitId":"ryan1604"},"content":"}","lastModifiedDate":"2023-10-07"}],"authorContributionMap":{"wwweert123":2,"ryan1604":12}},{"path":"src/main/java/seedu/financialplanner/commands/Invalid.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ryan1604"},"content":"package seedu.financialplanner.commands;","lastModifiedDate":"2023-10-07"},{"lineNumber":2,"author":{"gitId":"ryan1604"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":3,"author":{"gitId":"wwweert123"},"content":"import seedu.financialplanner.investments.WatchList;","lastModifiedDate":"2023-10-09"},{"lineNumber":4,"author":{"gitId":"ryan1604"},"content":"import seedu.financialplanner.list.FinancialList;","lastModifiedDate":"2023-10-09"},{"lineNumber":5,"author":{"gitId":"ryan1604"},"content":"import seedu.financialplanner.utils.Ui;","lastModifiedDate":"2023-10-07"},{"lineNumber":6,"author":{"gitId":"ryan1604"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":7,"author":{"gitId":"ryan1604"},"content":"public class Invalid extends Command {","lastModifiedDate":"2023-10-07"},{"lineNumber":8,"author":{"gitId":"ryan1604"},"content":" public Invalid() {","lastModifiedDate":"2023-10-07"},{"lineNumber":9,"author":{"gitId":"ryan1604"},"content":" }","lastModifiedDate":"2023-10-07"},{"lineNumber":10,"author":{"gitId":"ryan1604"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":11,"author":{"gitId":"ryan1604"},"content":" @Override","lastModifiedDate":"2023-10-07"},{"lineNumber":12,"author":{"gitId":"wwweert123"},"content":" public void execute(Ui ui, FinancialList financialList, WatchList watchList) {","lastModifiedDate":"2023-10-09"},{"lineNumber":13,"author":{"gitId":"ryan1604"},"content":" ui.showMessage(\"Unknown command. Please try again.\");","lastModifiedDate":"2023-10-09"},{"lineNumber":14,"author":{"gitId":"ryan1604"},"content":" }","lastModifiedDate":"2023-10-07"},{"lineNumber":15,"author":{"gitId":"ryan1604"},"content":"}","lastModifiedDate":"2023-10-07"}],"authorContributionMap":{"wwweert123":2,"ryan1604":13}},{"path":"src/main/java/seedu/financialplanner/commands/WatchListCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"wwweert123"},"content":"package seedu.financialplanner.commands;","lastModifiedDate":"2023-10-09"},{"lineNumber":2,"author":{"gitId":"wwweert123"},"content":"","lastModifiedDate":"2023-10-09"},{"lineNumber":3,"author":{"gitId":"wwweert123"},"content":"import org.json.simple.JSONArray;","lastModifiedDate":"2023-10-09"},{"lineNumber":4,"author":{"gitId":"wwweert123"},"content":"import org.json.simple.JSONObject;","lastModifiedDate":"2023-10-09"},{"lineNumber":5,"author":{"gitId":"wwweert123"},"content":"import seedu.financialplanner.investments.WatchList;","lastModifiedDate":"2023-10-09"},{"lineNumber":6,"author":{"gitId":"wwweert123"},"content":"import seedu.financialplanner.list.FinancialList;","lastModifiedDate":"2023-10-09"},{"lineNumber":7,"author":{"gitId":"wwweert123"},"content":"import seedu.financialplanner.utils.Ui;","lastModifiedDate":"2023-10-09"},{"lineNumber":8,"author":{"gitId":"wwweert123"},"content":"","lastModifiedDate":"2023-10-09"},{"lineNumber":9,"author":{"gitId":"wwweert123"},"content":"public class WatchListCommand extends Command {","lastModifiedDate":"2023-10-09"},{"lineNumber":10,"author":{"gitId":"wwweert123"},"content":" @Override","lastModifiedDate":"2023-10-09"},{"lineNumber":11,"author":{"gitId":"wwweert123"},"content":" public void execute(Ui ui, FinancialList financialList, WatchList watchList) {","lastModifiedDate":"2023-10-09"},{"lineNumber":12,"author":{"gitId":"wwweert123"},"content":" JSONArray stocks \u003d watchList.fetchFMPStockPrices();","lastModifiedDate":"2023-10-09"},{"lineNumber":13,"author":{"gitId":"wwweert123"},"content":" ui.printWatchListHeader();","lastModifiedDate":"2023-10-09"},{"lineNumber":14,"author":{"gitId":"wwweert123"},"content":" for (Object o : stocks) {","lastModifiedDate":"2023-10-09"},{"lineNumber":15,"author":{"gitId":"wwweert123"},"content":" JSONObject stock \u003d (JSONObject) o;","lastModifiedDate":"2023-10-09"},{"lineNumber":16,"author":{"gitId":"wwweert123"},"content":" ui.printStockInfo(stock);","lastModifiedDate":"2023-10-09"},{"lineNumber":17,"author":{"gitId":"wwweert123"},"content":" }","lastModifiedDate":"2023-10-09"},{"lineNumber":18,"author":{"gitId":"wwweert123"},"content":" }","lastModifiedDate":"2023-10-09"},{"lineNumber":19,"author":{"gitId":"wwweert123"},"content":"}","lastModifiedDate":"2023-10-09"}],"authorContributionMap":{"wwweert123":19}},{"path":"src/main/java/seedu/financialplanner/exceptions/FinancialPlannerException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ryan1604"},"content":"package seedu.financialplanner.exceptions;","lastModifiedDate":"2023-10-07"},{"lineNumber":2,"author":{"gitId":"ryan1604"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":3,"author":{"gitId":"ryan1604"},"content":"public class FinancialPlannerException extends Exception {","lastModifiedDate":"2023-10-07"},{"lineNumber":4,"author":{"gitId":"ryan1604"},"content":" public FinancialPlannerException(String message) {","lastModifiedDate":"2023-10-07"},{"lineNumber":5,"author":{"gitId":"ryan1604"},"content":" super(message);","lastModifiedDate":"2023-10-07"},{"lineNumber":6,"author":{"gitId":"ryan1604"},"content":" }","lastModifiedDate":"2023-10-07"},{"lineNumber":7,"author":{"gitId":"ryan1604"},"content":"}","lastModifiedDate":"2023-10-07"}],"authorContributionMap":{"ryan1604":7}},{"path":"src/main/java/seedu/financialplanner/investments/Stock.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"wwweert123"},"content":"package seedu.financialplanner.investments;","lastModifiedDate":"2023-10-08"},{"lineNumber":2,"author":{"gitId":"wwweert123"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":3,"author":{"gitId":"wwweert123"},"content":"import org.json.simple.JSONArray;","lastModifiedDate":"2023-10-08"},{"lineNumber":4,"author":{"gitId":"wwweert123"},"content":"import org.json.simple.JSONObject;","lastModifiedDate":"2023-10-08"},{"lineNumber":5,"author":{"gitId":"wwweert123"},"content":"import org.json.simple.parser.JSONParser;","lastModifiedDate":"2023-10-08"},{"lineNumber":6,"author":{"gitId":"wwweert123"},"content":"import org.json.simple.parser.ParseException;","lastModifiedDate":"2023-10-08"},{"lineNumber":7,"author":{"gitId":"wwweert123"},"content":"import seedu.financialplanner.exceptions.FinancialPlannerException;","lastModifiedDate":"2023-10-08"},{"lineNumber":8,"author":{"gitId":"wwweert123"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":9,"author":{"gitId":"wwweert123"},"content":"import java.io.IOException;","lastModifiedDate":"2023-10-08"},{"lineNumber":10,"author":{"gitId":"wwweert123"},"content":"import java.net.URI;","lastModifiedDate":"2023-10-08"},{"lineNumber":11,"author":{"gitId":"wwweert123"},"content":"import java.net.http.HttpClient;","lastModifiedDate":"2023-10-08"},{"lineNumber":12,"author":{"gitId":"wwweert123"},"content":"import java.net.http.HttpRequest;","lastModifiedDate":"2023-10-08"},{"lineNumber":13,"author":{"gitId":"wwweert123"},"content":"import java.net.http.HttpResponse;","lastModifiedDate":"2023-10-08"},{"lineNumber":14,"author":{"gitId":"wwweert123"},"content":"import java.time.Duration;","lastModifiedDate":"2023-10-08"},{"lineNumber":15,"author":{"gitId":"wwweert123"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":16,"author":{"gitId":"wwweert123"},"content":"public class Stock {","lastModifiedDate":"2023-10-08"},{"lineNumber":17,"author":{"gitId":"wwweert123"},"content":" private String symbol;","lastModifiedDate":"2023-10-08"},{"lineNumber":18,"author":{"gitId":"wwweert123"},"content":" private String market;","lastModifiedDate":"2023-10-08"},{"lineNumber":19,"author":{"gitId":"wwweert123"},"content":" private String stockName;","lastModifiedDate":"2023-10-08"},{"lineNumber":20,"author":{"gitId":"wwweert123"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":21,"author":{"gitId":"wwweert123"},"content":" public Stock(String symbol, String market) throws FinancialPlannerException {","lastModifiedDate":"2023-10-09"},{"lineNumber":22,"author":{"gitId":"wwweert123"},"content":" this.symbol \u003d symbol;","lastModifiedDate":"2023-10-08"},{"lineNumber":23,"author":{"gitId":"wwweert123"},"content":" this.market \u003d market;","lastModifiedDate":"2023-10-08"},{"lineNumber":24,"author":{"gitId":"wwweert123"},"content":" this.stockName \u003d getStockNameFromAPI(symbol,market);","lastModifiedDate":"2023-10-09"},{"lineNumber":25,"author":{"gitId":"wwweert123"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":26,"author":{"gitId":"wwweert123"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":27,"author":{"gitId":"wwweert123"},"content":" public String getStockName() {","lastModifiedDate":"2023-10-09"},{"lineNumber":28,"author":{"gitId":"wwweert123"},"content":" return stockName;","lastModifiedDate":"2023-10-09"},{"lineNumber":29,"author":{"gitId":"wwweert123"},"content":" }","lastModifiedDate":"2023-10-09"},{"lineNumber":30,"author":{"gitId":"wwweert123"},"content":" public String getStockNameFromAPI(String symbol, String market) throws FinancialPlannerException {","lastModifiedDate":"2023-10-09"},{"lineNumber":31,"author":{"gitId":"wwweert123"},"content":" final String API_ENDPOINT \u003d \"https://financialmodelingprep.com/api/v3/search-ticker?query\u003d\";","lastModifiedDate":"2023-10-08"},{"lineNumber":32,"author":{"gitId":"wwweert123"},"content":" final String API_KEY \u003d \"rNCNMmSLUR3BAyeKFHwN69QGzE8fmig1\";","lastModifiedDate":"2023-10-08"},{"lineNumber":33,"author":{"gitId":"wwweert123"},"content":" String requestURI \u003d String.format(\"%s%s\u0026exchange\u003d%s\u0026apikey\u003d%s\", API_ENDPOINT,symbol,market,API_KEY);","lastModifiedDate":"2023-10-08"},{"lineNumber":34,"author":{"gitId":"wwweert123"},"content":" HttpClient client \u003d HttpClient.newHttpClient();","lastModifiedDate":"2023-10-08"},{"lineNumber":35,"author":{"gitId":"wwweert123"},"content":" HttpRequest request \u003d HttpRequest.newBuilder(URI.create(requestURI))","lastModifiedDate":"2023-10-08"},{"lineNumber":36,"author":{"gitId":"wwweert123"},"content":" .header(\"accept\", \"application/json\")","lastModifiedDate":"2023-10-08"},{"lineNumber":37,"author":{"gitId":"wwweert123"},"content":" .GET()","lastModifiedDate":"2023-10-08"},{"lineNumber":38,"author":{"gitId":"wwweert123"},"content":" .timeout(Duration.ofSeconds(10))","lastModifiedDate":"2023-10-08"},{"lineNumber":39,"author":{"gitId":"wwweert123"},"content":" .build();","lastModifiedDate":"2023-10-08"},{"lineNumber":40,"author":{"gitId":"wwweert123"},"content":" try {","lastModifiedDate":"2023-10-08"},{"lineNumber":41,"author":{"gitId":"wwweert123"},"content":" HttpResponse\u003cString\u003e response \u003d client.send(request, HttpResponse.BodyHandlers.ofString());","lastModifiedDate":"2023-10-08"},{"lineNumber":42,"author":{"gitId":"wwweert123"},"content":" Object obj \u003d new JSONParser().parse(response.body());","lastModifiedDate":"2023-10-08"},{"lineNumber":43,"author":{"gitId":"wwweert123"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":44,"author":{"gitId":"wwweert123"},"content":" JSONArray ja \u003d (JSONArray) obj;","lastModifiedDate":"2023-10-08"},{"lineNumber":45,"author":{"gitId":"wwweert123"},"content":" if (ja.isEmpty()) {","lastModifiedDate":"2023-10-09"},{"lineNumber":46,"author":{"gitId":"wwweert123"},"content":" throw new FinancialPlannerException(\"stock not found\");","lastModifiedDate":"2023-10-08"},{"lineNumber":47,"author":{"gitId":"wwweert123"},"content":" }","lastModifiedDate":"2023-10-09"},{"lineNumber":48,"author":{"gitId":"wwweert123"},"content":" JSONObject stock \u003d (JSONObject) ja.get(0);","lastModifiedDate":"2023-10-08"},{"lineNumber":49,"author":{"gitId":"wwweert123"},"content":" String symbolFound \u003d (String) stock.get(\"symbol\");","lastModifiedDate":"2023-10-09"},{"lineNumber":50,"author":{"gitId":"wwweert123"},"content":" // TODO: Might need to use AMEX when NYSE is used","lastModifiedDate":"2023-10-09"},{"lineNumber":51,"author":{"gitId":"wwweert123"},"content":" // TODO: Need to check if it is added already","lastModifiedDate":"2023-10-09"},{"lineNumber":52,"author":{"gitId":"wwweert123"},"content":" // TODO: add a cap to adding","lastModifiedDate":"2023-10-09"},{"lineNumber":53,"author":{"gitId":"wwweert123"},"content":" // TODO: Separate based on market","lastModifiedDate":"2023-10-09"},{"lineNumber":54,"author":{"gitId":"wwweert123"},"content":" // TODO: add other info","lastModifiedDate":"2023-10-09"},{"lineNumber":55,"author":{"gitId":"wwweert123"},"content":" // TODO: testing","lastModifiedDate":"2023-10-09"},{"lineNumber":56,"author":{"gitId":"wwweert123"},"content":" if (!symbolFound.equals(symbol)) {","lastModifiedDate":"2023-10-09"},{"lineNumber":57,"author":{"gitId":"wwweert123"},"content":" throw new FinancialPlannerException(\"Stock not found\");","lastModifiedDate":"2023-10-09"},{"lineNumber":58,"author":{"gitId":"wwweert123"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":59,"author":{"gitId":"wwweert123"},"content":" return (String) stock.get(\"name\");","lastModifiedDate":"2023-10-09"},{"lineNumber":60,"author":{"gitId":"wwweert123"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-10-08"},{"lineNumber":61,"author":{"gitId":"wwweert123"},"content":" throw new RuntimeException(e);","lastModifiedDate":"2023-10-08"},{"lineNumber":62,"author":{"gitId":"wwweert123"},"content":" } catch (InterruptedException e) {","lastModifiedDate":"2023-10-08"},{"lineNumber":63,"author":{"gitId":"wwweert123"},"content":" throw new RuntimeException(e);","lastModifiedDate":"2023-10-08"},{"lineNumber":64,"author":{"gitId":"wwweert123"},"content":" } catch (ParseException e) {","lastModifiedDate":"2023-10-08"},{"lineNumber":65,"author":{"gitId":"wwweert123"},"content":" throw new RuntimeException(e);","lastModifiedDate":"2023-10-08"},{"lineNumber":66,"author":{"gitId":"wwweert123"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":67,"author":{"gitId":"wwweert123"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":68,"author":{"gitId":"wwweert123"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":69,"author":{"gitId":"wwweert123"},"content":" public String getSymbol() {","lastModifiedDate":"2023-10-08"},{"lineNumber":70,"author":{"gitId":"wwweert123"},"content":" return symbol;","lastModifiedDate":"2023-10-08"},{"lineNumber":71,"author":{"gitId":"wwweert123"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":72,"author":{"gitId":"wwweert123"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":73,"author":{"gitId":"wwweert123"},"content":" public void setSymbol(String symbol) {","lastModifiedDate":"2023-10-08"},{"lineNumber":74,"author":{"gitId":"wwweert123"},"content":" this.symbol \u003d symbol;","lastModifiedDate":"2023-10-08"},{"lineNumber":75,"author":{"gitId":"wwweert123"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":76,"author":{"gitId":"wwweert123"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":77,"author":{"gitId":"wwweert123"},"content":" @Override","lastModifiedDate":"2023-10-08"},{"lineNumber":78,"author":{"gitId":"wwweert123"},"content":" public String toString() {","lastModifiedDate":"2023-10-08"},{"lineNumber":79,"author":{"gitId":"wwweert123"},"content":" return symbol + \",\";","lastModifiedDate":"2023-10-08"},{"lineNumber":80,"author":{"gitId":"wwweert123"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":81,"author":{"gitId":"wwweert123"},"content":"}","lastModifiedDate":"2023-10-08"}],"authorContributionMap":{"wwweert123":81}},{"path":"src/main/java/seedu/financialplanner/investments/WatchList.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"wwweert123"},"content":"package seedu.financialplanner.investments;","lastModifiedDate":"2023-10-09"},{"lineNumber":2,"author":{"gitId":"wwweert123"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":3,"author":{"gitId":"wwweert123"},"content":"import org.json.simple.JSONArray;","lastModifiedDate":"2023-10-08"},{"lineNumber":4,"author":{"gitId":"wwweert123"},"content":"import org.json.simple.parser.JSONParser;","lastModifiedDate":"2023-10-08"},{"lineNumber":5,"author":{"gitId":"wwweert123"},"content":"import org.json.simple.parser.ParseException;","lastModifiedDate":"2023-10-08"},{"lineNumber":6,"author":{"gitId":"wwweert123"},"content":"import seedu.financialplanner.exceptions.FinancialPlannerException;","lastModifiedDate":"2023-10-09"},{"lineNumber":7,"author":{"gitId":"wwweert123"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":8,"author":{"gitId":"wwweert123"},"content":"import java.io.IOException;","lastModifiedDate":"2023-10-08"},{"lineNumber":9,"author":{"gitId":"wwweert123"},"content":"import java.net.URI;","lastModifiedDate":"2023-10-08"},{"lineNumber":10,"author":{"gitId":"wwweert123"},"content":"import java.net.http.HttpClient;","lastModifiedDate":"2023-10-08"},{"lineNumber":11,"author":{"gitId":"wwweert123"},"content":"import java.net.http.HttpRequest;","lastModifiedDate":"2023-10-08"},{"lineNumber":12,"author":{"gitId":"wwweert123"},"content":"import java.net.http.HttpResponse;","lastModifiedDate":"2023-10-08"},{"lineNumber":13,"author":{"gitId":"wwweert123"},"content":"import java.time.Duration;","lastModifiedDate":"2023-10-08"},{"lineNumber":14,"author":{"gitId":"wwweert123"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-10-08"},{"lineNumber":15,"author":{"gitId":"wwweert123"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":16,"author":{"gitId":"wwweert123"},"content":"public class WatchList {","lastModifiedDate":"2023-10-09"},{"lineNumber":17,"author":{"gitId":"wwweert123"},"content":" private ArrayList\u003cStock\u003e stocks;","lastModifiedDate":"2023-10-09"},{"lineNumber":18,"author":{"gitId":"wwweert123"},"content":" private final String API_ENDPOINT \u003d \"https://financialmodelingprep.com/api/v3/quote/\";","lastModifiedDate":"2023-10-08"},{"lineNumber":19,"author":{"gitId":"wwweert123"},"content":" private final String API_KEY \u003d \"rNCNMmSLUR3BAyeKFHwN69QGzE8fmig1\";","lastModifiedDate":"2023-10-08"},{"lineNumber":20,"author":{"gitId":"wwweert123"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":21,"author":{"gitId":"wwweert123"},"content":" public WatchList() {","lastModifiedDate":"2023-10-09"},{"lineNumber":22,"author":{"gitId":"wwweert123"},"content":" stocks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-10-09"},{"lineNumber":23,"author":{"gitId":"wwweert123"},"content":" try {","lastModifiedDate":"2023-10-09"},{"lineNumber":24,"author":{"gitId":"wwweert123"},"content":" Stock apple \u003d new Stock(\"AAPL\", \"NASDAQ\");","lastModifiedDate":"2023-10-09"},{"lineNumber":25,"author":{"gitId":"wwweert123"},"content":" stocks.add(apple);","lastModifiedDate":"2023-10-09"},{"lineNumber":26,"author":{"gitId":"wwweert123"},"content":" Stock meta \u003d new Stock(\"META\", \"NASDAQ\");","lastModifiedDate":"2023-10-09"},{"lineNumber":27,"author":{"gitId":"wwweert123"},"content":" stocks.add(meta);","lastModifiedDate":"2023-10-09"},{"lineNumber":28,"author":{"gitId":"wwweert123"},"content":" Stock google \u003d new Stock(\"GOOGL\", \"NASDAQ\");","lastModifiedDate":"2023-10-09"},{"lineNumber":29,"author":{"gitId":"wwweert123"},"content":" stocks.add(google);","lastModifiedDate":"2023-10-09"},{"lineNumber":30,"author":{"gitId":"wwweert123"},"content":" } catch (FinancialPlannerException e) {","lastModifiedDate":"2023-10-09"},{"lineNumber":31,"author":{"gitId":"wwweert123"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-10-09"},{"lineNumber":32,"author":{"gitId":"wwweert123"},"content":" }","lastModifiedDate":"2023-10-09"},{"lineNumber":33,"author":{"gitId":"wwweert123"},"content":" }","lastModifiedDate":"2023-10-09"},{"lineNumber":34,"author":{"gitId":"wwweert123"},"content":"","lastModifiedDate":"2023-10-09"},{"lineNumber":35,"author":{"gitId":"wwweert123"},"content":" public JSONArray fetchFMPStockPrices() {","lastModifiedDate":"2023-10-09"},{"lineNumber":36,"author":{"gitId":"wwweert123"},"content":" HttpClient client \u003d HttpClient.newHttpClient();","lastModifiedDate":"2023-10-09"},{"lineNumber":37,"author":{"gitId":"wwweert123"},"content":" StringBuilder queryStocks \u003d new StringBuilder();","lastModifiedDate":"2023-10-08"},{"lineNumber":38,"author":{"gitId":"wwweert123"},"content":" for (Stock stock : stocks) {","lastModifiedDate":"2023-10-08"},{"lineNumber":39,"author":{"gitId":"wwweert123"},"content":" queryStocks.append(stock.toString());","lastModifiedDate":"2023-10-08"},{"lineNumber":40,"author":{"gitId":"wwweert123"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":41,"author":{"gitId":"wwweert123"},"content":" String requestURI \u003d String.format(\"%s%s?apikey\u003d%s\", API_ENDPOINT, queryStocks,API_KEY);","lastModifiedDate":"2023-10-08"},{"lineNumber":42,"author":{"gitId":"wwweert123"},"content":" HttpRequest request \u003d HttpRequest.newBuilder(URI.create(requestURI))","lastModifiedDate":"2023-10-08"},{"lineNumber":43,"author":{"gitId":"wwweert123"},"content":" .header(\"accept\", \"application/json\")","lastModifiedDate":"2023-10-08"},{"lineNumber":44,"author":{"gitId":"wwweert123"},"content":" .GET()","lastModifiedDate":"2023-10-08"},{"lineNumber":45,"author":{"gitId":"wwweert123"},"content":" .timeout(Duration.ofSeconds(10))","lastModifiedDate":"2023-10-08"},{"lineNumber":46,"author":{"gitId":"wwweert123"},"content":" .build();","lastModifiedDate":"2023-10-08"},{"lineNumber":47,"author":{"gitId":"wwweert123"},"content":" Object obj;","lastModifiedDate":"2023-10-09"},{"lineNumber":48,"author":{"gitId":"wwweert123"},"content":" try {","lastModifiedDate":"2023-10-08"},{"lineNumber":49,"author":{"gitId":"wwweert123"},"content":" HttpResponse\u003cString\u003e response \u003d client.send(request, HttpResponse.BodyHandlers.ofString());","lastModifiedDate":"2023-10-08"},{"lineNumber":50,"author":{"gitId":"wwweert123"},"content":" // System.out.println(response.body());","lastModifiedDate":"2023-10-08"},{"lineNumber":51,"author":{"gitId":"wwweert123"},"content":" obj \u003d new JSONParser().parse(response.body());","lastModifiedDate":"2023-10-09"},{"lineNumber":52,"author":{"gitId":"wwweert123"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-10-08"},{"lineNumber":53,"author":{"gitId":"wwweert123"},"content":" throw new RuntimeException(e);","lastModifiedDate":"2023-10-08"},{"lineNumber":54,"author":{"gitId":"wwweert123"},"content":" } catch (InterruptedException e) {","lastModifiedDate":"2023-10-08"},{"lineNumber":55,"author":{"gitId":"wwweert123"},"content":" throw new RuntimeException(e);","lastModifiedDate":"2023-10-08"},{"lineNumber":56,"author":{"gitId":"wwweert123"},"content":" } catch (ParseException e) {","lastModifiedDate":"2023-10-08"},{"lineNumber":57,"author":{"gitId":"wwweert123"},"content":" throw new RuntimeException(e);","lastModifiedDate":"2023-10-08"},{"lineNumber":58,"author":{"gitId":"wwweert123"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":59,"author":{"gitId":"wwweert123"},"content":" return (JSONArray) obj;","lastModifiedDate":"2023-10-09"},{"lineNumber":60,"author":{"gitId":"wwweert123"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":61,"author":{"gitId":"wwweert123"},"content":"","lastModifiedDate":"2023-10-09"},{"lineNumber":62,"author":{"gitId":"wwweert123"},"content":" public String addStock(String market, String stockCode) throws FinancialPlannerException {","lastModifiedDate":"2023-10-09"},{"lineNumber":63,"author":{"gitId":"wwweert123"},"content":" Stock newStock \u003d null;","lastModifiedDate":"2023-10-09"},{"lineNumber":64,"author":{"gitId":"wwweert123"},"content":" newStock \u003d new Stock(stockCode, market);","lastModifiedDate":"2023-10-09"},{"lineNumber":65,"author":{"gitId":"wwweert123"},"content":" stocks.add(newStock);","lastModifiedDate":"2023-10-09"},{"lineNumber":66,"author":{"gitId":"wwweert123"},"content":" return newStock.getStockName();","lastModifiedDate":"2023-10-09"},{"lineNumber":67,"author":{"gitId":"wwweert123"},"content":" }","lastModifiedDate":"2023-10-09"},{"lineNumber":68,"author":{"gitId":"wwweert123"},"content":"}","lastModifiedDate":"2023-10-08"}],"authorContributionMap":{"wwweert123":68}},{"path":"src/main/java/seedu/financialplanner/list/Cashflow.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"NeoMinWei"},"content":"package seedu.financialplanner.list;","lastModifiedDate":"2023-10-08"},{"lineNumber":2,"author":{"gitId":"NeoMinWei"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":3,"author":{"gitId":"NeoMinWei"},"content":"public class Cashflow {","lastModifiedDate":"2023-10-08"},{"lineNumber":4,"author":{"gitId":"NeoMinWei"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":5,"author":{"gitId":"NeoMinWei"},"content":" protected static double balance \u003d 0;","lastModifiedDate":"2023-10-08"},{"lineNumber":6,"author":{"gitId":"NeoMinWei"},"content":" protected double value;","lastModifiedDate":"2023-10-08"},{"lineNumber":7,"author":{"gitId":"NeoMinWei"},"content":" protected String type;","lastModifiedDate":"2023-10-08"},{"lineNumber":8,"author":{"gitId":"NeoMinWei"},"content":" protected int recur;","lastModifiedDate":"2023-10-08"},{"lineNumber":9,"author":{"gitId":"NeoMinWei"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":10,"author":{"gitId":"NeoMinWei"},"content":" public Cashflow(double value, String type, int recur) {","lastModifiedDate":"2023-10-08"},{"lineNumber":11,"author":{"gitId":"NeoMinWei"},"content":" this.value \u003d value;","lastModifiedDate":"2023-10-08"},{"lineNumber":12,"author":{"gitId":"NeoMinWei"},"content":" this.type \u003d type;","lastModifiedDate":"2023-10-08"},{"lineNumber":13,"author":{"gitId":"NeoMinWei"},"content":" this.recur \u003d recur;","lastModifiedDate":"2023-10-08"},{"lineNumber":14,"author":{"gitId":"NeoMinWei"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":15,"author":{"gitId":"NeoMinWei"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":16,"author":{"gitId":"NeoMinWei"},"content":" public Cashflow() {","lastModifiedDate":"2023-10-08"},{"lineNumber":17,"author":{"gitId":"NeoMinWei"},"content":" this.value \u003d 0;","lastModifiedDate":"2023-10-08"},{"lineNumber":18,"author":{"gitId":"NeoMinWei"},"content":" this.type \u003d null;","lastModifiedDate":"2023-10-08"},{"lineNumber":19,"author":{"gitId":"NeoMinWei"},"content":" this.recur \u003d 0;","lastModifiedDate":"2023-10-08"},{"lineNumber":20,"author":{"gitId":"NeoMinWei"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":21,"author":{"gitId":"NeoMinWei"},"content":"}","lastModifiedDate":"2023-10-08"}],"authorContributionMap":{"NeoMinWei":21}},{"path":"src/main/java/seedu/financialplanner/list/Expense.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"NeoMinWei"},"content":"package seedu.financialplanner.list;","lastModifiedDate":"2023-10-08"},{"lineNumber":2,"author":{"gitId":"NeoMinWei"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":3,"author":{"gitId":"NeoMinWei"},"content":"public class Expense extends Cashflow {","lastModifiedDate":"2023-10-08"},{"lineNumber":4,"author":{"gitId":"NeoMinWei"},"content":" public Expense(double value, String type, int recur) {","lastModifiedDate":"2023-10-08"},{"lineNumber":5,"author":{"gitId":"NeoMinWei"},"content":" super(value, type, recur);","lastModifiedDate":"2023-10-08"},{"lineNumber":6,"author":{"gitId":"NeoMinWei"},"content":" addIncomeValue(value);","lastModifiedDate":"2023-10-08"},{"lineNumber":7,"author":{"gitId":"NeoMinWei"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":8,"author":{"gitId":"NeoMinWei"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":9,"author":{"gitId":"NeoMinWei"},"content":" private void addIncomeValue(double value) {","lastModifiedDate":"2023-10-08"},{"lineNumber":10,"author":{"gitId":"NeoMinWei"},"content":" balance -\u003d value;","lastModifiedDate":"2023-10-08"},{"lineNumber":11,"author":{"gitId":"NeoMinWei"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":12,"author":{"gitId":"NeoMinWei"},"content":"}","lastModifiedDate":"2023-10-08"}],"authorContributionMap":{"NeoMinWei":12}},{"path":"src/main/java/seedu/financialplanner/list/FinancialList.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"NeoMinWei"},"content":"package seedu.financialplanner.list;","lastModifiedDate":"2023-10-08"},{"lineNumber":2,"author":{"gitId":"NeoMinWei"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":3,"author":{"gitId":"NeoMinWei"},"content":"import java.text.DecimalFormat;","lastModifiedDate":"2023-10-08"},{"lineNumber":4,"author":{"gitId":"NeoMinWei"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-10-08"},{"lineNumber":5,"author":{"gitId":"NeoMinWei"},"content":"import java.math.BigDecimal;","lastModifiedDate":"2023-10-08"},{"lineNumber":6,"author":{"gitId":"NeoMinWei"},"content":"import java.math.RoundingMode;","lastModifiedDate":"2023-10-08"},{"lineNumber":7,"author":{"gitId":"NeoMinWei"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":8,"author":{"gitId":"NeoMinWei"},"content":"public class FinancialList {","lastModifiedDate":"2023-10-08"},{"lineNumber":9,"author":{"gitId":"NeoMinWei"},"content":" protected ArrayList\u003cCashflow\u003e list \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-10-08"},{"lineNumber":10,"author":{"gitId":"NeoMinWei"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":11,"author":{"gitId":"NeoMinWei"},"content":" private void printAddedCashflow(String line) {","lastModifiedDate":"2023-10-08"},{"lineNumber":12,"author":{"gitId":"NeoMinWei"},"content":" DecimalFormat decimalFormat \u003d new DecimalFormat(\"####0.00\");","lastModifiedDate":"2023-10-08"},{"lineNumber":13,"author":{"gitId":"NeoMinWei"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":14,"author":{"gitId":"NeoMinWei"},"content":" Cashflow cashflow \u003d list.get(list.size() - 1);","lastModifiedDate":"2023-10-08"},{"lineNumber":15,"author":{"gitId":"NeoMinWei"},"content":" System.out.print(\"Added \" + line + \" of value: \");","lastModifiedDate":"2023-10-08"},{"lineNumber":16,"author":{"gitId":"NeoMinWei"},"content":" System.out.println(decimalFormat.format(round(cashflow.value, 2)) + \" to the list.\");","lastModifiedDate":"2023-10-08"},{"lineNumber":17,"author":{"gitId":"NeoMinWei"},"content":" System.out.println(\"type: \" + cashflow.type);","lastModifiedDate":"2023-10-08"},{"lineNumber":18,"author":{"gitId":"NeoMinWei"},"content":" if (cashflow.recur !\u003d 0) {","lastModifiedDate":"2023-10-08"},{"lineNumber":19,"author":{"gitId":"NeoMinWei"},"content":" System.out.println(\"recurring every: \" + cashflow.recur + \" days\");","lastModifiedDate":"2023-10-08"},{"lineNumber":20,"author":{"gitId":"NeoMinWei"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":21,"author":{"gitId":"NeoMinWei"},"content":" System.out.println(\"balance: \" + decimalFormat.format(round(Cashflow.balance, 2)));","lastModifiedDate":"2023-10-08"},{"lineNumber":22,"author":{"gitId":"NeoMinWei"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":23,"author":{"gitId":"NeoMinWei"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":24,"author":{"gitId":"NeoMinWei"},"content":" //@author mhadidg-reused","lastModifiedDate":"2023-10-08"},{"lineNumber":25,"author":{"gitId":"NeoMinWei"},"content":" //Reused from https://stackoverflow.com/questions/2808535/round-a-double-to-2-decimal-places","lastModifiedDate":"2023-10-08"},{"lineNumber":26,"author":{"gitId":"NeoMinWei"},"content":" public static double round(double value, int places) {","lastModifiedDate":"2023-10-08"},{"lineNumber":27,"author":{"gitId":"NeoMinWei"},"content":" if (places \u003c 0) {","lastModifiedDate":"2023-10-08"},{"lineNumber":28,"author":{"gitId":"NeoMinWei"},"content":" throw new IllegalArgumentException();","lastModifiedDate":"2023-10-08"},{"lineNumber":29,"author":{"gitId":"NeoMinWei"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":30,"author":{"gitId":"NeoMinWei"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":31,"author":{"gitId":"NeoMinWei"},"content":" BigDecimal bd \u003d BigDecimal.valueOf(value);","lastModifiedDate":"2023-10-08"},{"lineNumber":32,"author":{"gitId":"NeoMinWei"},"content":" bd \u003d bd.setScale(places, RoundingMode.HALF_UP);","lastModifiedDate":"2023-10-08"},{"lineNumber":33,"author":{"gitId":"NeoMinWei"},"content":" return bd.doubleValue();","lastModifiedDate":"2023-10-08"},{"lineNumber":34,"author":{"gitId":"NeoMinWei"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":35,"author":{"gitId":"NeoMinWei"},"content":" //@author mhadidg","lastModifiedDate":"2023-10-08"},{"lineNumber":36,"author":{"gitId":"NeoMinWei"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":37,"author":{"gitId":"NeoMinWei"},"content":" public void addIncome(double value, String type, int recur) {","lastModifiedDate":"2023-10-08"},{"lineNumber":38,"author":{"gitId":"NeoMinWei"},"content":" Income toAdd \u003d new Income(value, type, recur);","lastModifiedDate":"2023-10-08"},{"lineNumber":39,"author":{"gitId":"NeoMinWei"},"content":" list.add(toAdd);","lastModifiedDate":"2023-10-08"},{"lineNumber":40,"author":{"gitId":"NeoMinWei"},"content":" printAddedCashflow(\"income\");","lastModifiedDate":"2023-10-08"},{"lineNumber":41,"author":{"gitId":"NeoMinWei"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":42,"author":{"gitId":"NeoMinWei"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":43,"author":{"gitId":"NeoMinWei"},"content":" public void addExpense(double value, String type, int recur) {","lastModifiedDate":"2023-10-08"},{"lineNumber":44,"author":{"gitId":"NeoMinWei"},"content":" Expense toAdd \u003d new Expense(value, type, recur);","lastModifiedDate":"2023-10-08"},{"lineNumber":45,"author":{"gitId":"NeoMinWei"},"content":" list.add(toAdd);","lastModifiedDate":"2023-10-08"},{"lineNumber":46,"author":{"gitId":"NeoMinWei"},"content":" printAddedCashflow(\"expense\");","lastModifiedDate":"2023-10-08"},{"lineNumber":47,"author":{"gitId":"NeoMinWei"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":48,"author":{"gitId":"NeoMinWei"},"content":"}","lastModifiedDate":"2023-10-08"}],"authorContributionMap":{"NeoMinWei":48}},{"path":"src/main/java/seedu/financialplanner/list/Income.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"NeoMinWei"},"content":"package seedu.financialplanner.list;","lastModifiedDate":"2023-10-08"},{"lineNumber":2,"author":{"gitId":"NeoMinWei"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":3,"author":{"gitId":"NeoMinWei"},"content":"public class Income extends Cashflow{","lastModifiedDate":"2023-10-08"},{"lineNumber":4,"author":{"gitId":"NeoMinWei"},"content":" public Income(double value, String type, int recur) {","lastModifiedDate":"2023-10-08"},{"lineNumber":5,"author":{"gitId":"NeoMinWei"},"content":" super(value, type, recur);","lastModifiedDate":"2023-10-08"},{"lineNumber":6,"author":{"gitId":"NeoMinWei"},"content":" addIncomeValue(value);","lastModifiedDate":"2023-10-08"},{"lineNumber":7,"author":{"gitId":"NeoMinWei"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":8,"author":{"gitId":"NeoMinWei"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":9,"author":{"gitId":"NeoMinWei"},"content":" private void addIncomeValue(double value) {","lastModifiedDate":"2023-10-08"},{"lineNumber":10,"author":{"gitId":"NeoMinWei"},"content":" balance +\u003d value;","lastModifiedDate":"2023-10-08"},{"lineNumber":11,"author":{"gitId":"NeoMinWei"},"content":" }","lastModifiedDate":"2023-10-08"},{"lineNumber":12,"author":{"gitId":"NeoMinWei"},"content":"}","lastModifiedDate":"2023-10-08"}],"authorContributionMap":{"NeoMinWei":12}},{"path":"src/main/java/seedu/financialplanner/utils/Parser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ryan1604"},"content":"package seedu.financialplanner.utils;","lastModifiedDate":"2023-10-07"},{"lineNumber":2,"author":{"gitId":"ryan1604"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":3,"author":{"gitId":"wwweert123"},"content":"","lastModifiedDate":"2023-10-09"},{"lineNumber":4,"author":{"gitId":"ryan1604"},"content":"import seedu.financialplanner.commands.Command;","lastModifiedDate":"2023-10-07"},{"lineNumber":5,"author":{"gitId":"wwweert123"},"content":"import seedu.financialplanner.commands.Entry;","lastModifiedDate":"2023-10-09"},{"lineNumber":6,"author":{"gitId":"ryan1604"},"content":"import seedu.financialplanner.commands.Exit;","lastModifiedDate":"2023-10-07"},{"lineNumber":7,"author":{"gitId":"wwweert123"},"content":"import seedu.financialplanner.commands.WatchListCommand;","lastModifiedDate":"2023-10-09"},{"lineNumber":8,"author":{"gitId":"wwweert123"},"content":"import seedu.financialplanner.commands.Invalid;","lastModifiedDate":"2023-10-09"},{"lineNumber":9,"author":{"gitId":"wwweert123"},"content":"import seedu.financialplanner.commands.AddStockCommand;","lastModifiedDate":"2023-10-09"},{"lineNumber":10,"author":{"gitId":"ryan1604"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":11,"author":{"gitId":"ryan1604"},"content":"public class Parser {","lastModifiedDate":"2023-10-07"},{"lineNumber":12,"author":{"gitId":"ryan1604"},"content":" private static final String EXIT_COMMAND \u003d \"exit\";","lastModifiedDate":"2023-10-07"},{"lineNumber":13,"author":{"gitId":"NeoMinWei"},"content":"","lastModifiedDate":"2023-10-08"},{"lineNumber":14,"author":{"gitId":"wwweert123"},"content":" private static final String WATCHLIST_COMMAND \u003d \"watchlist\";","lastModifiedDate":"2023-10-08"},{"lineNumber":15,"author":{"gitId":"ryan1604"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":16,"author":{"gitId":"wwweert123"},"content":" private static final String ADD_ENTRY_COMMAND \u003d \"add\";","lastModifiedDate":"2023-10-09"},{"lineNumber":17,"author":{"gitId":"ryan1604"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":18,"author":{"gitId":"wwweert123"},"content":" private static final String ADD_STOCK_COMMAND \u003d \"addstock\";","lastModifiedDate":"2023-10-09"},{"lineNumber":19,"author":{"gitId":"wwweert123"},"content":"","lastModifiedDate":"2023-10-09"},{"lineNumber":20,"author":{"gitId":"ryan1604"},"content":" public static Command parse(String input) {","lastModifiedDate":"2023-10-07"},{"lineNumber":21,"author":{"gitId":"ryan1604"},"content":" String[] split \u003d input.split(\" \", 2);","lastModifiedDate":"2023-10-07"},{"lineNumber":22,"author":{"gitId":"ryan1604"},"content":" String command \u003d split[0].toLowerCase();","lastModifiedDate":"2023-10-07"},{"lineNumber":23,"author":{"gitId":"ryan1604"},"content":" String restOfInput \u003d split.length \u003e 1 ? split[1] : \"\"; // checks if rest of input is empty","lastModifiedDate":"2023-10-07"},{"lineNumber":24,"author":{"gitId":"ryan1604"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":25,"author":{"gitId":"ryan1604"},"content":" switch (command) {","lastModifiedDate":"2023-10-07"},{"lineNumber":26,"author":{"gitId":"ryan1604"},"content":" case EXIT_COMMAND:","lastModifiedDate":"2023-10-07"},{"lineNumber":27,"author":{"gitId":"ryan1604"},"content":" return new Exit();","lastModifiedDate":"2023-10-07"},{"lineNumber":28,"author":{"gitId":"wwweert123"},"content":" case WATCHLIST_COMMAND:","lastModifiedDate":"2023-10-08"},{"lineNumber":29,"author":{"gitId":"wwweert123"},"content":" return new WatchListCommand();","lastModifiedDate":"2023-10-09"},{"lineNumber":30,"author":{"gitId":"ryan1604"},"content":" case ADD_ENTRY_COMMAND:","lastModifiedDate":"2023-10-09"},{"lineNumber":31,"author":{"gitId":"ryan1604"},"content":" return new Entry(restOfInput);","lastModifiedDate":"2023-10-09"},{"lineNumber":32,"author":{"gitId":"wwweert123"},"content":" case ADD_STOCK_COMMAND:","lastModifiedDate":"2023-10-09"},{"lineNumber":33,"author":{"gitId":"wwweert123"},"content":" return parseAddStock(restOfInput);","lastModifiedDate":"2023-10-09"},{"lineNumber":34,"author":{"gitId":"ryan1604"},"content":" default:","lastModifiedDate":"2023-10-07"},{"lineNumber":35,"author":{"gitId":"ryan1604"},"content":" return new Invalid();","lastModifiedDate":"2023-10-07"},{"lineNumber":36,"author":{"gitId":"ryan1604"},"content":" }","lastModifiedDate":"2023-10-07"},{"lineNumber":37,"author":{"gitId":"ryan1604"},"content":" }","lastModifiedDate":"2023-10-07"},{"lineNumber":38,"author":{"gitId":"wwweert123"},"content":"","lastModifiedDate":"2023-10-09"},{"lineNumber":39,"author":{"gitId":"wwweert123"},"content":" private static Command parseAddStock(String restOfInput) {","lastModifiedDate":"2023-10-09"},{"lineNumber":40,"author":{"gitId":"wwweert123"},"content":" String[] split \u003d restOfInput.trim().split(\"m/|s/\");","lastModifiedDate":"2023-10-09"},{"lineNumber":41,"author":{"gitId":"wwweert123"},"content":" // TODO: check error here","lastModifiedDate":"2023-10-09"},{"lineNumber":42,"author":{"gitId":"wwweert123"},"content":" String exchange \u003d split[1].trim();","lastModifiedDate":"2023-10-09"},{"lineNumber":43,"author":{"gitId":"wwweert123"},"content":" String stockCode \u003d split[2].trim();","lastModifiedDate":"2023-10-09"},{"lineNumber":44,"author":{"gitId":"wwweert123"},"content":" return new AddStockCommand(exchange, stockCode);","lastModifiedDate":"2023-10-09"},{"lineNumber":45,"author":{"gitId":"wwweert123"},"content":" }","lastModifiedDate":"2023-10-09"},{"lineNumber":46,"author":{"gitId":"ryan1604"},"content":"}","lastModifiedDate":"2023-10-07"}],"authorContributionMap":{"wwweert123":21,"NeoMinWei":1,"ryan1604":24}},{"path":"src/main/java/seedu/financialplanner/utils/Ui.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ryan1604"},"content":"package seedu.financialplanner.utils;","lastModifiedDate":"2023-10-07"},{"lineNumber":2,"author":{"gitId":"ryan1604"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":3,"author":{"gitId":"wwweert123"},"content":"import org.apache.commons.lang3.StringUtils;","lastModifiedDate":"2023-10-09"},{"lineNumber":4,"author":{"gitId":"wwweert123"},"content":"import org.json.simple.JSONObject;","lastModifiedDate":"2023-10-09"},{"lineNumber":5,"author":{"gitId":"wwweert123"},"content":"","lastModifiedDate":"2023-10-09"},{"lineNumber":6,"author":{"gitId":"ryan1604"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-10-07"},{"lineNumber":7,"author":{"gitId":"ryan1604"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":8,"author":{"gitId":"ryan1604"},"content":"public class Ui {","lastModifiedDate":"2023-10-07"},{"lineNumber":9,"author":{"gitId":"ryan1604"},"content":" private Scanner in \u003d new Scanner(System.in);","lastModifiedDate":"2023-10-09"},{"lineNumber":10,"author":{"gitId":"ryan1604"},"content":" public Ui() {","lastModifiedDate":"2023-10-07"},{"lineNumber":11,"author":{"gitId":"ryan1604"},"content":" }","lastModifiedDate":"2023-10-07"},{"lineNumber":12,"author":{"gitId":"ryan1604"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":13,"author":{"gitId":"ryan1604"},"content":" public void showMessage(String message) {","lastModifiedDate":"2023-10-07"},{"lineNumber":14,"author":{"gitId":"ryan1604"},"content":" System.out.println(message);","lastModifiedDate":"2023-10-07"},{"lineNumber":15,"author":{"gitId":"ryan1604"},"content":" }","lastModifiedDate":"2023-10-07"},{"lineNumber":16,"author":{"gitId":"ryan1604"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":17,"author":{"gitId":"ryan1604"},"content":" public void welcomeMessage() {","lastModifiedDate":"2023-10-07"},{"lineNumber":18,"author":{"gitId":"ryan1604"},"content":" showMessage(\"Welcome to your Financial Planner. Type something to get started.\");","lastModifiedDate":"2023-10-09"},{"lineNumber":19,"author":{"gitId":"ryan1604"},"content":" }","lastModifiedDate":"2023-10-07"},{"lineNumber":20,"author":{"gitId":"ryan1604"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":21,"author":{"gitId":"ryan1604"},"content":" public void exitMessage() {","lastModifiedDate":"2023-10-07"},{"lineNumber":22,"author":{"gitId":"ryan1604"},"content":" showMessage(\"Exiting Financial Planner. Goodbye.\");","lastModifiedDate":"2023-10-09"},{"lineNumber":23,"author":{"gitId":"ryan1604"},"content":" }","lastModifiedDate":"2023-10-07"},{"lineNumber":24,"author":{"gitId":"ryan1604"},"content":"","lastModifiedDate":"2023-10-07"},{"lineNumber":25,"author":{"gitId":"ryan1604"},"content":" public String input() {","lastModifiedDate":"2023-10-07"},{"lineNumber":26,"author":{"gitId":"ryan1604"},"content":" return in.nextLine().trim();","lastModifiedDate":"2023-10-07"},{"lineNumber":27,"author":{"gitId":"ryan1604"},"content":" }","lastModifiedDate":"2023-10-07"},{"lineNumber":28,"author":{"gitId":"wwweert123"},"content":"","lastModifiedDate":"2023-10-09"},{"lineNumber":29,"author":{"gitId":"wwweert123"},"content":" public void printWatchListHeader() {","lastModifiedDate":"2023-10-09"},{"lineNumber":30,"author":{"gitId":"wwweert123"},"content":" System.out.print(\"Symbol\");","lastModifiedDate":"2023-10-09"},{"lineNumber":31,"author":{"gitId":"wwweert123"},"content":" System.out.print(\" \");","lastModifiedDate":"2023-10-09"},{"lineNumber":32,"author":{"gitId":"wwweert123"},"content":" System.out.print(\"Price\");","lastModifiedDate":"2023-10-09"},{"lineNumber":33,"author":{"gitId":"wwweert123"},"content":" System.out.print(\" \");","lastModifiedDate":"2023-10-09"},{"lineNumber":34,"author":{"gitId":"wwweert123"},"content":" System.out.print(\"Company Name\");","lastModifiedDate":"2023-10-09"},{"lineNumber":35,"author":{"gitId":"wwweert123"},"content":" System.out.println();","lastModifiedDate":"2023-10-09"},{"lineNumber":36,"author":{"gitId":"wwweert123"},"content":" }","lastModifiedDate":"2023-10-09"},{"lineNumber":37,"author":{"gitId":"wwweert123"},"content":"","lastModifiedDate":"2023-10-09"},{"lineNumber":38,"author":{"gitId":"wwweert123"},"content":" public void printStockInfo(JSONObject stock) {","lastModifiedDate":"2023-10-09"},{"lineNumber":39,"author":{"gitId":"wwweert123"},"content":" String symbol \u003d StringUtils.rightPad((String) stock.get(\"symbol\"), 10);","lastModifiedDate":"2023-10-09"},{"lineNumber":40,"author":{"gitId":"wwweert123"},"content":" String price \u003d StringUtils.rightPad(stock.get(\"price\").toString(), 10);","lastModifiedDate":"2023-10-09"},{"lineNumber":41,"author":{"gitId":"wwweert123"},"content":" String name \u003d StringUtils.rightPad((String) stock.get(\"name\"), 10);","lastModifiedDate":"2023-10-09"},{"lineNumber":42,"author":{"gitId":"wwweert123"},"content":" System.out.println(symbol + price + name);","lastModifiedDate":"2023-10-09"},{"lineNumber":43,"author":{"gitId":"wwweert123"},"content":" }","lastModifiedDate":"2023-10-09"},{"lineNumber":44,"author":{"gitId":"wwweert123"},"content":"","lastModifiedDate":"2023-10-09"},{"lineNumber":45,"author":{"gitId":"wwweert123"},"content":" public void printAddStock(String stockName) {","lastModifiedDate":"2023-10-09"},{"lineNumber":46,"author":{"gitId":"wwweert123"},"content":" System.out.println(\"You have successfully added:\");","lastModifiedDate":"2023-10-09"},{"lineNumber":47,"author":{"gitId":"wwweert123"},"content":" System.out.println(stockName);","lastModifiedDate":"2023-10-09"},{"lineNumber":48,"author":{"gitId":"wwweert123"},"content":" System.out.println(\"Use Watchlist to view it!\");","lastModifiedDate":"2023-10-09"},{"lineNumber":49,"author":{"gitId":"wwweert123"},"content":" }","lastModifiedDate":"2023-10-09"},{"lineNumber":50,"author":{"gitId":"ryan1604"},"content":"}","lastModifiedDate":"2023-10-07"}],"authorContributionMap":{"wwweert123":25,"ryan1604":25}},{"path":"src/test/java/seedu/financialplanner/FinancialPlannerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"ryan1604"},"content":"package seedu.financialplanner;","lastModifiedDate":"2023-10-07"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2020-05-24"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-24"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2020-05-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-24"},{"lineNumber":7,"author":{"gitId":"ryan1604"},"content":"class FinancialPlannerTest {","lastModifiedDate":"2023-10-07"},{"lineNumber":8,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2020-05-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":" public void sampleTest() {","lastModifiedDate":"2020-05-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":" assertTrue(true);","lastModifiedDate":"2020-05-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-24"}],"authorContributionMap":{"-":10,"ryan1604":2}}] diff --git a/AY2324S1-CS2113-T18-2_tp_master/commits.json b/AY2324S1-CS2113-T18-2_tp_master/commits.json index 1fdfecb..601aabf 100644 --- a/AY2324S1-CS2113-T18-2_tp_master/commits.json +++ b/AY2324S1-CS2113-T18-2_tp_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"wwweert123":[{"date":"2023-10-05","commitResults":[{"hash":"491c9238e3c2b52f8ddaa10ba332e9566a8b7e9e","isMergeCommit":false,"messageTitle":"Add aboutus links and add my my own md file","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":12,"deletions":7}}},{"hash":"2712d42c6b6d4552c9a0ea7bcc75de166bdf1546","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/AY2324S1-CS2113-T18-2/tp into Frederick-AboutUs","messageBody":"# Conflicts:\n#\tdocs/AboutUs.md\n","fileTypesAndContributionMap":{}},{"hash":"11db7a69a38c31d6f7658163f69ac8726f80a0b0","isMergeCommit":true,"messageTitle":"Merge pull request #3 from wwweert123/Frederick-AboutUs","messageBody":"Add aboutus links and add my my own md file","fileTypesAndContributionMap":{}}]},{"date":"2023-10-08","commitResults":[{"hash":"68d635974b5493f20ba1ffaa1b953cf0b798a5ae","isMergeCommit":false,"messageTitle":"Add new watchlist command and pull from FMP api for stock data","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":36,"deletions":0}}},{"hash":"5f7d5ba1fafae93224d2ae0559edae789e3747bd","isMergeCommit":false,"messageTitle":"Add simple JSON library to parse response body and print to UI","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":24,"deletions":1},"other":{"insertions":1,"deletions":0}}},{"hash":"bfa75c44ff77cc7824fb4a072c8d4a8e94a19e09","isMergeCommit":false,"messageTitle":"Use string format to create request URI","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":10,"deletions":2}}},{"hash":"d5ac9fceb7e20c02055b08cff4c73c88830bb993","isMergeCommit":false,"messageTitle":"Add a stock class and have the watchlist query API endpoint using stock classes created","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":87,"deletions":2}}},{"hash":"66c6dc6ad21cbde9abe158bb32b30160a572021d","isMergeCommit":false,"messageTitle":"Add commons lang library to allow for padding of string when printing","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":10,"deletions":7},"other":{"insertions":1,"deletions":0}}}]},{"date":"2023-10-09","commitResults":[{"hash":"9a32030207906b044fd774d1afcc8768c2f52b51","isMergeCommit":false,"messageTitle":"Create a watchlist class to reference stocks","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":31,"deletions":0},"other":{"insertions":12,"deletions":35}}},{"hash":"a311199b47d9c35e55f5509eaba762545283cd61","isMergeCommit":false,"messageTitle":"Create method in UI to print stock prices","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":19,"deletions":0}}},{"hash":"84fb7092fb5158ab4e8aeb7b0e00b521bdd981df","isMergeCommit":false,"messageTitle":"Add watchlist parameter to execute","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":8,"deletions":6}}},{"hash":"2977b5bb71d186cf5ba1d7e15eb4c59e029f88c3","isMergeCommit":false,"messageTitle":"Initialize watchlist on startup","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":1}}},{"hash":"df5605a78870802546be8dc5b852348e41405f8c","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into FrederickWatchlist","messageBody":"# Conflicts:\n#\tsrc/main/java/seedu/financialplanner/FinancialPlanner.java\n#\tsrc/main/java/seedu/financialplanner/commands/Command.java\n#\tsrc/main/java/seedu/financialplanner/commands/Exit.java\n#\tsrc/main/java/seedu/financialplanner/commands/Invalid.java\n#\tsrc/main/java/seedu/financialplanner/utils/Parser.java\n","fileTypesAndContributionMap":{}},{"hash":"74e0b77d800eb36b21b1534bb75611548d2b2164","isMergeCommit":false,"messageTitle":"Remove unused imports","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":16}}},{"hash":"fab0ae11bdae69d18f598f87848130409af67551","isMergeCommit":true,"messageTitle":"Merge pull request #33 from wwweert123/FrederickWatchlist","messageBody":"Frederick watchlist","fileTypesAndContributionMap":{}}]}],"NeoMinWei":[{"date":"2023-10-05","commitResults":[{"hash":"4f47ae40234b912a4c5b7dc60382509629d101a3","isMergeCommit":false,"messageTitle":"Add name to AboutUs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":8,"deletions":8}}},{"hash":"f2c1d37c4806aa17f190a32959ef65e5687b4aee","isMergeCommit":true,"messageTitle":"Merge pull request #1 from ryan1604/ryanChua-AboutUs","messageBody":"Update AboutUs","fileTypesAndContributionMap":{}},{"hash":"2c62d715ae126cdd37eb029c1637b350c38be6de","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/AY2324S1-CS2113-T18-2/tp into NeoMinWei-AboutUs","messageBody":"# Conflicts:\n#\tdocs/AboutUs.md\n","fileTypesAndContributionMap":{}},{"hash":"22503c3b8de7c4b1a38b85131f14e6b63162ded7","isMergeCommit":true,"messageTitle":"Merge pull request #2 from NeoMinWei/NeoMinWei-AboutUs","messageBody":"Add name to AboutUs","fileTypesAndContributionMap":{}},{"hash":"068afbff53a8490ae4d79d8b323ea58f34470cf9","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/AY2324S1-CS2113-T18-2/tp","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2023-10-08","commitResults":[{"hash":"df39139c6b034e42f46f335dcc8064168ac563aa","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/AY2324S1-CS2113-T18-2/tp","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"2d7049b261c1db9ee9b2fd302da80eac4f32b989","isMergeCommit":false,"messageTitle":"Create cashflow and income classes","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":33,"deletions":0}}},{"hash":"f8e310a44b9827b00635f829dd8d1fd8a11224e9","isMergeCommit":false,"messageTitle":"Create ArrayList to store entries","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":11,"deletions":0}}},{"hash":"ae8527bbe3908a49eee3eeba95bb39a9778f275b","isMergeCommit":false,"messageTitle":"Add ability to add income to the ArrayList","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":10,"deletions":2}}},{"hash":"c09c55e2fbf921cb8794c0eac6512dbc9b291f2a","isMergeCommit":false,"messageTitle":"Add ability to add income through user input","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":60,"deletions":5}}},{"hash":"17fea1ee0b01d0acd6fa797bca86c66770974214","isMergeCommit":false,"messageTitle":"Remove unused imports","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":5}}},{"hash":"d5200ef10bf45e451d5057995598577e58195500","isMergeCommit":false,"messageTitle":"Add rounding of double values to 2 decimal places","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":27,"deletions":2}}},{"hash":"c9daed435f0538014db06c642d487427e73b1ac8","isMergeCommit":false,"messageTitle":"Add expense class and ability to add expense through user input","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":26,"deletions":3}}},{"hash":"26b06f9c92c6a293c902d83d8de8f4fa7434c443","isMergeCommit":false,"messageTitle":"Fix bug of not recognising description of parameters","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":15,"deletions":7}}},{"hash":"9e54041da9ee4d502cf0869ecbf0f32571491295","isMergeCommit":true,"messageTitle":"Merge pull request #32 from NeoMinWei/branch-income","messageBody":"Add Income and Expense","fileTypesAndContributionMap":{}}]}],"ryan1604":[{"date":"2023-10-05","commitResults":[{"hash":"eab7be4bcbb2bd13648ec4f347d0278a5b33b3b1","isMergeCommit":false,"messageTitle":"Update AboutUs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":7,"deletions":7}}}]},{"date":"2023-10-07","commitResults":[{"hash":"e8da8d09f6900bdcf1299dabba13d3177794676f","isMergeCommit":false,"messageTitle":"Setup Ui and rename Duke to FinancialPlanner","messageBody":"Fixes #5\n","fileTypesAndContributionMap":{"functional-code":{"insertions":45,"deletions":22},"other":{"insertions":3,"deletions":3}}},{"hash":"d5be6d4bae825dbb2ba49c20588e7d1ecfaa8f7e","isMergeCommit":false,"messageTitle":"Add FinancialPlannerException","messageBody":"Fixes #8\n","fileTypesAndContributionMap":{"functional-code":{"insertions":7,"deletions":0}}},{"hash":"41909a10cf9d822fabd58091788fa8d898615517","isMergeCommit":false,"messageTitle":"Add Parser, add \u0027exit\u0027 and \u0027invalid\u0027 command to Parser","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":67,"deletions":1},"other":{"insertions":1,"deletions":1}}},{"hash":"d926641278054652b6bf5faba4d7a71495ad91b9","isMergeCommit":true,"messageTitle":"Merge pull request #26 from ryan1604/branch-setup","messageBody":"Branch setup","fileTypesAndContributionMap":{}}]},{"date":"2023-10-09","commitResults":[{"hash":"4b7aa80bfe1c46aac6581012cfe57fe4efd37ab2","isMergeCommit":false,"messageTitle":"Update test file and multiple code refactorings","messageBody":"Fixes #34\n","fileTypesAndContributionMap":{"functional-code":{"insertions":28,"deletions":26}}},{"hash":"91c6f28655a8d39e1d9b3067075e1ef6c6b3f2c0","isMergeCommit":false,"messageTitle":"Remove unused import in Parser","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":2}}},{"hash":"636fa41f0e93e2a58fac846ff766483ae2845427","isMergeCommit":true,"messageTitle":"Merge pull request #35 from ryan1604/branch-code-quality","messageBody":"Update test file and multiple code refactorings","fileTypesAndContributionMap":{}}]}],"YFshadaow":[],"hshiah":[{"date":"2023-10-05","commitResults":[{"hash":"f4e110ae257a2d4b5945b76e92c4f67b53a9b9c9","isMergeCommit":false,"messageTitle":"Test","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":1}}},{"hash":"483fb3d416dea3f0ae1999b544aaa379f9eb6575","isMergeCommit":true,"messageTitle":"Merge pull request #4 from hshiah/hshiah","messageBody":"Shi,Haochen","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"wwweert123":{"docs":6,"functional-code":180,"test-code":0,"other":2},"NeoMinWei":{"docs":4,"functional-code":139,"test-code":0},"ryan1604":{"docs":1,"functional-code":129,"test-code":2,"other":1},"YFshadaow":{"docs":0,"functional-code":0,"test-code":0},"hshiah":{"docs":0,"functional-code":0,"test-code":0}},"authorContributionVariance":{"wwweert123":2467.9136,"NeoMinWei":2219.6667,"ryan1604":1285.7283,"YFshadaow":0.0,"hshiah":0.47222218},"authorDisplayNameMap":{"wwweert123":"CS2113-T18-2 PUA ..RICK","NeoMinWei":"CS2113-T18-2 NEO .. WEI","ryan1604":"CS2113-T18-2 CHUA..RYAN","YFshadaow":"CS2113-T18-2 REN ..GDAO","hshiah":"CS2113-T18-2 SHI ..CHEN"}} +{"authorDailyContributionsMap":{"wwweert123":[{"date":"2023-10-05","commitResults":[{"hash":"491c9238e3c2b52f8ddaa10ba332e9566a8b7e9e","isMergeCommit":false,"messageTitle":"Add aboutus links and add my my own md file","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":12,"deletions":7}}},{"hash":"2712d42c6b6d4552c9a0ea7bcc75de166bdf1546","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/AY2324S1-CS2113-T18-2/tp into Frederick-AboutUs","messageBody":"# Conflicts:\n#\tdocs/AboutUs.md\n","fileTypesAndContributionMap":{}},{"hash":"11db7a69a38c31d6f7658163f69ac8726f80a0b0","isMergeCommit":true,"messageTitle":"Merge pull request #3 from wwweert123/Frederick-AboutUs","messageBody":"Add aboutus links and add my my own md file","fileTypesAndContributionMap":{}}]},{"date":"2023-10-08","commitResults":[{"hash":"68d635974b5493f20ba1ffaa1b953cf0b798a5ae","isMergeCommit":false,"messageTitle":"Add new watchlist command and pull from FMP api for stock data","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":36,"deletions":0}}},{"hash":"5f7d5ba1fafae93224d2ae0559edae789e3747bd","isMergeCommit":false,"messageTitle":"Add simple JSON library to parse response body and print to UI","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":24,"deletions":1},"other":{"insertions":1,"deletions":0}}},{"hash":"bfa75c44ff77cc7824fb4a072c8d4a8e94a19e09","isMergeCommit":false,"messageTitle":"Use string format to create request URI","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":10,"deletions":2}}},{"hash":"d5ac9fceb7e20c02055b08cff4c73c88830bb993","isMergeCommit":false,"messageTitle":"Add a stock class and have the watchlist query API endpoint using stock classes created","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":87,"deletions":2}}},{"hash":"66c6dc6ad21cbde9abe158bb32b30160a572021d","isMergeCommit":false,"messageTitle":"Add commons lang library to allow for padding of string when printing","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":10,"deletions":7},"other":{"insertions":1,"deletions":0}}}]},{"date":"2023-10-09","commitResults":[{"hash":"9a32030207906b044fd774d1afcc8768c2f52b51","isMergeCommit":false,"messageTitle":"Create a watchlist class to reference stocks","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":31,"deletions":0},"other":{"insertions":12,"deletions":35}}},{"hash":"a311199b47d9c35e55f5509eaba762545283cd61","isMergeCommit":false,"messageTitle":"Create method in UI to print stock prices","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":19,"deletions":0}}},{"hash":"84fb7092fb5158ab4e8aeb7b0e00b521bdd981df","isMergeCommit":false,"messageTitle":"Add watchlist parameter to execute","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":8,"deletions":6}}},{"hash":"2977b5bb71d186cf5ba1d7e15eb4c59e029f88c3","isMergeCommit":false,"messageTitle":"Initialize watchlist on startup","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":1}}},{"hash":"df5605a78870802546be8dc5b852348e41405f8c","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into FrederickWatchlist","messageBody":"# Conflicts:\n#\tsrc/main/java/seedu/financialplanner/FinancialPlanner.java\n#\tsrc/main/java/seedu/financialplanner/commands/Command.java\n#\tsrc/main/java/seedu/financialplanner/commands/Exit.java\n#\tsrc/main/java/seedu/financialplanner/commands/Invalid.java\n#\tsrc/main/java/seedu/financialplanner/utils/Parser.java\n","fileTypesAndContributionMap":{}},{"hash":"74e0b77d800eb36b21b1534bb75611548d2b2164","isMergeCommit":false,"messageTitle":"Remove unused imports","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":16}}},{"hash":"fab0ae11bdae69d18f598f87848130409af67551","isMergeCommit":true,"messageTitle":"Merge pull request #33 from wwweert123/FrederickWatchlist","messageBody":"Frederick watchlist","fileTypesAndContributionMap":{}},{"hash":"a778bb54cf3c686fc074b019c292a87b7beeb3dd","isMergeCommit":false,"messageTitle":"Add command for adding stock to watchlist","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":67,"deletions":5}}},{"hash":"bece3c1c0e553317e4fa0715467f3a782b274f1c","isMergeCommit":false,"messageTitle":"Add some minor error handling for response from API endpoint","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":19,"deletions":9}}}]},{"date":"2023-10-10","commitResults":[{"hash":"c6df4b251e96eda6f8271f3b1c9d4a7c8c5cd6f3","isMergeCommit":true,"messageTitle":"Merge pull request #37 from wwweert123/FrederickAddStock","messageBody":"Frederick add stock","fileTypesAndContributionMap":{}}]}],"NeoMinWei":[{"date":"2023-10-05","commitResults":[{"hash":"4f47ae40234b912a4c5b7dc60382509629d101a3","isMergeCommit":false,"messageTitle":"Add name to AboutUs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":8,"deletions":8}}},{"hash":"f2c1d37c4806aa17f190a32959ef65e5687b4aee","isMergeCommit":true,"messageTitle":"Merge pull request #1 from ryan1604/ryanChua-AboutUs","messageBody":"Update AboutUs","fileTypesAndContributionMap":{}},{"hash":"2c62d715ae126cdd37eb029c1637b350c38be6de","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/AY2324S1-CS2113-T18-2/tp into NeoMinWei-AboutUs","messageBody":"# Conflicts:\n#\tdocs/AboutUs.md\n","fileTypesAndContributionMap":{}},{"hash":"22503c3b8de7c4b1a38b85131f14e6b63162ded7","isMergeCommit":true,"messageTitle":"Merge pull request #2 from NeoMinWei/NeoMinWei-AboutUs","messageBody":"Add name to AboutUs","fileTypesAndContributionMap":{}},{"hash":"068afbff53a8490ae4d79d8b323ea58f34470cf9","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/AY2324S1-CS2113-T18-2/tp","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2023-10-08","commitResults":[{"hash":"df39139c6b034e42f46f335dcc8064168ac563aa","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/AY2324S1-CS2113-T18-2/tp","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"2d7049b261c1db9ee9b2fd302da80eac4f32b989","isMergeCommit":false,"messageTitle":"Create cashflow and income classes","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":33,"deletions":0}}},{"hash":"f8e310a44b9827b00635f829dd8d1fd8a11224e9","isMergeCommit":false,"messageTitle":"Create ArrayList to store entries","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":11,"deletions":0}}},{"hash":"ae8527bbe3908a49eee3eeba95bb39a9778f275b","isMergeCommit":false,"messageTitle":"Add ability to add income to the ArrayList","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":10,"deletions":2}}},{"hash":"c09c55e2fbf921cb8794c0eac6512dbc9b291f2a","isMergeCommit":false,"messageTitle":"Add ability to add income through user input","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":60,"deletions":5}}},{"hash":"17fea1ee0b01d0acd6fa797bca86c66770974214","isMergeCommit":false,"messageTitle":"Remove unused imports","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":5}}},{"hash":"d5200ef10bf45e451d5057995598577e58195500","isMergeCommit":false,"messageTitle":"Add rounding of double values to 2 decimal places","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":27,"deletions":2}}},{"hash":"c9daed435f0538014db06c642d487427e73b1ac8","isMergeCommit":false,"messageTitle":"Add expense class and ability to add expense through user input","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":26,"deletions":3}}},{"hash":"26b06f9c92c6a293c902d83d8de8f4fa7434c443","isMergeCommit":false,"messageTitle":"Fix bug of not recognising description of parameters","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":15,"deletions":7}}},{"hash":"9e54041da9ee4d502cf0869ecbf0f32571491295","isMergeCommit":true,"messageTitle":"Merge pull request #32 from NeoMinWei/branch-income","messageBody":"Add Income and Expense","fileTypesAndContributionMap":{}}]}],"ryan1604":[{"date":"2023-10-05","commitResults":[{"hash":"eab7be4bcbb2bd13648ec4f347d0278a5b33b3b1","isMergeCommit":false,"messageTitle":"Update AboutUs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":7,"deletions":7}}}]},{"date":"2023-10-07","commitResults":[{"hash":"e8da8d09f6900bdcf1299dabba13d3177794676f","isMergeCommit":false,"messageTitle":"Setup Ui and rename Duke to FinancialPlanner","messageBody":"Fixes #5\n","fileTypesAndContributionMap":{"functional-code":{"insertions":45,"deletions":22},"other":{"insertions":3,"deletions":3}}},{"hash":"d5be6d4bae825dbb2ba49c20588e7d1ecfaa8f7e","isMergeCommit":false,"messageTitle":"Add FinancialPlannerException","messageBody":"Fixes #8\n","fileTypesAndContributionMap":{"functional-code":{"insertions":7,"deletions":0}}},{"hash":"41909a10cf9d822fabd58091788fa8d898615517","isMergeCommit":false,"messageTitle":"Add Parser, add \u0027exit\u0027 and \u0027invalid\u0027 command to Parser","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":67,"deletions":1},"other":{"insertions":1,"deletions":1}}},{"hash":"d926641278054652b6bf5faba4d7a71495ad91b9","isMergeCommit":true,"messageTitle":"Merge pull request #26 from ryan1604/branch-setup","messageBody":"Branch setup","fileTypesAndContributionMap":{}}]},{"date":"2023-10-09","commitResults":[{"hash":"4b7aa80bfe1c46aac6581012cfe57fe4efd37ab2","isMergeCommit":false,"messageTitle":"Update test file and multiple code refactorings","messageBody":"Fixes #34\n","fileTypesAndContributionMap":{"functional-code":{"insertions":28,"deletions":26}}},{"hash":"91c6f28655a8d39e1d9b3067075e1ef6c6b3f2c0","isMergeCommit":false,"messageTitle":"Remove unused import in Parser","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":2}}},{"hash":"636fa41f0e93e2a58fac846ff766483ae2845427","isMergeCommit":true,"messageTitle":"Merge pull request #35 from ryan1604/branch-code-quality","messageBody":"Update test file and multiple code refactorings","fileTypesAndContributionMap":{}}]}],"YFshadaow":[],"hshiah":[{"date":"2023-10-05","commitResults":[{"hash":"f4e110ae257a2d4b5945b76e92c4f67b53a9b9c9","isMergeCommit":false,"messageTitle":"Test","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":1}}},{"hash":"483fb3d416dea3f0ae1999b544aaa379f9eb6575","isMergeCommit":true,"messageTitle":"Merge pull request #4 from hshiah/hshiah","messageBody":"Shi,Haochen","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"wwweert123":{"docs":6,"functional-code":254,"test-code":0,"other":2},"NeoMinWei":{"docs":4,"functional-code":138,"test-code":0},"ryan1604":{"docs":1,"functional-code":128,"test-code":2,"other":1},"YFshadaow":{"docs":0,"functional-code":0,"test-code":0},"hshiah":{"docs":0,"functional-code":0,"test-code":0}},"authorContributionVariance":{"wwweert123":4059.141,"NeoMinWei":2110.4265,"ryan1604":1225.507,"YFshadaow":0.0,"hshiah":0.44875357},"authorDisplayNameMap":{"wwweert123":"CS2113-T18-2 PUA ..RICK","NeoMinWei":"CS2113-T18-2 NEO .. WEI","ryan1604":"CS2113-T18-2 CHUA..RYAN","YFshadaow":"CS2113-T18-2 REN ..GDAO","hshiah":"CS2113-T18-2 SHI ..CHEN"}} diff --git a/archive.zip b/archive.zip index 684f7f8..697d657 100644 Binary files a/archive.zip and b/archive.zip differ diff --git a/reposense-logs/reposense.log.0 b/reposense-logs/reposense.log.0 index ff0d82d..a7eced9 100644 --- a/reposense-logs/reposense.log.0 +++ b/reposense-logs/reposense.log.0 @@ -1,20 +1,20 @@ -Oct 10, 2023 2:20:35 PM reposense.system.LogsManager addFileHandler +Oct 11, 2023 12:09:58 AM reposense.system.LogsManager addFileHandler INFO: Log temp folder has been successfully created -Oct 10, 2023 2:20:35 PM reposense.parser.CsvParser validateHeader +Oct 11, 2023 12:09:58 AM reposense.parser.CsvParser validateHeader INFO: Parsed header of CSV file, repo-config.csv, and recognized columns: Ignore Standalone Config, Repository's Location, Branch, Shallow Cloning, File formats, Ignore Glob List, Ignore Authors List, Find Previous Authors, Ignore Commits List -Oct 10, 2023 2:20:35 PM reposense.parser.CsvParser validateHeader +Oct 11, 2023 12:09:58 AM reposense.parser.CsvParser validateHeader INFO: Parsed header of CSV file, author-config.csv, and recognized columns: Author's Emails, Repository's Location, Author's GitHub ID, Branch, Author's Display Name, Ignore Glob List, Author's Git Author Name -Oct 10, 2023 2:20:35 PM reposense.model.AuthorConfiguration checkDuplicateAliases +Oct 11, 2023 12:09:58 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias choonsiang found. The alias will belong to the last author - ChoonSiang -Oct 10, 2023 2:20:36 PM reposense.model.AuthorConfiguration checkDuplicateAliases +Oct 11, 2023 12:09:58 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias barbaracwx found. The alias will belong to the last author - Barbaracwx -Oct 10, 2023 2:20:36 PM reposense.model.AuthorConfiguration checkDuplicateAliases +Oct 11, 2023 12:09:58 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias choonsiang found. The alias will belong to the last author - ChoonSiang -Oct 10, 2023 2:20:36 PM reposense.model.AuthorConfiguration checkDuplicateAliases +Oct 11, 2023 12:09:58 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias barbaracwx found. The alias will belong to the last author - Barbaracwx -Oct 10, 2023 2:20:36 PM reposense.parser.CsvParser validateHeader +Oct 11, 2023 12:09:58 AM reposense.parser.CsvParser validateHeader INFO: Parsed header of CSV file, group-config.csv, and recognized columns: Globs, Repository's Location, Group Name -Oct 10, 2023 2:20:36 PM reposense.git.GitConfig getGlobalGitLfsConfig +Oct 11, 2023 12:09:59 AM reposense.git.GitConfig getGlobalGitLfsConfig WARNING: Could not get global git lfs config java.lang.RuntimeException: reposense.system.CommandRunnerProcessException: Error returned from command git config --global --list on path . : fatal: unable to read config file '/home/runner/.gitconfig': No such file or directory @@ -30,313 +30,313 @@ fatal: unable to read config file '/home/runner/.gitconfig': No such file or dir at reposense.system.CommandRunner.runCommand(CommandRunner.java:21) ... 3 more -Oct 10, 2023 2:20:36 PM reposense.report.RepoCloner spawnCloneProcess +Oct 11, 2023 12:09:59 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S1-CS2113-W12-2/tp.git... -Oct 10, 2023 2:20:36 PM reposense.report.RepoCloner spawnCloneProcess +Oct 11, 2023 12:09:59 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S1-CS2113-T17-3/tp.git... -Oct 10, 2023 2:20:36 PM reposense.report.RepoCloner spawnCloneProcess +Oct 11, 2023 12:09:59 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S1-CS2113-T17-4/tp.git... -Oct 10, 2023 2:20:36 PM reposense.report.RepoCloner spawnCloneProcess +Oct 11, 2023 12:09:59 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S1-CS2113-W12-4/tp.git... -Oct 10, 2023 2:20:36 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/AY2324S1-CS2113-W12-4/tp.git to complete... -Oct 10, 2023 2:20:36 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/AY2324S1-CS2113-T17-3/tp.git to complete... -Oct 10, 2023 2:20:36 PM reposense.report.RepoCloner waitForCloneProcess +Oct 11, 2023 12:09:59 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S1-CS2113-W12-2/tp.git to complete... -Oct 10, 2023 2:20:36 PM reposense.report.RepoCloner waitForCloneProcess +Oct 11, 2023 12:09:59 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AY2324S1-CS2113-W12-4/tp.git to complete... +Oct 11, 2023 12:09:59 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S1-CS2113-T17-4/tp.git to complete... -Oct 10, 2023 2:20:36 PM reposense.report.RepoCloner waitForCloneProcess +Oct 11, 2023 12:09:59 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AY2324S1-CS2113-T17-3/tp.git to complete... +Oct 11, 2023 12:09:59 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S1-CS2113-W12-2/tp.git completed! -Oct 10, 2023 2:20:36 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S1-CS2113-W12-4/tp.git completed! -Oct 10, 2023 2:20:36 PM reposense.report.RepoCloner spawnCloneProcess +Oct 11, 2023 12:09:59 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S1-CS2113-T18-1/tp.git... -Oct 10, 2023 2:20:36 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/AY2324S1-CS2113-F11-3/tp.git... -Oct 10, 2023 2:20:36 PM reposense.report.ReportGenerator analyzeRepos +Oct 11, 2023 12:09:59 AM reposense.report.ReportGenerator analyzeRepos INFO: [1/17] Analyzing https://github.com/AY2324S1-CS2113-W12-2/tp.git (master)... -Oct 10, 2023 2:20:36 PM reposense.report.ReportGenerator analyzeRepos -INFO: [2/17] Analyzing https://github.com/AY2324S1-CS2113-W12-4/tp.git (master)... -Oct 10, 2023 2:20:36 PM reposense.report.RepoCloner waitForCloneProcess +Oct 11, 2023 12:09:59 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S1-CS2113-T18-1/tp.git to complete... -Oct 10, 2023 2:20:36 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/AY2324S1-CS2113-F11-3/tp.git to complete... -Oct 10, 2023 2:20:36 PM reposense.report.ReportGenerator updateRepoConfig +Oct 11, 2023 12:09:59 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S1-CS2113-W12-4/tp.git completed! +Oct 11, 2023 12:09:59 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S1-CS2113-W12-2/tp.git (master) does not contain a standalone config file. -Oct 10, 2023 2:20:36 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 11, 2023 12:09:59 AM reposense.report.ReportGenerator analyzeRepos +INFO: [2/17] Analyzing https://github.com/AY2324S1-CS2113-W12-4/tp.git (master)... +Oct 11, 2023 12:09:59 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/AY2324S1-CS2113-F11-3/tp.git... +Oct 11, 2023 12:09:59 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S1-CS2113-W12-2/tp.git (master)... -Oct 10, 2023 2:20:36 PM reposense.report.ReportGenerator updateRepoConfig +Oct 11, 2023 12:09:59 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AY2324S1-CS2113-F11-3/tp.git to complete... +Oct 11, 2023 12:09:59 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S1-CS2113-W12-4/tp.git (master) does not contain a standalone config file. -Oct 10, 2023 2:20:36 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 11, 2023 12:09:59 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S1-CS2113-W12-4/tp.git (master)... -Oct 10, 2023 2:20:37 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S1-CS2113-F11-3/tp.git completed! -Oct 10, 2023 2:20:37 PM reposense.report.RepoCloner waitForCloneProcess +Oct 11, 2023 12:09:59 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S1-CS2113-T18-1/tp.git completed! -Oct 10, 2023 2:20:37 PM reposense.report.RepoCloner spawnCloneProcess +Oct 11, 2023 12:09:59 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S1-CS2113-W12-1/tp.git... -Oct 10, 2023 2:20:37 PM reposense.report.RepoCloner waitForCloneProcess +Oct 11, 2023 12:09:59 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S1-CS2113-W12-1/tp.git to complete... -Oct 10, 2023 2:20:37 PM reposense.report.RepoCloner spawnCloneProcess +Oct 11, 2023 12:10:00 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S1-CS2113-F11-3/tp.git completed! +Oct 11, 2023 12:10:00 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S1-CS2113-W12-3/tp.git... -Oct 10, 2023 2:20:37 PM reposense.report.RepoCloner waitForCloneProcess +Oct 11, 2023 12:10:00 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S1-CS2113-W12-3/tp.git to complete... -Oct 10, 2023 2:20:37 PM reposense.report.RepoCloner waitForCloneProcess +Oct 11, 2023 12:10:00 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S1-CS2113-T17-4/tp.git completed! -Oct 10, 2023 2:20:37 PM reposense.report.RepoCloner spawnCloneProcess +Oct 11, 2023 12:10:00 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S1-CS2113-T18-2/tp.git... -Oct 10, 2023 2:20:37 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S1-CS2113-T17-3/tp.git completed! -Oct 10, 2023 2:20:37 PM reposense.report.RepoCloner waitForCloneProcess +Oct 11, 2023 12:10:00 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S1-CS2113-T18-2/tp.git to complete... -Oct 10, 2023 2:20:37 PM reposense.report.RepoCloner spawnCloneProcess +Oct 11, 2023 12:10:00 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S1-CS2113-W12-1/tp.git completed! +Oct 11, 2023 12:10:00 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S1-CS2113-T18-3/tp.git... -Oct 10, 2023 2:20:37 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S1-CS2113-W12-2/tp.git (master)... -Oct 10, 2023 2:20:37 PM reposense.report.RepoCloner waitForCloneProcess +Oct 11, 2023 12:10:00 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S1-CS2113-T18-3/tp.git to complete... -Oct 10, 2023 2:20:37 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S1-CS2113-W12-2/tp.git (master)... -Oct 10, 2023 2:20:38 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S1-CS2113-W12-3/tp.git completed! -Oct 10, 2023 2:20:38 PM reposense.report.RepoCloner spawnCloneProcess +Oct 11, 2023 12:10:00 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S1-CS2113-W12-2/tp.git (master)... +Oct 11, 2023 12:10:00 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S1-CS2113-T17-3/tp.git completed! +Oct 11, 2023 12:10:00 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S1-CS2113T-W11-1/tp.git... -Oct 10, 2023 2:20:38 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S1-CS2113-W12-1/tp.git completed! -Oct 10, 2023 2:20:38 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/AY2324S1-CS2113T-W11-1/tp.git to complete... -Oct 10, 2023 2:20:38 PM reposense.report.RepoCloner spawnCloneProcess +Oct 11, 2023 12:10:00 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S1-CS2113-W12-3/tp.git completed! +Oct 11, 2023 12:10:00 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S1-CS2113-T18-4/tp.git... -Oct 10, 2023 2:20:38 PM reposense.report.RepoCloner waitForCloneProcess +Oct 11, 2023 12:10:00 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AY2324S1-CS2113T-W11-1/tp.git to complete... +Oct 11, 2023 12:10:00 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S1-CS2113-T18-4/tp.git to complete... -Oct 10, 2023 2:20:38 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S1-CS2113-W12-2/tp.git (master) completed! -Oct 10, 2023 2:20:38 PM reposense.report.ReportGenerator analyzeRepos -INFO: [3/17] Analyzing https://github.com/AY2324S1-CS2113-F11-3/tp.git (master)... -Oct 10, 2023 2:20:38 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S1-CS2113-F11-3/tp.git (master) does not contain a standalone config file. -Oct 10, 2023 2:20:38 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S1-CS2113-F11-3/tp.git (master)... -Oct 10, 2023 2:20:38 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 11, 2023 12:10:00 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S1-CS2113-W12-2/tp.git (master)... +Oct 11, 2023 12:10:00 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S1-CS2113-W12-4/tp.git (master)... -Oct 10, 2023 2:20:38 PM reposense.report.RepoCloner waitForCloneProcess +Oct 11, 2023 12:10:00 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S1-CS2113-W12-2/tp.git (master) completed! +Oct 11, 2023 12:10:00 AM reposense.report.ReportGenerator analyzeRepos +INFO: [3/17] Analyzing https://github.com/AY2324S1-CS2113-T18-1/tp.git (master)... +Oct 11, 2023 12:10:00 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S1-CS2113-T18-2/tp.git completed! -Oct 10, 2023 2:20:38 PM reposense.report.RepoCloner spawnCloneProcess +Oct 11, 2023 12:10:01 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S1-CS2113-F11-1/tp.git... -Oct 10, 2023 2:20:38 PM reposense.report.RepoCloner waitForCloneProcess +Oct 11, 2023 12:10:01 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S1-CS2113-T18-3/tp.git completed! -Oct 10, 2023 2:20:38 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/AY2324S1-CS2113-F11-2/tp.git... -Oct 10, 2023 2:20:38 PM reposense.report.RepoCloner waitForCloneProcess +Oct 11, 2023 12:10:01 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S1-CS2113-T18-1/tp.git (master) does not contain a standalone config file. +Oct 11, 2023 12:10:01 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S1-CS2113-T18-1/tp.git (master)... +Oct 11, 2023 12:10:01 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S1-CS2113-F11-1/tp.git to complete... -Oct 10, 2023 2:20:38 PM reposense.report.RepoCloner waitForCloneProcess +Oct 11, 2023 12:10:01 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/AY2324S1-CS2113-F11-2/tp.git... +Oct 11, 2023 12:10:01 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S1-CS2113-F11-2/tp.git to complete... -Oct 10, 2023 2:20:38 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 11, 2023 12:10:01 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S1-CS2113-W12-4/tp.git (master)... -Oct 10, 2023 2:20:38 PM reposense.report.ReportGenerator analyzeRepo +Oct 11, 2023 12:10:01 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S1-CS2113-W12-4/tp.git (master) completed! -Oct 10, 2023 2:20:38 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S1-CS2113-F11-3/tp.git (master)... -Oct 10, 2023 2:20:38 PM reposense.report.ReportGenerator analyzeRepos -INFO: [4/17] Analyzing https://github.com/AY2324S1-CS2113-T18-1/tp.git (master)... -Oct 10, 2023 2:20:38 PM reposense.report.RepoCloner waitForCloneProcess +Oct 11, 2023 12:10:01 AM reposense.report.ReportGenerator analyzeRepos +INFO: [4/17] Analyzing https://github.com/AY2324S1-CS2113-F11-3/tp.git (master)... +Oct 11, 2023 12:10:01 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S1-CS2113T-W11-1/tp.git completed! -Oct 10, 2023 2:20:38 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/AY2324S1-CS2113-T17-2/tp.git... -Oct 10, 2023 2:20:38 PM reposense.report.RepoCloner waitForCloneProcess +Oct 11, 2023 12:10:01 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S1-CS2113-T18-4/tp.git completed! -Oct 10, 2023 2:20:38 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S1-CS2113-T18-1/tp.git (master) does not contain a standalone config file. -Oct 10, 2023 2:20:38 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S1-CS2113-T18-1/tp.git (master)... -Oct 10, 2023 2:20:38 PM reposense.report.RepoCloner waitForCloneProcess +Oct 11, 2023 12:10:01 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/AY2324S1-CS2113-T17-2/tp.git... +Oct 11, 2023 12:10:01 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S1-CS2113-F11-3/tp.git (master) does not contain a standalone config file. +Oct 11, 2023 12:10:01 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S1-CS2113-F11-3/tp.git (master)... +Oct 11, 2023 12:10:01 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S1-CS2113-T17-2/tp.git to complete... -Oct 10, 2023 2:20:38 PM reposense.report.RepoCloner spawnCloneProcess +Oct 11, 2023 12:10:01 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S1-CS2113T-W11-2/tp.git... -Oct 10, 2023 2:20:38 PM reposense.report.RepoCloner waitForCloneProcess +Oct 11, 2023 12:10:01 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S1-CS2113T-W11-2/tp.git to complete... -Oct 10, 2023 2:20:38 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S1-CS2113-F11-3/tp.git (master)... -Oct 10, 2023 2:20:38 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S1-CS2113-F11-3/tp.git (master) completed! -Oct 10, 2023 2:20:38 PM reposense.report.ReportGenerator analyzeRepos -INFO: [5/17] Analyzing https://github.com/AY2324S1-CS2113-T17-4/tp.git (master)... -Oct 10, 2023 2:20:38 PM reposense.report.RepoCloner waitForCloneProcess +Oct 11, 2023 12:10:01 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S1-CS2113-T18-1/tp.git (master)... +Oct 11, 2023 12:10:01 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S1-CS2113-F11-1/tp.git completed! -Oct 10, 2023 2:20:38 PM reposense.report.RepoCloner spawnCloneProcess +Oct 11, 2023 12:10:01 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S1-CS2113-F11-3/tp.git (master)... +Oct 11, 2023 12:10:01 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S1-CS2113-F11-2/tp.git completed! +Oct 11, 2023 12:10:01 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S1-CS2113-T17-1/tp.git... -Oct 10, 2023 2:20:38 PM reposense.report.RepoCloner waitForCloneProcess +Oct 11, 2023 12:10:01 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S1-CS2113-T17-1/tp.git to complete... -Oct 10, 2023 2:20:38 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S1-CS2113-F11-2/tp.git completed! -Oct 10, 2023 2:20:38 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S1-CS2113-T18-1/tp.git (master)... -Oct 10, 2023 2:20:38 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S1-CS2113-T17-4/tp.git (master) does not contain a standalone config file. -Oct 10, 2023 2:20:38 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S1-CS2113-T17-4/tp.git (master)... -Oct 10, 2023 2:20:39 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 11, 2023 12:10:01 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S1-CS2113-T18-1/tp.git (master)... -Oct 10, 2023 2:20:39 PM reposense.report.ReportGenerator analyzeRepo +Oct 11, 2023 12:10:01 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S1-CS2113-T18-1/tp.git (master) completed! -Oct 10, 2023 2:20:39 PM reposense.report.ReportGenerator analyzeRepos -INFO: [6/17] Analyzing https://github.com/AY2324S1-CS2113-T17-3/tp.git (master)... -Oct 10, 2023 2:20:39 PM reposense.report.RepoCloner waitForCloneProcess +Oct 11, 2023 12:10:01 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S1-CS2113-T17-2/tp.git completed! -Oct 10, 2023 2:20:39 PM reposense.report.RepoCloner waitForCloneProcess +Oct 11, 2023 12:10:01 AM reposense.report.ReportGenerator analyzeRepos +INFO: [5/17] Analyzing https://github.com/AY2324S1-CS2113-T17-4/tp.git (master)... +Oct 11, 2023 12:10:01 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S1-CS2113T-W11-2/tp.git completed! -Oct 10, 2023 2:20:39 PM reposense.report.ReportGenerator updateRepoConfig +Oct 11, 2023 12:10:01 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S1-CS2113-F11-3/tp.git (master)... +Oct 11, 2023 12:10:01 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S1-CS2113-F11-3/tp.git (master) completed! +Oct 11, 2023 12:10:01 AM reposense.report.ReportGenerator analyzeRepos +INFO: [6/17] Analyzing https://github.com/AY2324S1-CS2113-W12-1/tp.git (master)... +Oct 11, 2023 12:10:01 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S1-CS2113-W12-1/tp.git (master) does not contain a standalone config file. +Oct 11, 2023 12:10:01 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S1-CS2113-W12-1/tp.git (master)... +Oct 11, 2023 12:10:01 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S1-CS2113-T17-4/tp.git (master) does not contain a standalone config file. +Oct 11, 2023 12:10:01 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S1-CS2113-T17-4/tp.git (master)... +Oct 11, 2023 12:10:01 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S1-CS2113-T17-1/tp.git completed! +Oct 11, 2023 12:10:02 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S1-CS2113-W12-1/tp.git (master)... +Oct 11, 2023 12:10:02 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S1-CS2113-W12-1/tp.git (master)... +Oct 11, 2023 12:10:02 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S1-CS2113-W12-1/tp.git (master) completed! +Oct 11, 2023 12:10:02 AM reposense.report.ReportGenerator analyzeRepos +INFO: [7/17] Analyzing https://github.com/AY2324S1-CS2113-T17-3/tp.git (master)... +Oct 11, 2023 12:10:02 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S1-CS2113-T17-4/tp.git (master)... +Oct 11, 2023 12:10:02 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S1-CS2113-T17-3/tp.git (master) does not contain a standalone config file. -Oct 10, 2023 2:20:39 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 11, 2023 12:10:02 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S1-CS2113-T17-3/tp.git (master)... -Oct 10, 2023 2:20:39 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S1-CS2113-T17-4/tp.git (master)... -Oct 10, 2023 2:20:39 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S1-CS2113-T17-1/tp.git completed! -Oct 10, 2023 2:20:39 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 11, 2023 12:10:02 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S1-CS2113-T17-4/tp.git (master)... -Oct 10, 2023 2:20:39 PM reposense.report.ReportGenerator analyzeRepo +Oct 11, 2023 12:10:02 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S1-CS2113-T17-4/tp.git (master) completed! -Oct 10, 2023 2:20:39 PM reposense.report.ReportGenerator analyzeRepos -INFO: [7/17] Analyzing https://github.com/AY2324S1-CS2113-W12-3/tp.git (master)... -Oct 10, 2023 2:20:39 PM reposense.report.ReportGenerator updateRepoConfig +Oct 11, 2023 12:10:02 AM reposense.report.ReportGenerator analyzeRepos +INFO: [8/17] Analyzing https://github.com/AY2324S1-CS2113-W12-3/tp.git (master)... +Oct 11, 2023 12:10:02 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S1-CS2113-W12-3/tp.git (master) does not contain a standalone config file. -Oct 10, 2023 2:20:39 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 11, 2023 12:10:02 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S1-CS2113-W12-3/tp.git (master)... -Oct 10, 2023 2:20:39 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 11, 2023 12:10:02 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S1-CS2113-W12-3/tp.git (master)... -Oct 10, 2023 2:20:39 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 11, 2023 12:10:02 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S1-CS2113-W12-3/tp.git (master)... -Oct 10, 2023 2:20:39 PM reposense.report.ReportGenerator analyzeRepo +Oct 11, 2023 12:10:02 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S1-CS2113-W12-3/tp.git (master) completed! -Oct 10, 2023 2:20:39 PM reposense.report.ReportGenerator analyzeRepos -INFO: [8/17] Analyzing https://github.com/AY2324S1-CS2113-W12-1/tp.git (master)... -Oct 10, 2023 2:20:39 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S1-CS2113-W12-1/tp.git (master) does not contain a standalone config file. -Oct 10, 2023 2:20:39 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S1-CS2113-W12-1/tp.git (master)... -Oct 10, 2023 2:20:40 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S1-CS2113-W12-1/tp.git (master)... -Oct 10, 2023 2:20:40 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S1-CS2113-W12-1/tp.git (master)... -Oct 10, 2023 2:20:40 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S1-CS2113-W12-1/tp.git (master) completed! -Oct 10, 2023 2:20:40 PM reposense.report.ReportGenerator analyzeRepos +Oct 11, 2023 12:10:02 AM reposense.report.ReportGenerator analyzeRepos INFO: [9/17] Analyzing https://github.com/AY2324S1-CS2113-T18-2/tp.git (master)... -Oct 10, 2023 2:20:40 PM reposense.report.ReportGenerator updateRepoConfig +Oct 11, 2023 12:10:02 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S1-CS2113-T18-2/tp.git (master) does not contain a standalone config file. -Oct 10, 2023 2:20:40 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 11, 2023 12:10:02 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S1-CS2113-T18-2/tp.git (master)... -Oct 10, 2023 2:20:40 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S1-CS2113-T17-3/tp.git (master)... -Oct 10, 2023 2:20:40 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S1-CS2113-T17-3/tp.git (master)... -Oct 10, 2023 2:20:40 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S1-CS2113-T17-3/tp.git (master) completed! -Oct 10, 2023 2:20:40 PM reposense.report.ReportGenerator analyzeRepos -INFO: [10/17] Analyzing https://github.com/AY2324S1-CS2113-T18-3/tp.git (master)... -Oct 10, 2023 2:20:40 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S1-CS2113-T18-3/tp.git (master) does not contain a standalone config file. -Oct 10, 2023 2:20:40 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S1-CS2113-T18-3/tp.git (master)... -Oct 10, 2023 2:20:40 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 11, 2023 12:10:02 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S1-CS2113-T18-2/tp.git (master)... -Oct 10, 2023 2:20:40 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 11, 2023 12:10:02 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S1-CS2113-T18-2/tp.git (master)... -Oct 10, 2023 2:20:40 PM reposense.report.ReportGenerator analyzeRepo +Oct 11, 2023 12:10:02 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S1-CS2113-T18-2/tp.git (master) completed! -Oct 10, 2023 2:20:40 PM reposense.report.ReportGenerator analyzeRepos -INFO: [11/17] Analyzing https://github.com/AY2324S1-CS2113T-W11-1/tp.git (master)... -Oct 10, 2023 2:20:40 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 11, 2023 12:10:02 AM reposense.report.ReportGenerator analyzeRepos +INFO: [10/17] Analyzing https://github.com/AY2324S1-CS2113-T18-3/tp.git (master)... +Oct 11, 2023 12:10:02 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S1-CS2113-T18-3/tp.git (master) does not contain a standalone config file. +Oct 11, 2023 12:10:02 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S1-CS2113-T18-3/tp.git (master)... +Oct 11, 2023 12:10:03 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S1-CS2113-T18-3/tp.git (master)... -Oct 10, 2023 2:20:40 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S1-CS2113T-W11-1/tp.git (master) does not contain a standalone config file. -Oct 10, 2023 2:20:40 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S1-CS2113T-W11-1/tp.git (master)... -Oct 10, 2023 2:20:40 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 11, 2023 12:10:03 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S1-CS2113-T18-3/tp.git (master)... -Oct 10, 2023 2:20:40 PM reposense.report.ReportGenerator analyzeRepo +Oct 11, 2023 12:10:03 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S1-CS2113-T18-3/tp.git (master) completed! -Oct 10, 2023 2:20:40 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 11, 2023 12:10:03 AM reposense.report.ReportGenerator analyzeRepos +INFO: [11/17] Analyzing https://github.com/AY2324S1-CS2113T-W11-1/tp.git (master)... +Oct 11, 2023 12:10:03 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S1-CS2113T-W11-1/tp.git (master) does not contain a standalone config file. +Oct 11, 2023 12:10:03 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S1-CS2113T-W11-1/tp.git (master)... +Oct 11, 2023 12:10:03 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S1-CS2113-T17-3/tp.git (master)... +Oct 11, 2023 12:10:03 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S1-CS2113T-W11-1/tp.git (master)... -Oct 10, 2023 2:20:40 PM reposense.report.ReportGenerator analyzeRepos -INFO: [12/17] Analyzing https://github.com/AY2324S1-CS2113-T18-4/tp.git (master)... -Oct 10, 2023 2:20:40 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 11, 2023 12:10:03 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S1-CS2113T-W11-1/tp.git (master)... -Oct 10, 2023 2:20:40 PM reposense.report.ReportGenerator analyzeRepo +Oct 11, 2023 12:10:03 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S1-CS2113T-W11-1/tp.git (master) completed! -Oct 10, 2023 2:20:40 PM reposense.report.ReportGenerator analyzeRepos -INFO: [13/17] Analyzing https://github.com/AY2324S1-CS2113-F11-1/tp.git (master)... -Oct 10, 2023 2:20:40 PM reposense.report.ReportGenerator updateRepoConfig +Oct 11, 2023 12:10:03 AM reposense.report.ReportGenerator analyzeRepos +INFO: [12/17] Analyzing https://github.com/AY2324S1-CS2113-T18-4/tp.git (master)... +Oct 11, 2023 12:10:03 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S1-CS2113-T18-4/tp.git (master) does not contain a standalone config file. -Oct 10, 2023 2:20:40 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 11, 2023 12:10:03 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S1-CS2113-T18-4/tp.git (master)... -Oct 10, 2023 2:20:40 PM reposense.report.ReportGenerator updateRepoConfig +Oct 11, 2023 12:10:03 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S1-CS2113-T17-3/tp.git (master)... +Oct 11, 2023 12:10:03 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S1-CS2113-T17-3/tp.git (master) completed! +Oct 11, 2023 12:10:03 AM reposense.report.ReportGenerator analyzeRepos +INFO: [13/17] Analyzing https://github.com/AY2324S1-CS2113-F11-1/tp.git (master)... +Oct 11, 2023 12:10:03 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S1-CS2113-F11-1/tp.git (master) does not contain a standalone config file. -Oct 10, 2023 2:20:40 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 11, 2023 12:10:03 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S1-CS2113-F11-1/tp.git (master)... -Oct 10, 2023 2:20:41 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 11, 2023 12:10:03 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S1-CS2113-T18-4/tp.git (master)... -Oct 10, 2023 2:20:41 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S1-CS2113-F11-1/tp.git (master)... -Oct 10, 2023 2:20:41 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 11, 2023 12:10:03 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S1-CS2113-T18-4/tp.git (master)... -Oct 10, 2023 2:20:41 PM reposense.report.ReportGenerator analyzeRepo +Oct 11, 2023 12:10:03 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S1-CS2113-T18-4/tp.git (master) completed! -Oct 10, 2023 2:20:41 PM reposense.report.ReportGenerator analyzeRepos +Oct 11, 2023 12:10:03 AM reposense.report.ReportGenerator analyzeRepos INFO: [14/17] Analyzing https://github.com/AY2324S1-CS2113-F11-2/tp.git (master)... -Oct 10, 2023 2:20:41 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 11, 2023 12:10:03 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S1-CS2113-F11-2/tp.git (master) does not contain a standalone config file. +Oct 11, 2023 12:10:03 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S1-CS2113-F11-2/tp.git (master)... +Oct 11, 2023 12:10:03 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S1-CS2113-F11-1/tp.git (master)... +Oct 11, 2023 12:10:03 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S1-CS2113-F11-2/tp.git (master)... +Oct 11, 2023 12:10:03 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S1-CS2113-F11-1/tp.git (master)... -Oct 10, 2023 2:20:41 PM reposense.report.ReportGenerator analyzeRepo +Oct 11, 2023 12:10:03 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S1-CS2113-F11-1/tp.git (master) completed! -Oct 10, 2023 2:20:41 PM reposense.report.ReportGenerator analyzeRepos +Oct 11, 2023 12:10:03 AM reposense.report.ReportGenerator analyzeRepos INFO: [15/17] Analyzing https://github.com/AY2324S1-CS2113-T17-2/tp.git (master)... -Oct 10, 2023 2:20:41 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S1-CS2113-F11-2/tp.git (master) does not contain a standalone config file. -Oct 10, 2023 2:20:41 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S1-CS2113-F11-2/tp.git (master)... -Oct 10, 2023 2:20:41 PM reposense.report.ReportGenerator updateRepoConfig +Oct 11, 2023 12:10:03 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S1-CS2113-T17-2/tp.git (master) does not contain a standalone config file. -Oct 10, 2023 2:20:41 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 11, 2023 12:10:03 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S1-CS2113-T17-2/tp.git (master)... -Oct 10, 2023 2:20:41 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S1-CS2113-F11-2/tp.git (master)... -Oct 10, 2023 2:20:41 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S1-CS2113-T17-2/tp.git (master)... -Oct 10, 2023 2:20:41 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 11, 2023 12:10:03 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S1-CS2113-F11-2/tp.git (master)... -Oct 10, 2023 2:20:41 PM reposense.report.ReportGenerator analyzeRepo +Oct 11, 2023 12:10:03 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S1-CS2113-F11-2/tp.git (master) completed! -Oct 10, 2023 2:20:41 PM reposense.report.ReportGenerator analyzeRepos +Oct 11, 2023 12:10:03 AM reposense.report.ReportGenerator analyzeRepos INFO: [16/17] Analyzing https://github.com/AY2324S1-CS2113T-W11-2/tp.git (master)... -Oct 10, 2023 2:20:41 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S1-CS2113-T17-2/tp.git (master)... -Oct 10, 2023 2:20:41 PM reposense.report.ReportGenerator updateRepoConfig +Oct 11, 2023 12:10:03 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S1-CS2113T-W11-2/tp.git (master) does not contain a standalone config file. -Oct 10, 2023 2:20:41 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 11, 2023 12:10:03 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S1-CS2113T-W11-2/tp.git (master)... -Oct 10, 2023 2:20:41 PM reposense.report.ReportGenerator analyzeRepo +Oct 11, 2023 12:10:03 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S1-CS2113-T17-2/tp.git (master)... +Oct 11, 2023 12:10:03 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S1-CS2113-T17-2/tp.git (master)... +Oct 11, 2023 12:10:03 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S1-CS2113-T17-2/tp.git (master) completed! -Oct 10, 2023 2:20:41 PM reposense.report.ReportGenerator analyzeRepos +Oct 11, 2023 12:10:03 AM reposense.report.ReportGenerator analyzeRepos INFO: [17/17] Analyzing https://github.com/AY2324S1-CS2113-T17-1/tp.git (master)... -Oct 10, 2023 2:20:41 PM reposense.report.ReportGenerator updateRepoConfig +Oct 11, 2023 12:10:03 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S1-CS2113-T17-1/tp.git (master) does not contain a standalone config file. -Oct 10, 2023 2:20:41 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 11, 2023 12:10:03 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S1-CS2113-T17-1/tp.git (master)... -Oct 10, 2023 2:20:41 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 11, 2023 12:10:03 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S1-CS2113T-W11-2/tp.git (master)... -Oct 10, 2023 2:20:41 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 11, 2023 12:10:03 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S1-CS2113T-W11-2/tp.git (master)... -Oct 10, 2023 2:20:41 PM reposense.report.ReportGenerator analyzeRepo +Oct 11, 2023 12:10:03 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S1-CS2113T-W11-2/tp.git (master) completed! -Oct 10, 2023 2:20:41 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 11, 2023 12:10:03 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S1-CS2113-T17-1/tp.git (master)... -Oct 10, 2023 2:20:41 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 11, 2023 12:10:03 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S1-CS2113-T17-1/tp.git (master)... -Oct 10, 2023 2:20:41 PM reposense.report.ReportGenerator analyzeRepo +Oct 11, 2023 12:10:03 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S1-CS2113-T17-1/tp.git (master) completed! -Oct 10, 2023 2:20:41 PM reposense.report.ReportGenerator generateReposReport +Oct 11, 2023 12:10:03 AM reposense.report.ReportGenerator generateReposReport INFO: The report is generated at /home/runner/work/tp-dashboard/tp-dashboard/reposense-report -Oct 10, 2023 2:20:41 PM reposense.RepoSense main -INFO: Elapsed processing time: 6.00 second(s) +Oct 11, 2023 12:10:03 AM reposense.RepoSense main +INFO: Elapsed processing time: 5.21 second(s) diff --git a/summary.json b/summary.json index bf27615..8fe2545 100644 --- a/summary.json +++ b/summary.json @@ -1 +1 @@ -{"repoSenseVersion":"7bc056ab65","reportGeneratedTime":"Tue Oct 10 22:20:36 2023 UTC+08:00","reportGenerationTime":" 5.96 second(s)","zoneId":"UTC+08:00","reportTitle":"CS2113 tP Code Dashboard","repos":[{"location":{"location":"https://github.com/AY2324S1-CS2113T-W11-1/tp.git","repoName":"tp","organization":"AY2324S1-CS2113T-W11-1","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2113T-W11-1/tp[master]","outputFolderName":"AY2324S1-CS2113T-W11-1_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2113T-W11-2/tp.git","repoName":"tp","organization":"AY2324S1-CS2113T-W11-2","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2113T-W11-2/tp[master]","outputFolderName":"AY2324S1-CS2113T-W11-2_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2113-W12-1/tp.git","repoName":"tp","organization":"AY2324S1-CS2113-W12-1","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2113-W12-1/tp[master]","outputFolderName":"AY2324S1-CS2113-W12-1_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2113-W12-2/tp.git","repoName":"tp","organization":"AY2324S1-CS2113-W12-2","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2113-W12-2/tp[master]","outputFolderName":"AY2324S1-CS2113-W12-2_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2113-W12-3/tp.git","repoName":"tp","organization":"AY2324S1-CS2113-W12-3","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2113-W12-3/tp[master]","outputFolderName":"AY2324S1-CS2113-W12-3_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2113-W12-4/tp.git","repoName":"tp","organization":"AY2324S1-CS2113-W12-4","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2113-W12-4/tp[master]","outputFolderName":"AY2324S1-CS2113-W12-4_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2113-T17-1/tp.git","repoName":"tp","organization":"AY2324S1-CS2113-T17-1","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2113-T17-1/tp[master]","outputFolderName":"AY2324S1-CS2113-T17-1_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2113-T17-2/tp.git","repoName":"tp","organization":"AY2324S1-CS2113-T17-2","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2113-T17-2/tp[master]","outputFolderName":"AY2324S1-CS2113-T17-2_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2113-T17-3/tp.git","repoName":"tp","organization":"AY2324S1-CS2113-T17-3","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2113-T17-3/tp[master]","outputFolderName":"AY2324S1-CS2113-T17-3_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2113-T17-4/tp.git","repoName":"tp","organization":"AY2324S1-CS2113-T17-4","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2113-T17-4/tp[master]","outputFolderName":"AY2324S1-CS2113-T17-4_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2113-T18-1/tp.git","repoName":"tp","organization":"AY2324S1-CS2113-T18-1","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2113-T18-1/tp[master]","outputFolderName":"AY2324S1-CS2113-T18-1_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2113-T18-2/tp.git","repoName":"tp","organization":"AY2324S1-CS2113-T18-2","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2113-T18-2/tp[master]","outputFolderName":"AY2324S1-CS2113-T18-2_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2113-T18-3/tp.git","repoName":"tp","organization":"AY2324S1-CS2113-T18-3","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2113-T18-3/tp[master]","outputFolderName":"AY2324S1-CS2113-T18-3_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2113-T18-4/tp.git","repoName":"tp","organization":"AY2324S1-CS2113-T18-4","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2113-T18-4/tp[master]","outputFolderName":"AY2324S1-CS2113-T18-4_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2113-F11-1/tp.git","repoName":"tp","organization":"AY2324S1-CS2113-F11-1","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2113-F11-1/tp[master]","outputFolderName":"AY2324S1-CS2113-F11-1_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2113-F11-2/tp.git","repoName":"tp","organization":"AY2324S1-CS2113-F11-2","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2113-F11-2/tp[master]","outputFolderName":"AY2324S1-CS2113-F11-2_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2113-F11-3/tp.git","repoName":"tp","organization":"AY2324S1-CS2113-F11-3","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2113-F11-3/tp[master]","outputFolderName":"AY2324S1-CS2113-F11-3_tp_master"}],"errorSet":[],"sinceDate":"2023-09-22","untilDate":"2023-10-10","isSinceDateProvided":true,"isUntilDateProvided":false,"supportedDomainUrlMap":{"NOT_RECOGNIZED":{"BRANCH":"","REPO_URL":"UNSUPPORTED","BASE_URL":"UNSUPPORTED","HISTORY_PATH":"","COMMIT_PATH":"","BLAME_PATH":""},"github":{"BRANCH":"tree/$BRANCH","REPO_URL":"https://github.com/$ORGANIZATION/$REPO_NAME/","BASE_URL":"https://github.com/","HISTORY_PATH":"commits/$BRANCH/$FILE_PATH","COMMIT_PATH":"commit/$COMMIT_HASH","BLAME_PATH":"blame/$BRANCH/$FILE_PATH"}}} +{"repoSenseVersion":"7bc056ab65","reportGeneratedTime":"Wed Oct 11 08:09:59 2023 UTC+08:00","reportGenerationTime":" 5.18 second(s)","zoneId":"UTC+08:00","reportTitle":"CS2113 tP Code Dashboard","repos":[{"location":{"location":"https://github.com/AY2324S1-CS2113T-W11-1/tp.git","repoName":"tp","organization":"AY2324S1-CS2113T-W11-1","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2113T-W11-1/tp[master]","outputFolderName":"AY2324S1-CS2113T-W11-1_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2113T-W11-2/tp.git","repoName":"tp","organization":"AY2324S1-CS2113T-W11-2","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2113T-W11-2/tp[master]","outputFolderName":"AY2324S1-CS2113T-W11-2_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2113-W12-1/tp.git","repoName":"tp","organization":"AY2324S1-CS2113-W12-1","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2113-W12-1/tp[master]","outputFolderName":"AY2324S1-CS2113-W12-1_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2113-W12-2/tp.git","repoName":"tp","organization":"AY2324S1-CS2113-W12-2","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2113-W12-2/tp[master]","outputFolderName":"AY2324S1-CS2113-W12-2_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2113-W12-3/tp.git","repoName":"tp","organization":"AY2324S1-CS2113-W12-3","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2113-W12-3/tp[master]","outputFolderName":"AY2324S1-CS2113-W12-3_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2113-W12-4/tp.git","repoName":"tp","organization":"AY2324S1-CS2113-W12-4","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2113-W12-4/tp[master]","outputFolderName":"AY2324S1-CS2113-W12-4_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2113-T17-1/tp.git","repoName":"tp","organization":"AY2324S1-CS2113-T17-1","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2113-T17-1/tp[master]","outputFolderName":"AY2324S1-CS2113-T17-1_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2113-T17-2/tp.git","repoName":"tp","organization":"AY2324S1-CS2113-T17-2","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2113-T17-2/tp[master]","outputFolderName":"AY2324S1-CS2113-T17-2_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2113-T17-3/tp.git","repoName":"tp","organization":"AY2324S1-CS2113-T17-3","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2113-T17-3/tp[master]","outputFolderName":"AY2324S1-CS2113-T17-3_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2113-T17-4/tp.git","repoName":"tp","organization":"AY2324S1-CS2113-T17-4","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2113-T17-4/tp[master]","outputFolderName":"AY2324S1-CS2113-T17-4_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2113-T18-1/tp.git","repoName":"tp","organization":"AY2324S1-CS2113-T18-1","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2113-T18-1/tp[master]","outputFolderName":"AY2324S1-CS2113-T18-1_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2113-T18-2/tp.git","repoName":"tp","organization":"AY2324S1-CS2113-T18-2","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2113-T18-2/tp[master]","outputFolderName":"AY2324S1-CS2113-T18-2_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2113-T18-3/tp.git","repoName":"tp","organization":"AY2324S1-CS2113-T18-3","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2113-T18-3/tp[master]","outputFolderName":"AY2324S1-CS2113-T18-3_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2113-T18-4/tp.git","repoName":"tp","organization":"AY2324S1-CS2113-T18-4","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2113-T18-4/tp[master]","outputFolderName":"AY2324S1-CS2113-T18-4_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2113-F11-1/tp.git","repoName":"tp","organization":"AY2324S1-CS2113-F11-1","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2113-F11-1/tp[master]","outputFolderName":"AY2324S1-CS2113-F11-1_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2113-F11-2/tp.git","repoName":"tp","organization":"AY2324S1-CS2113-F11-2","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2113-F11-2/tp[master]","outputFolderName":"AY2324S1-CS2113-F11-2_tp_master"},{"location":{"location":"https://github.com/AY2324S1-CS2113-F11-3/tp.git","repoName":"tp","organization":"AY2324S1-CS2113-F11-3","domainName":"github"},"branch":"master","displayName":"AY2324S1-CS2113-F11-3/tp[master]","outputFolderName":"AY2324S1-CS2113-F11-3_tp_master"}],"errorSet":[],"sinceDate":"2023-09-22","untilDate":"2023-10-11","isSinceDateProvided":true,"isUntilDateProvided":false,"supportedDomainUrlMap":{"NOT_RECOGNIZED":{"BRANCH":"","REPO_URL":"UNSUPPORTED","BASE_URL":"UNSUPPORTED","HISTORY_PATH":"","COMMIT_PATH":"","BLAME_PATH":""},"github":{"BRANCH":"tree/$BRANCH","REPO_URL":"https://github.com/$ORGANIZATION/$REPO_NAME/","BASE_URL":"https://github.com/","HISTORY_PATH":"commits/$BRANCH/$FILE_PATH","COMMIT_PATH":"commit/$COMMIT_HASH","BLAME_PATH":"blame/$BRANCH/$FILE_PATH"}}}